我们平时有很多机会去搭建应用服务,比如说自己通过爬虫抓取一些数据,然后做成 API 提供出去,或者写一个 Web 应用,面向公网上的用户提供服务。这些的背后都需要一套基础服务作为底层应用,虽然不需要很庞大复杂,但是该有的,一个都不能少。今天我们先来了解下作为基础也是必备的基础应用 -- Linux 操作系统基础。
Linux 简介
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
可以说,Linux 是当今服务器界不可争议的扛把子,世界上大多数的服务都运行在 Linux 系统上,了解 Linux 可以说是我们的必备技能。
Linux 发行版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包,一起发布出来,这样不同的发行版本就在相同的内核基础上,拥有了各自不同的特性与应用,目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
对于我们学习来说,使用 CentOS 或者 Ubuntu 都是比较好的
Linux 与 Windows
普遍的 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。
对比 | Windows | Linux |
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
可以说,两种操作系统各有优缺点,就像当前市场分布一样,更加亲民应用的 Windows 占据了个人电脑领域,而开源免费自由稳定等特性让 Linux 在服务器领域大放异彩。
Linux 安装
对于安装这一部分,就不做重点介绍了,如果你是在裸机上手动安装的话,需要提前准备好安装需要的 ISO 镜像文件,可以去各个发行版本的官网获取,当然最最方便的还是使用云服务器,可以一键安装,非常方便。
各个云服务器厂商都会有一些优惠策略,一般最为基础的云服务器大概在每年一百元左右。阿里的购买地址如下:
https://www.aliyun.com/minisite/goods?userCode=l0uorftk&share_source=copy_link
下面简单介绍下购买了云服务器之后的操作,这里以阿里云为例
登陆好阿里云之后,可以看到一个控制台的按钮
然后点击左侧的下拉菜单,点击云服务器 ECS 按钮
然后在左侧菜单栏点击实例
此时如果你购买了云服务器,就可以看到实例列表中展示已经购买的实例
再点击右侧的更多按钮
选择更换操作系统,就可以进行操作系统的选择和安装了,此时可以选择众多的操作系统类型,包括各个发行版本的 Linux 和 Windows Server
之后我们选择自定义密码,并填写,就可以开始安装操作系统了。
云服务器实例安装好之后,会自动启动。启动成功后,我们查看例表中的远程连接按钮,如果选择 VNC,那么会要求我们输入密码,但是这个密码是需要先进行设置的,我可以在控制台进行设置。下面我们重点看下 Workbench 的连接方式
通过 Workbench 的方式,也会新打开一个页面,一般会选择 SSH 的方式登陆哦
此时我们只需要输入用户名为 root,密码就是刚刚安装操作系统时设置的密码即可登陆。
当然,我们一般都会选择使用第三方的 SSH 登陆工具进行登陆操作,比如 SecureCRT 工具等。
现在我们完成了 Linux 操作系统的安装与登陆,下面就可以根据自己的需要来配置安装了。
Linux 系统目录结构
在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。
文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。
在 Linux 文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 .. 来表示。
如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
我们简单介绍几个比较重要的系统目录
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:
系统用户使用的应用程序。
/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
总之,Liunx 的文件结构是非常重要的,很多目录并不需要死记硬背,当我们操作多了,这些目录结构就自然而然的呈现在脑海当中了。
Linux 文件属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]。
每个文件的属性由左边第一部分的10个字符来确定,从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
文件属主和属组
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux 系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
修改文件属组的命令
chgrp [-R] 属组名 文件名
修改文件属组和属主的命令
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
以上两个命令,比较常用的是 chown,因为它是可以替代 chgrp 的。
修改文件属性
Linux 文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others 三种身份各有自己的 read/write/execute 权限。
文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
- r:4
- w:2
- x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 = 0
chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
命令 | 身份 | 操作方向 | 操作文件 |
chmod | u,g,o,a | +(加入),-(除去),=(设定) | 文件或目录 |
其中 u 代表 user,g 代表 group,o 代表 other,a 代表 all
比如可以这么使用:chmod u=rw,g=rx,o=r test.py 或 chmod 654 test.py
装 X 神器 VI/VIM
要说到 VIM 相信很多人都听说过,对于刚刚接触的小伙伴来说,可能看起来也是比较复杂,但是什么都绕不过一个熟能生巧,只要我们手里有了 Linux,并且每天都实践一番,害怕弄不懂这款神器嘛,这里也不过多介绍了,奉上一张经典图片,自行体会吧