1.3.1 VMware Workstation简介和安装
目前最为常见的三大操作系统是 Windows 系统、Linux 系统和 Mac OS 操作系统,其中被我们熟知的就是 Windows 系列,包括近年来苹果公司的崛起,Mac OS 也逐渐走进了大家的视野。但在服务器领域,Linux 系统就是一家独大了。
然而你可能不知道的是,我们经常使用的这些系统,都和一个叫 Unix 的系统有关,接下来让我们看一下各个系统之间的渊源吧。
首先,我们要知道,不管是 Windows、Linux 还是 Mac OS,甚至包括操作系统的鼻祖 Unix 操作系统,最早都是用 C 语言编写的。Unix 诞生于上个世纪 60 年代末,实际上 Unix 操作系统和 C 语言都是由贝尔实验室的汤普森(Ken Thompson)和丹尼斯·里奇(Dennis M. Ritchie)在 1971 年先后改造发明的。以此同时,在 70 年代初,计算机界还有一项伟大的发明:网络协议 TCP/IP 协议,美国国防部把 TCP/IP 协议与 Unix 系统、C 语言都捆绑在一起,并发行给美国各个大学非商业的许可证,这为 Unix 系统、C 语言、TCP/IP 协议的发展拉开了序幕,它们分别在操作系统、编程语言、网络协议这三个领域产生影响,并延续到了至今。汤普森和里奇因在计算机领域做出的杰出贡献,于 1983 年获得了计算机科学的最高奖——图灵奖,这也是实至名归。而后续的操作系统都借鉴了Unix的一些思想进行延伸和扩展,其中:
服务器厂商例如 HP、IBM、SUN 公司,基于 Unix 系统,根据硬件特性而定制开发了自己商业版 Unix 系统:IBM AIX、HP-UX、Sun Solaris;由于上述版本的 Unix 系统,主要是支持其硬件平台而开发,因此美国加利福尼亚大学伯克利分校为了支持不同架构的硬件平台而开发了 FreeBSD 操作系统,并随后由全世界各地的志愿者开发和维护。
由于 FreeBSD 在 BSD 许可协议下发布,该许可协议允许任何人在保留版权和许可协议信息的前提下随意使用和发行,并不限制将 FreeBSD 的代码在其他协议下发行,因此商业公司可以自由地将 FreeBSD 代码融入它们的产品中。其中苹果公司的 Mac OS 就是基于 FreeBSD 的操作系统。
由微软开发的 Windows 操作系统诞生于上世纪 80 年代中期,Windows 系统参考了 Unix 中“树”的思想,注重用户的易操作特性,形成了一套商业软件,并且不开源;
Linux 操作系统则诞生于 20 世纪 90 年代初,由还在赫尔辛基大学读书的李纳斯•托瓦兹(Linus Torvalds)出于个人爱好而编写的,并开源后,邀请其他人一起完善开发而成,因此现在大家所使用的Linux,我更倾向于说是由李纳斯•托瓦兹和后来陆续加入的众多Linux好者共同开发完成的。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。李纳斯•托瓦兹无疑是这个世界上最伟大的程序员之一,后面他还搞出了现在大家耳熟能详的程序员交友社区GitHub (这是一个开源代码库及版本控制系统)。并选择了一只企鹅为logo。
关于 Linux Logo 的由来是一个很有意思的话题。为什么选择企鹅,而不是选择狮子、老虎或者小白兔?有人说因为李纳斯•托瓦兹是芬兰人,所以选择企鹅,有人说因为其他动物图案都被用光了,李纳斯•托瓦兹只好选择企鹅。我更愿意相信以下说法,企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于世界上的任何国家,可国家都无权将南极洲纳入其版图。Linux 选择企鹅图案作为 Logo,其含义是:开放源代码的 Linux 为全人类共同所有,公司无权将其私有。
所以总的来说,Unix 是操作系统中的"老大哥",后来的 Windows、Linux 和 Mac OS 都参考了 Unix。
从上面的描述,我们可以看出 Unix 和 Linux 并不不是大哥和小弟的关系,但说 Unix 是 Linux 的父亲这一点更为恰当一些。因此它们之间有很多的共通之处,只要你熟练掌握了 Linux,那么对于上手使用 Unix 则会非常容易,包括 Mac OS。
1、Unix 系统大多是与硬件配套的,也就是说,大多数 Unix 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;虽然 FreeBSD 也可以,但硬件支持上还是不如 Linux 强大。
2、Unix 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。开源软件是不同于商业软件的一种模式,从字面上理解,就是开放源代码,大家不用担心里面会有不为人知的猫腻或者安全问题,因此这样会给软件带来革新和安全。
但这里大家要知道一点,开源其实并不等同于免费,而是一种新的软件盈利模式,目前很多软件都是开源软件,对计算机行业与互联网影响深远。在以后大家的学习中,还会遇到相关的一些概念,这里就不再过多赘述了。
近年来,Linux 得到了长足的发展,对于 Unix 来说已经是青出于蓝而胜于蓝了,成为了一个拥有庞大用户群的真正优秀的、值得信赖的操作系统。Linux 成为 Unix 最优秀的传承者。
1.1.3 Linux 和 Windows 的区别
Windows 与 Linux 的主要区别主要体现在:
1、免费与收费。Linux 是免费的,而 Windows 是付费的,只有购买 Windows 系统的电脑,就已经向微软付费了。可能大家也会听说一种 Linux 系统:RedHat 系统是付费,对于这个问题,我们在后面讲 Linux 系统版本的时候会讲到。但总的来说 Linux 系统基本是免费的。
2、软件与支持。Windows 下可以运行绝大部分软件、玩 99.999%的游戏、硬件厂商近乎 100%的支持。Linux 下可直接运行的软件数量和 Windowsn 相比起来就是 1 和 99 的区别,但目前选择 Linux 的人基本不会考虑玩游戏(虽然有能在 Linux 下运行的游戏,但实在太少),而是考虑其他因素,例如作为稳定和可靠的服务器,这样不用安装太多的软件。
3、安全性。其实这一点并不是说 Linux 比 Windows 先进和安全,而是 Linux 由于应用场景的单一化,而不像 Windows 要面对众多的个人,同时还有易用性方面的考虑。所以相对来说,功能和应用单一的系统会比功能多、易操作的系统漏洞少一些。但大家要明白,Linux 系统和应用的漏洞也是比较多的。
5、易用性。Windows 放弃了字符模式,主攻图形界面,让桌面系统更易用。Linux 字符模式运行的更好,图形界面还只是附带品,可有可无。这也是因为应用场景而决定的,有一些 Windows 服务器版的系统也只有字符模式。
很多时候,我们发现我们从来没有使用一个叫做 Linux 的系统,而是例如 CentOS、Ubuntu 等,这是为什么呢?怎么会有这么多不同版本的系统,以及我们该如何选择?接下来,让我们一起看看。
首先,我们需要先了解的一个概念:内核。内核是系统的心脏,是运行程序和管理例如 CPU、内存、磁盘、打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序之间的一个抽象层。例如,一个应用程序需要在磁盘上进行文件的读写,它是不需要了解设备上主板、硬盘控制器等细节的,只要交给系统内核去处理就行。Linux 内核是由 Linus 领导的开发小组控制着,版本也是唯一的。
内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。例如,程序本身不需要了解用户的主板芯片集或磁盘控制器的细节就能在高层次上读写磁盘。
Linux 内核的开发和规范一直是由李纳斯(Linus)领导的开发小组控制着,版本也是惟一的。开发小组每隔一段时间公布新的版本或其修订版,从 1991 年 10 月 Linus 向世界公开发布的内核 0.0.2 版本(0.0.1 版本功能相当简陋所以没有公开发布)到目前最新的内核 2.6.22 版本,Linux 的功能越来越强大。
Linux 内核的版本号命名是有一定规则的,版本号的格式通常为“主版本号-次版本号-修正号”。主版本号和次版本号标志着重要的功能变动,修正号表示较小的功能变更。以 2.6.22 版本为例,2 代表主版本号,6 代表次版本号,22 代表修正号。其中次版本还有特定的意义:如果是偶数数字,就表示该内核是一个可以放心使用的稳定版;如果是奇数数字,则表示该内核加入了某些测试的新功能,是一个内部可能存在着 BUG 测试版。如 2.5.74 表示是一个测试版的内核,2.6.22 表示是一个稳定版的内核。可以到 Linux 内核官方网站
http://www.kernel.org/
下载最新的内核代码。
在介绍 Linux 发行版本之前,我们还要知道一个比较重要的计划:GNU 计划。Unix 系统被发明之后,开始大家用的还是挺好的,但后来出现了大量的收费和商业闭源。这是一个叫理查德·马修·斯托曼的大叔觉得很不爽,于是在 1985 发起 GNU 计划(GNU's Not Unix!),同时成立了自由软件基金会(Free Software Foundation,FSF),并起草了 GPL(GNU 通用公共许可证)。FSF 是一个致力于推广自由软件、促进计算机用户自由的美国民间非盈利性组织,主要工作是执行 GNU 计划,开发更多的自由软件,完善自由软件理念。GPL 简单来说就是如果你自己厉害的开源软件,你不用担心有一天别人靠你的项目赚了大把的钱,但不给你分享代码。
接下来大家纷纷在 GNU 计划下做了很多的工作和项目,基本实现了当初的计划。包括核心的 gcc 和 glibc。但是 GNU 系统缺少操作系统内核,原定的内核叫 HURD,一直完不成。此时 Linus 已经开发了 Linux 系统,并且发布 Linux 的时候选择了 GPL,此后还将其他的 GPL 项目合在一起打包发布,因此我们应该将 Linux 全称为 GNU / Linux。
仅有内核而没有应用软件的操作系统是无法使用的,因此许多公司或社团将内核、源代码及相关的应用程序组织构成一个完整的操作系统,让一般的用户可以简便地安装和使用 Linux,这就是所谓的发行版本(distribution)。因此我们开始提到的 CentOS、Ubuntu 其实是发行版本。目前估计各种发行版本有数十种,它们的发行版本号各不相同,使用的内核版本号也可能不一样。下面就介绍目前比较著名的几个发行版本。
Red Hat 是最成功的 Linux 发行版本之一,它的特点是安装和使用简单。Red Hat 可以让用户很快享受到 Linux 的强大功能而免去繁琐的安装与设置工作。
Debian 可以算是迄今为止最遵循 GNU 规范的 Linux 系统,它的特点是使用了 Debian 系列特有的软件包管理工具 dpkg,使得安装、升级、删除和管理软件变得非常简单。
Ubuntu 是基于 Debian 发行版和 GNOME 桌面环境, 也有 KDE 版本, 属于较流行的发行版, 它强化了图形方面的功能, 有面向一般用户的桌面版本, 也有服务器版本。因为其桌面版本比较漂亮, 有较多多媒体方面的软件和 ubuntu 软件中心的支持, 对一般用户也还算好用, 所以较流行。
你会发现非常多的商业公司部署在生产环境上的服务器都是使用的 CentOS 系统,CentOS 是从 RHEL(Red Hat Enterprise Linux,Red Hat 公司发布的面向企业用户的 Linux 操作系统源代码)编译的社区重新发布版。CentOS 简约,命令行下的人性化做得比较好,同时稳定、有着强大的文档与开发社区的支持,与 Redhat 有着相同的渊源。
1.3.1 VMware Workstation 简介和安装
如果我们想要为了学习和使用 Linux 系统的话,购买一台新的电脑显然非常的不划算,虽然可以购买一些云平台上面现成的 Linux 系统,但是一方面我们需要学习如何一步步的安装和配置,另外,云平台上的系统如果我们在一些没有网络的地方就没有办法使用了。那我们该怎么办呢?
我们可以尝试使用虚拟机来进行学习和使用 Linux 系统。现在使用较多的有 VirtualBox 和 VMware Workstation 这两个虚拟机,课程中选择普及度较高的 VMware Workstation。VMware Workstation 简单来说就是由 VMware 公司开发的一款“虚拟 PC”的软件,它可以使你在一台机器上同时运行二个或更多 Windows、Linux 系统。下面我们看一下这个软件的安装(安装包可在工具集中下载):
本次课程我们使用的是 CentOS 系统进行学习,虽然 CentOS 系统已经停止了更新,但对于我们学习 Linux 系统还是非常好的,同时目前很多企业的服务器上由于 CentOS 系统强大的稳定性,运行的还是 CentOS 系统。CentOS 系统是 RedHat 的社区版本,所以可以在网络上免费进行下载,这里我们已经为大家下载好了最新的 CentOS 8.4,大家直接从工具集中直接下载安装镜像。
https://mirrors.163.com/centos/8.4.2105/isos/x86_64/ ,
其中 ISO 就是光盘的镜像文件,刻录软件可以直接把 ISO 文件刻录成可安装的系统光盘,x86_64 就是说明系统的版本是 64 位的系统,这里下载并使用 CentOS-8.4.2105-x86_64-dvd1.iso 镜像进行安装。
接下来我们使用 VMWare Workstation(建议大家购买正版软件,淘宝有售) 进行系统的安装。
1、首先打开 VMware Workstion 界面,点击文件->新建虚拟机:
2、有两种模式,典型与自定义,我们这里使用自定义来安装,这样能更加详细的定义安装的系统:
在安装好系统后,我们就可以开始使用 CentOS 系统了。虽然我们是在 VMWare 虚拟机软件安装和使用系统的,但这和我们正常在服务器中使用没有什么太多区别。接下来我们具体的演示一下如何启动和登陆 CentOS 系统。
1、在 VMWare Workstation 中启动 CentOS,如下:
这时我们linux系统还没有开机,处于关闭状态,在这个状态下我们可以根据自己的需求对linux系统的配置进行一些编辑,在开机状态下最好不要进行linux系统的配置编辑。
接下来我们点击开启此虚拟进行linux系统的开机,我们也可以在上方选项栏中开启linux系统
2、启动虚拟机后,我们会看到这样一个界面,直接按“回车符”进入系统
3、等待片刻后,我们就来到了登录用户界面,这里我们默认登录在安装时创建的普通用户,也就是你自定义名字和密码的那个用户,点击用户名,输入密码即可登录
4、登录以后就来到了 CentOS 系统的桌面,现在桌面上空空如也,只有左上角的菜单键和右上角音量、网络、开关机等按键
5、打开左上角的菜单键以后我们可以看见,CentOS 默认安装了很多软件,有浏览器、文档编辑器、控制台等软件,足够应付一些简单的使用需求,如果后续还需要什么软件可以自行安装
6、我们在使用 CentOS 的时候大多数时候不会使用图形界面,而是使用命令行终端来操作 CentOS 系统
我们可以看到这和 Windows 的 cmd 命令行终端工具差别不是很大,这样我们就可以使用命令啦。
我们刚刚在登录的使用,使用的是我们自己创建的普通用户,在很多时候比如安装软件,修改文件等情况下,普通用户的权限可能不能完成这些操作,这时候就需要我们的root用户登场了,root 用户在 Llinux 系统中是扮演管理员的角色,权限最大,关于权限相关的知识在后续课程中我们也会讲到,现在我们来看看如何在普通用户和 root 用户身份之间进行切换。
打开命令行终端工具,然后输入 su 命令,这个命令是用来切换到 root 用户的命令,这时候需要我们输入 root 用户的密码,root 用户的密码就是在安装 linux 系统中设置的那个密码。
输入我们的 root 密码后,即可切换到 root 用户,这里注意一下,我们在输入密码的时候,Linux 系统是不会让我们看见密码输入的过程的,也就是说,你在输入密码的时候,你看不到任何的反馈,所以一定要记住自己的密码,否则你输错了哪一位密码也不查看到的。
在后续内容中,我们还会详细介绍 su 命令,这里就不再过多介绍了。
1.4.2 切换模式
刚刚我们登录了Linux系统并完成了你第一次切换普通用户和root用的操作,不过我们在工作中使用Llinux系统的时候,多数情况都是使用文字模式对Linux进行操作。一个原因是文字模式比图形模式更加专注使用命令和系统进行交互,更加的方便和快捷,另一方面文字模式比图形模式占用的电脑资源更加少,可以将资源让给在linux系统上运行的应用,接下来我们看一下如何切换文字模式。
我们在图形界面任何位置,使用ctrl+alt+f4即可进入到文字模式
我们可以看到这个模式下只有文字,没有任何图形。然后我们可以选择使用哪个用户进行登录,这里我们使用root用户登录。
然后输入密码,Linux只要涉及在命令行状态下输入密码的情况,我们都看不到密码。
成功在文字模式下登录。然后我们也可以使用使用ctrl+alt+f1切换到图形界面
1.5 Linux 目录结构和功能
在使用 Linux 系统之前,和 Windows 一样,我们需要了解一下 Linux 文件系统的目录结构,以及这些目录的详细功能。我们输入 ls / 命令后会发现在/下有很多的目录,比如 etc、usr、var、bin 等目录,而在这些目录中,还存在这其他重要的文件或者目录,整个文件系统看上去就象树形结构,所以我们可以把文件系统的结构形象的称为树形结构。/目录作为“根”,其他的文件、目录、设备都在这个“根”的下面,这有点类似 Windows 中的“我的电脑”。接下来简单介绍几个常见的目录名称以及他们的功能:
/bin 放置的是在单人维护模式下还能够被操作的指令。
/boot 主要放置开机会使用到的档案,包括 Linux 核心档案以及开机选单与开机所需设定档等等。
/dev 任何装置与周边设备都是以档案的型态存在于这个目录当中。只要通过存取这个目录下的某个档案,就等于存取某个装置。比较重要的档案有/dev/null, /dev/zero 等等。
/etc 系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。
/home 这是系统预设的使用者家目录(home directory)。在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。
/lib 系统的函式库非常的多,而/lib 放置的则是在开机时会用到的函式库,以及在/bin 或/sbin 底下的指令会呼叫的函式库。
/media media 是媒体的英文,顾名思义,这个/media 底下放置的就是可移除的装置。包括软碟、光碟、DVD 等等装置都暂时挂载于此。
/mnt 如果你想要暂时挂载某些额外的装置,一般建议你可以放置到这个目录中。
/root 系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有 root 的家目录,所以我们会希望 root 的家目录与根目录放置在同一个分区中。
/sbin Linux 有非常多指令是用来设定系统环境的,这些指令只有 root 才能够利用来设定系统,其他使用者最多只能用来查询而已。放在/sbin 底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。
/srv srv 可以视为 service 的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。常见的服务例如 WWW, FTP 等等。
/tmp 这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以建议定期的清理一下。