第1章 Linux系统介绍与环境搭建准备
本章以操作系统的介绍作开篇,首先介绍操作系统的基础概念以及操作系统的原理;然后带领读者了解Unix/Linux的诞生和发展史,以及市面上常见的Unix/Linux系统版本,并且针对发展过程中相关的关键人物进行介绍;接着,本章为大家讲解了需要重点掌握的GNU、GPL等名词知识,以及本书的主人公即Linux的优秀特性、常见的Linux发行版本以及不同应用场景的选择建议;最后,本章将带读者了解互联网常用的两个重点Linux版本CentOS和Red Hat Linux,并完成CentOS Linux的基本环境搭建准备。
1.1 Linux简介
1.1.1 什么是操作系统?
如果被问到什么是操作系统,可能很多初学者都会一脸茫然。虽然我们都知道平时一直在用的Windows 7/8/10,其实就是操作系统,却无法准确给出操作系统的定义,或者向提问者解释清楚什么是操作系统。
操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。
操作系统的作用是管理和控制计算机系统中的硬件和软件资源,例如,它负责直接管理计算机系统的各种硬件资源,如对CPU、内存、磁盘等的管理,同时对系统资源供需的优先顺序进行管理。操作系统还可以控制设备的输入、输出以及操作网络与管理文件系统等事务。同时,它也负责对计算机系统中各类软件资源进行管理,例如,各类应用软件的安装、运行环境的设置等。图1-1给出了操作系统与计算机硬件、软件之间的关系示意图。
综上所述,我们可以对操作系统给出一个基本的定义。
操作系统是计算机系统中必不可少的基础系统软件,它的作用是负责管理和控制计算机系统中的硬件和软件资源,合理地组织计算机系统的工作流程,以便有效地利用这些资源为使用者提供一个功能强大、使用方便的操作及使用环境。它在计算机系统(硬件)与使用者之间起到了接口的作用。
上面的定义听起来是不是有些复杂?下面就来帮助大家更简单快速地理解什么是操作系统。操作系统就是处于用户与计算机系统硬件之间用于传递信息的系统程序软件。例如,操作系统会在接收到用户输入的信息之后,将其传递给计算机系统硬件核心进行处理,然后再把计算机系统硬件的处理结果返回给使用者。图1-2所示的是简单理解操作系统作用的示意图。
目前PC(Intel x86系列)计算机上比较常见的操作系统有Windows、Linux、DOS、Unix等。
1.1.2 什么是Linux?
与大家熟知的Windows操作系统软件一样,Linux也是一个操作系统软件。但是与Windows不同的是,Linux是一套开放源代码程序的、并且可以自由传播的类Unix操作系统软件(Unix系统是Linux系统的前身,具备很多优秀特性)。其在设计之初,就是基于Intel x86系列CPU架构计算机的。它是一个基于POSIX的多用户、多任务并且支持多线程和多CPU的操作系统。
Linux是由世界各地成千上万的程序员设计和开发实现的。当初开发Linux系统的目的就是建立不受任何商业化软件版权制约的、全世界都能自由使用的类Unix操作系统兼容产品。在过去的20年里,Linux系统主要被应用于服务器端、嵌入式开发和PC桌面3大领域,其中服务器端领域是重中之重。
我们熟知的大型、超大型互联网企业(百度、腾讯、Sina、阿里等)都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前1000的90%以上的网站使用的主流系统都是Linux系统。
从上面的内容可以看出,Linux操作系统之所以如此流行,是因为它具备如下这些优秀的特点。
- Linux是开放源代码的程序软件,可自由修改。
- 与Unix系统兼容,具备Unix几乎所有的优秀特性。
- 可自由传播,无任何商业化版权制约。
- 适合Intel等x86 CPU系列架构的计算机。
1.2 Linux的起源
1.2.1 Unix的历史
说到Linux的起源,就不得不提到Linux之前的Unix系统。Unix系统于1969年在AT&T的贝尔实验室诞生,20世纪70年代,它逐步盛行,这期间,又产生了一个比较重要的分支,即大约诞生于1977年的BSD(Berkeley Software Distribution)系统。从BSD系统开始,各大厂商及商业公司开始了根据公司自身的硬件架构,并以BSD系统为基础进行Unix系统的研发,从而产生了各种版本的Unix系统,例如,SUN公司的Solaris,IBM公司的AIX,HP公司的HP UNIX等。图1-3给出了Unix系统诞生、发展的时间及版本分支的介绍,供读者参考。
从图1-3中可以看到,本书的“主人公”Linux系统,诞生于1991年左右,因此,可以说Linux是从Unix发展而来的。
1.2.2 Unix的5大优秀特性
细心的读者应该会看到前文曾提到“类Unix操作系统兼容产品”或“类Unix操作系统软件”?为什么都要开发类Unix系统呢?那是因为Unix是一个非常棒的操作系统,它很像是一个非常聪明伶俐但不太听话的孩子,而开发者们在开发系统时,一方面想要继承它的“聪明伶俐”,另一方面又想改善它不听话的一面,故而会有如此考虑。
那么Unix都有哪些“聪明伶俐”的特点呢?下面一起来看看吧。
- 技术成熟,可靠性高
使用Unix系统时,即使连续运行若干年也无须重启,它依然可以工作得非常好。可以毫不夸张地说,只要计算机硬件不坏,Unix就会很难出现问题。 - 极强的可伸缩性
Unix支持的CPU处理器体系架构非常多,包括Intel/AMD及HP-PA、MIPS、PowerPC、UltraSPARC、ALPHA等RISC芯片,以及SMP、MPP等技术。
- 强大的网络功能
Internet互联最重要的协议TCP/IP就是在Unix上开发和发展起来的。此外,Unix还支持非常多的常用的网络通信协议,如NFS、DCE、IPX/SPX、SLIP、PPP等。 - 强大的数据库支持能力
Oracle、DB2、Sybase、Informix等大型数据库,都将Unix作为其主要的数据库开发和运行平台,一直到目前为止,依然如此。 - 强大的开发功能
正是Unix促使了C语言的诞生,并相互促进与发展,成为当时工程师的首选操作系统和开发环境。互联网早期具有重大意义的软件新技术的出现几乎都在Unix上,例如:TCP/IP、WWW、Java、XML等。
1.2.3 Unix操作系统的革命
20世纪70年代中后期,由于各厂商及商业公司开发的Unix及内置软件都是针对自己公司的特定硬件而进行的,因此在其他公司的硬件上基本上无法直接运行,而且当时没有人对开发基于x86架构CPU的系统感兴趣。另外,20世纪70年代末,Unix又面临了突如其来的被AT&T回收版权的重大问题,特别是要求禁止对学生群体提供Unix系统源代码,这样的问题一度引起了当时Unix业界的恐慌,也因此产生了种种商业纠纷。
由于Unix面临版权回收问题,以及代码不开源等问题,这直接或间接地导致了新的类Unix系统的诞生以及自由软件运动的建立和发展。
1984年,Richard Stallman发起了开发自由软件的运动,并成立了自由软件基金会(Free Software Foundation,FSF)和GNU项目。当时发起这个自由软件运动和创建GNU项目的目的其实很简单,就是想开发一个类似于Unix系统、并且是自由软件的完整操作系统,也就是要解决20世纪70年代末Unix版权问题以及软件源代码面临闭源的问题,这个系统称为GNU操作系统。
也是在20世纪80年代初期,同样是由于之前的Unix系统版权和源代码限制等问题,使得当时大学里教学Unix系统的束缚很大。因此,当时的一个大学的教授,名为Andrew Tanenbaum(谭邦宁),于1984年(大概)开始着手编写新的用于教学的Unix系统,目标是开发新的类Unix系统应尽可能地与原有的Unix系统兼容,并且可以运行于x86 PC平台,这个系统的名字为Minix。
不过,由于谭邦宁开发这个Minix系统的目的只是用于教学,因此,Minix系统的功能无法满足商用的需求,但是Minix的产生对于Linux的诞生又是至关重要的一个关键成因,且看下文。
1.2.4 Linux的诞生
Linux系统的诞生开始于芬兰赫尔辛基大学的一位计算机系的学生,其名字为Linus Torvalds。在大学期间,他接触到了学校的Unix系统,但是,当时的Unix系统仅为一台主机,且对应了多个终端,使用时存在操作等待时间很长等一些体验极差的问题,无法满足年轻的Linus Torvalds的使用需求。因此他就萌生了自己开发一个Unix的想法,不久之后,他就找到了前文提到的谭邦宁教授开发的用于教学的Minix操作系统,与我们现在一样,他将Minix安装到了他的I386个人计算机上。此后,Torvalds又开始陆续阅读了Minix系统的源代码,从Minix系统中学到了很多重要的系统核心程序设计理念和设计思想,从而逐步开始了Linux系统雏形的设计和开发。
Linux的标志和吉祥物为一只名字叫作Tux的企鹅—Torvalds扷nix,如图1-4所示。
1.2.5 Linux的发展历程
1. Linux的发展历程简介
1)1984年,Andrew S. Tanenbaum开发了用于教学的Unix系统,命名为Minix。
2)1989年,Andrew S. Tanenbaum将Minix系统运行于x86的个人计算机平台上。
3)1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触Minix系统。
4)1991年,Linus Torvalds开始在Minix上编写各种驱动程序等操作系统内核组件。
5)1991年底,Linus Torvalds 公开了Linux内核源码0.02版(http://www.kernel.org),注意,这里公开的Linux内核源码并不是我们现在使用的Linux系统的全部,而仅仅是Linux内核kernel部分的代码。
6)1993年,Linux 1.0版发行,Linux转向GPL版权协议。
7)1994年,Linux的第一个商业发行版Slackware问世。
8)1995年,Red Hat 软件公司成立,同年发布了Red Hat Linux 2.0。
8)1996年,美国国家标准技术局的计算机系统实验室确认Linux 版本1.2.13(由Open Linux公司打包)符合POSIX标准。
9)1997年,Red Hat Linux 5.0发布,它支持Intel、Alpha和Sparc平台以及大多数的应用软件。极其简单易用的RPM模块化的安装、配置和卸载工具,使程序的安装可在15分钟内完成。软件升级也更加方便了。
10)1999年,Linux的简体中文发行版问世。
11)2003年4月,Red Hat Linux 9.0发布。其重点放在改善桌面应用方面,包括改进安装过程、更好的字体浏览、更好的打印服务等。2003年,Red Hat的 Linux市场份额为80%以上。
12)2004年4月,Red Hat公司正式停止对Red Hat 9.0版本的支持,标志着Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行包则与来自民间的Fedora计划合并,成为Fedora Core发行版本。Red Hat公司不再开发桌面版的Linux发行包,而将全部力量集中在服务器版的开发上,也就是Red Hat Enterprise Linux版。
13)2005年10月,RHEL4发布。
14)2007年3月,主流版本RHEL5发布,CentOS系统开始在中国互联网公司流行。
15)2010年4月,RHEL6(RedHat Enterprise Linux 6.0)BETA测试版发布。
16)2014年6月RedHat Enterprise Linux 7.0发布,RHEL7.0版本相较于RHEL6.0以前的版本有了较大的变化,例如,内核版本升级到3.10以上,系统启动和基本管理变化较大,文件系统也由传统的ext改为xfs,同时在大数据、云计算、Docker方面做了很大优化。
2. Linux发展历程中的相关人物
我们在使用优秀的Linux系统时,一定要向前辈们致以深深的敬意,没有他们,就没有今天优秀的Linux系统存在(如图1-5所示)。
1.3 Linux核心概念知识
1.3.1 自由软件与FSF
1.自由软件
简单地理解,自由软件的核心就是没有商业化软件版权制约,源代码开放,可以无约束地自由传播。
自由意味着freedom,而免费意味着free,这是完全不同的两个概念。例如,Red Hat Linux自由但不免费,CentOS Linux则是自由且免费的。
自由软件关乎使用者运行、复制、发布、研究、修改和改进该软件的自由。更精确地说,自由软件赋予软件使用者四种自由,具体如下。
- 不论目的为何,有运行该软件的自由。
- 有研究该软件如何运行,以及按需改写该软件的自由。当然,取得该软件源代码为达成此目的之前提。
- 有重新发布拷贝的自由。
- 有改进该软件,以及向公众发布改进版本的自由,这样整个社群都可受惠。同样,取得该软件的源码为达成此目的之前提。
2.自由软件基金会FSF
FSF(Free Software Foundation)的中文意思是自由软件基金会,是Richard Stallman于1984年发起和创办的。FSF的主要项目是GNU项目。它的目标是建立可自由发布和可移植的类Unix操作系统产品。GNU项目本身产生的主要软件包括:Emacs编辑软件、gcc编译软件、bash命令解释程序和编程语言,以及gawk(GNU抯 awk)等。
1.3.2 GNU知识
GNU的全称为GNU抯 not Unix,意思是“GNU不是Unix”,GNU计划,又称革奴计划,是由Richard Stallman在1984年公开发起的,是FSF的主要项目。前面已经提到过,这个项目的目标是建立一套完全自由的和可移植的类Unix操作系统。
GNU类Unix操作系统是由一系列应用程序、系统库和开发工具构成的软件集合(例如,Emacs编辑软件、gcc编译软件、bash命令解释程序和编程语言,以及gawk等),并加上了用于资源分配和硬件管理的内核。
但是GNU自己的内核Hurd仍在开发中,离实用还有一定的距离。因此,这个GNU系统并没有流行起来。现在的GNU系统通常是使用Linux系统的内核、再加上GNU项目贡献的一些组件,以及其他相关程序组成的,这样的组合被称为GNU/Linux操作系统。
到1991年Linux内核发布的时候,GNU项目已经完成了除系统内核之外的各种必备软件的开发。在Linus Torvalds和其他开发人员的努力下, GNU项目的部分组件又运行到了Linux内核之上,例如,GNU项目里的Emacs、gcc、bash、gawk等,至今都是Linux系统中很重要的基础软件。GNU项目的相关图片纪念如图1-6所示。
1.3.3 GPL知识
1. GPL
GPL全称为General Public License,中文名为通用公共许可,是一个最著名的开源许可协议,开源社区最著名的Linux内核就是在GPL许可下发布的。GPL许可是由自由软件基金会(Free Software Foundation)创建的。
1984年,Richard Stallman发起开发自由软件的运动后不久,在其他人的协作下,他创立了通用公共许可证(GPL),这对推动自由软件的发展起到了至关重要的作用,那么,这个GPL到底是什么意思呢?
简单的理解,GPL的核心,是保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件源代码的权利,但都必须同时给出具体更改的源代码。
虽然整个Linux内核都是基于GNU通用公共许可的,但是Linux内核并不是GNU计划的一部分,这一点请读者不要混淆。
2. LGPL
LGPL(Lesser General Public License)相对于GPL则较为宽松,其允许不公开全部源代码,这为基于Linux平台开发商业软件提供了更广阔的空间。对于该知识点,本书仅提及一下,有兴趣的读者可到网上查询相关信息。
1.3.4 Linux系统组成
Linux操作系统的核心为Linus Torvalds开发的Kernel,Linux内核之上的组件可分为如下几部分:一部分是GNU组件,如Emacs、gcc、bash、gawk等;另一些重要组成部分则来自加利福尼亚大学Berkeley分校的BSD Unix项目和麻省理工学院的X Windows系统项目,以及在这之后成千上万的程序员开发的应用程序等(见表1-1)。正是基于Linux内核与GNU项目、BSD Unix以及MIT的X11(X Windows)的结合,才使得整个Linux操作系统得以很快形成,并得到了发展,进而组成了今天优秀的Linux系统。
Linux操作系统=Linux内核+GNU软件及系统软件+必要的应用程序
1.4 Linux的特点
1.4.1 Linux为什么受欢迎?
Linux以高效和灵活著称。Linux运行于个人计算机上,可以实现几乎全部的Unix特性,同时还具有多任务、多用户的能力,支持多线程、多CPU。Linux是在GNU公共许可(GPL)权限下免费获得的,是一个符合POSIX标准的操作系统。
Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器,以及X-Windows图形用户界面等应用软件,使用Linux也可以像使用Windows 7、Windows 10一样,通过窗口、图标和菜单对系统进行操作,当然,这是Linux个人桌面领域的应用,在服务器端领域绝大多数场景下都还是使用命令行、文本模式操作Linux的。
Linux系统之所以受到广大计算机爱好者的喜爱,主要原因有两个,具体如下。
1)Linux属于自由软件,用户可以不用支付任何费用就可以获得系统和系统的源代码,并且可以根据自己的需要对源代码进行必要的修改,无偿使用,无约束地进行自由传播。
2)Linux具有Unix的全部优秀特性,任何使用Unix操作系统或想要学习Unix操作系统的人,都可以通过学习Linux来了解Unix,同样可以获得Unix中的几乎所有优秀的功能,并且,Linux系统更开放,社区开发和全世界的使用者也更活跃。
1.4.2 Linux更多特点介绍
还记得前文对Linux操作系统特性的小结么?除了那些特点以外,其实,Linux还具有如下一些特点。
- 可以说Linux是Unix在个人计算机上的克隆版,仿Unix内核构建,几乎与Unix指令集向下完全兼容。
- 是一个完善的支持多用户、多任务,多进程、多CPU的系统。
- 具有很高的系统稳定性与可靠性。
- 具有很高的系统安全性。
- 有完善的网络服务,支持HTTP、FTP、SMTP、POP、SAMBA、SNMP、DNS、DHCP、SSH、TELNET等。
- 是基于GNU许可,自由开放的系统。
- 有大量第三方免费应用程序。
- 得到了众多业界厂商的支持,如IBM、Oracle、Intel、HP、MOTO、Google等。
- 有完善的大型数据库平台,包括Oracle、DB/2、Sybase、MySQL、PostgreSQL等。
- 有完善的图形用户界面,包括GNOME、KDE等。
- 有完善的开发平台,包括C/C++、Java、Perl等,支持各类图形界面API ,如GTK+、QT等。
1.5 Linux的应用领域
1.5.1 IT服务器Linux系统的应用领域
如今的IT服务器领域是Linux、Unix、Windows三分天下,Linux系统可谓后起之秀,特别是最近几年来,服务器端Linux操作系统不断地扩大市场份额,且每年增长势头迅猛,并且开始对Windows及Unix服务器市场的地位构成严重威胁。图1-8是国内服务端各个系统使用百分比的一个参考饼图。
从图1-8中可以看出,Linux(包括CentOS、Ubuntu等)市场份额占80%左右,Windows占12.8%,Solaris占6.2%。可见,在未来的服务器领域市场里,Linux是大势所趋,笔者同时还查阅了相关的资料,有些资料显示会有差异,不过可以肯定的是国内一二线互联网公司使用Linux作为服务器系统至少占比90%以上,而且这其中的80%以上使用的都是CentOS或同源的Linux系统。
Linux作为企业级服务器的应用十分广泛,利用Linux系统可以为企业构架WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器(透明网关)、路由器等,这些不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性,且无须考虑商业软件的版权问题。
随着Linux在服务器领域的广泛应用,近几年来,该系统已经渗透到电信、金融、政府、教育、银行、石油等各个行业,同时各大硬件厂商也相继支持Linux操作系统。这一切均表明,Linux在服务器市场前景光明。同时,大型、超大型互联网企业(百度、Sina、淘宝等)都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前十的网站使用的几乎都是Linux系统,Linux已经逐步渗透到了各个领域的企业里。
1.5.2 嵌入式Linux系统应用领域
由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活而且具有极大的伸缩性,再加上它广泛支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备(路由器、交换机、防火墙、负载均衡器等)到专用的控制系统(自动售货机、手机、PDA、各种家用电器等),Linux 操作系统都有很广阔的应用市场。特别是经过这几年的发展,它已经成功地跻身于主流嵌入式开发平台。例如,在智能手机领域,Android Linux已经在智能手机开发平台上牢牢地占据了一席之地。嵌入式系统是另一个应用领域,不是本书讨论的主要话题,读者若对此感兴趣,可参考相关文章和书籍。
1.5.3 个人桌面Linux应用领域
所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统,例如,Windows XP、Windows 7、MAC等。Linux系统在这方面的支持也已经非常好了,完全可以满足日常的办公及家用需求,具体列举如下。
- 浏览器上网浏览(例如,Firefox浏览器)。
- 办公室软件(Open Office等,兼容微软Office软件)处理数据。
- 收发电子邮件(例如,ThunderBird软件)。
- 实时通信(例如,QQ等)。
- 文字编辑(例如,vi、vim、Emacs)。
- 多媒体应用。
虽然Linux个人桌面系统的支持已经很广泛了, 但是在当前,其桌面市场份额还远远无法与Windows竞争,这其中的最大障碍可能不在于Linux桌面系统产品本身,而是用户的使用观念、操作习惯和应用技能,以及曾经在Windows上开发的软件的移植问题。
1.5.4 本书主要讲解的Linux领域说明
本书主要讲解Linux系统服务器端的知识、技术,企业生产运维经验实践。下面列举本书将要讨论的技术核心,以及哪些企业单位会用到本书的技术知识。
- 服务器领域的Linux运维技术。
- 基于x86 CPU架构的计算机硬件的Linux系统。
- 面向互联网的企业,或者即将将业务转移到互联网的企业。
1.6 如何选择Linux的发行版本
1.6.1 Linux的发行版本介绍
Linux内核(kernel)版本主要有4个系列,分别为Linux kernel 2.2、Linux kernel 2.4、Linux kernel 2.6,Linux kernel3.x ,Linux kernel4.x,更多更新的内核版本请浏览https://www.kernel.org/。
Linux的发行商包括Slackware、Redhat、Debian、Fedora、TurboLinux、Mandrake、SUSE、CentOS、Ubuntu、红旗、麒麟……
下面来看看其中几个重要的发行版本。
1)Red Hat:Red Hat Linux9.0的内核为2.4.20。在版本9.0之后,Red Hat不再遵循GPL协议,成为收费产品(但仍开源),发展的新版本依次为Red Hat 3.x、Red Hat 4.x、Red Hat 5.x、Red Hat 6.x、Red Hat 7.x。
2)Fedora:为Red Hat的一个分支,仍遵循GPL协议,可以认为是Red Hat预发布版。
3)CentOS(Community Enterprise Operating System):Red Hat的另一个重要分支,以Red Hat 所发布的源代码重建符合GPL许可协议的Linux系统,即将Red Hat Linux源代码的商标LOGO以及非自由软件部分去除后再编译而成的版本,目前CentOS已被Red Hat公司收购,但仍开源免费。CentOS Linux是国内互联网公司使用最多的Linux系统版本,也是本书的“主人公”,本书后面所有的内容讲解都是基于CentOS这个操作系统的,绝大部分内容几乎无须任何修改也能同样适合于其他操作系统版本。
1.6.2 选择适合的Linux系统学习
在了解了Linux版本及应用领域之后,接下来就要定位我们到底该往哪个方向发展了。如果你想做一个网站的后端运维工程师,那就走服务器领域的路线,如果你想进入嵌入式领域,那就要学习嵌入式领域的技能。如果你对桌面Linux系统感兴趣,那么可以深入了解桌面系统领域。选择的领域不同,学习和要掌握的技能自然就会有差别,因此,这个选择就显得很重要了,当你阅读本书的时候,相信你已经选择了IT服务器Linux系统应用领域。没错,我们整本书的主要内容就是基于Linux服务器应用领域而写的。
1. Linux发行版本的应用场景
在确定了自己的发展路线之后,针对Linux系统选择一个合适的版本就显得尤为重要了。事实上,这个问题也正是大多数初学者最为头疼的一个问题,对于此,笔者的建议如下。
如果你是一个Linux爱好者,想选择一个桌面系统,并且既不想使用盗版,又不想花太多钱购买商业系统软件,那么可以选择Ubuntu桌面系统。如果你需要服务器端的Linux系统,想要使用一个比较稳定的服务器系统,或者说你的目标就是进入企业从事Linux运维工作,那么建议你选择CentOS或Red Hat。在这两者当中又应首选CentOS,因为目前市场的趋势就是这样的,CentOS社区非常活跃。如果是对系统稳定性、安全性有更高的要求,或者是有特殊使用偏好的用户,可以考虑Debian或FreeBSD。如果是特别痴迷于新技术体验和追求最新的软件版本,那么可以选择Fedora,但要容忍Fedora潜在的新技术软件的Bug和系统稳定性的问题。如果喜欢更好的中文环境支持,可以选择麒麟Linux……本书主要侧重于服务器领域,并且根据国内互联网企业的市场需求来选择,本书所选择的Linux版本为CentOS,当然所讲的技术也适合Red Hat Linux及其他大部分Linux系列,CentOS是国内当前互联网企业服务器端实际应用最多的系统。
其实Linux虽然发行版本众多,但是系统的核心以及大部分外围基础应用软件,都是相同的或者是简单的变种,所以只要学会学透其中的一种,即可触类旁通,因此不建议读者同时学习多个系统,更不建议工作中同时使用多个系统版本,这不但会浪费自己的学习时间,也影响企业业务的稳定性,徒增无谓的维护成本。前面已说明,本书将以企业最常用的CentOS系统为主进行讲解,但是想学习其他版本的Linux的读者,也同样适合阅读本书,因为它们的使用方法绝大部分都是相同的。
2.选择CentOS Linux的版本
本书讲解的Linux运维技术主要是基于CentOS x86_64 Linux的,绝大部分知识几乎无需任何修改,同样也适用于Red Hat Linux等同源或类似Linux系统版本。
下面是CentOS的主流版本在国内互联网企业的使用现状说明。
- CentOS5系列:主流版本有CentOS5.5、CentOS5.8、CentOS5.10、CentOS5.11,CentOS5在企业的新业务中已经使用极少了,不推荐新手学习。
- CentOS6系列:主流版本有CentOS6.4、CentOS6.6、CentOS6.7、CentOS6.9,CentOS6在企业的新业务中使用也已经不多了,不推荐新手学习。
- CentOS7系列:该系列已经成熟,很多企业开始正式使用该版本,目前与6系列并行,CentOS7已经逐步成为企业主流,比较推荐新手选择此版本学习。
综上所述,老男孩推荐学习当下企业的主流应用,即CentOS7系列,本书选取了当下最新的CentOS7.6作为主要版本来讲解,让读者掌握最新的企业级操作系统技术。
1.7 搭建学习Linux的运维环境
1.7.1 虚拟机软件介绍
简单地说,虚拟机(Virtual Machine)软件就是一套特殊的软件,它可以作为操作系统独立运行,也可以运行于操作系统之上。若是运行于系统之上的虚拟机软件,在一台电脑(PC或笔记本等)上安装完虚拟机软件之后,就可以模拟出来若干台相对独立的虚拟PC设备,并且可以在每台虚拟的PC设备上安装运行操作系统,运行网络服务,其与真实的计算机设备几乎无任何使用差别。
使用时,需要先在电脑上安装好虚拟机软件(例如,VMware Workstation),然后通过安装的虚拟机软件创建一个或多个虚拟机系统(即虚拟的电脑设备),最后在这些虚拟的电脑设备上安装操作系统并进行启动配置。最终实现在一台电脑上“同时”运行多个虚拟机设备系统。
另外,还可以将这些虚拟的系统连成局域网,用来部署网站集群架构等更深层次的运维技术,这样的虚拟环境,在后文会有讲解。图1-9为安装WMware Workstation虚拟机软件后打开的软件界面。
如图1-9所展示的是在Windows 7桌面操作系统上安装的虚拟机软件VMware,这里通过配置VMware虚拟出了6台PC设备,且分别在这6台PC上安装了Linux系统和XP系统。这6个虚拟机同时在一台电脑上独立运行,几乎互不干扰,并且可以同在一个局域网内,还可以互相通信。
经过前面对虚拟机软件的介绍,相信读者应该知道了虚拟机软件到底是什么了吧。下面,笔者介绍一些网友常用的虚拟机软件,如表1-2所示。
1.7.2 通过虚拟机软件学习
通过虚拟机软件学习是初学者学习Linux运维的最佳方式。
在与部分网友和学生的交流中,“老男孩教育”的老师发现,很多初学者都认为,学习Linux就必须将自己的电脑装成Linux系统或者必须要有真正的服务器设备。而实际上这些是一些机构、书籍或网络文章给人传导的错误思想和思维。其实,学习Linux最简单、最实用的环境就是虚拟机环境(例如,通过VMware Workstation等软件学习)。笔者这样说的原因有如下几点。
1)利用虚拟机软件搭建Linux学习环境简单,容易上手,最重要的是利用虚拟机模拟出来的Linux与真实的Linux几乎没有任何区别。如果购买服务器动则就要一两万元人民币,不是一般的网友所能承受的,而且声音很大,很费电。如果用PC和笔记本搭建Linux(包括双系统共存方式),那就完全是Linux环境了,这样做不但加大了你的学习难度(例如,没法用Word等记笔记,以及正常浏览网页),也与实际的工作环境相差很远,即南辕北辙了,企业里运维人员的工作环境绝大多数都是在Windows桌面系统下通过SSH工具(SecureCRT/Xshell)远程连接千百里之外的Linux服务器进行管理和维护的。因此,用虚拟机软件来搭建环境是最接近企业工作环境的。
2)搭建Linux集群等大规模环境有时需要同时开启几台虚拟机(每台虚拟机仅需256~512MB内存(CentOS7以上最好是1GB以上)、6~8GB的硬盘空间即可(CentOS7以上最好12GB以上)),此时如果是用服务器或者自己的电脑安装Linux,则很难满足学习要求,购买多台服务器就更不现实了。事实上,仅仅利用价值四五千元人民币的个人笔记本电脑就可以轻松实现搭建中小规模Linux集群架构的学习需求。
3)用虚拟机学习,如果电脑配置高一点,那么可以同时开启多个Linux虚拟机学习,上班、回家的路上,带着笔记本电脑即可随时学习,如果是多台真实电脑和服务器设备,就没法移动了。当然有读者会说可以放机房里,但这个代价也太大了。大多数学习者很难有这样的资源。
4)使用虚拟机系统环境,我们可以对虚拟系统随意进行任何的设置和更改操作,甚至可以格式化虚拟机系统硬盘,进行重新分区等操作,而且完全不用担心会丢掉有用的数据,因为虚拟机是系统上运行的一个虚拟软件,对虚拟机系统的任何操作都相当于是在操作虚拟机的虚拟机设备和系统,不会影响电脑上的真实数据。
综上所述,笔者给大家的建议就是,踏实地用虚拟机学习就足够了,学习Linux运维,几乎99.9%的知识都与硬件设备无关,我们不要为自己设置太多的限制和门槛,那样会影响学习Linux的进度,从而可能丧失学习Linux的兴趣。
当然了,如果在学习的过程中有条件的话可以去接触一下真正的服务器设备。在实际教学中,我们会让学生接触到服务器,不仅可以进行RAID制作,还可以为真实的物理服务器装系统。总之一句话,如果没有设备,则用电脑上安装的虚拟机一样可以搭建逼近工作环境的学习环境;如果有了设备配合虚拟机学习,那么能利用好设备学习则更佳。在实际工作中,绝大多数人员都会使用云环境提供的虚拟机,运维人员接触到真实硬件的机会越来越少了。
企业真正服务器硬件手把手介绍 http://v.qq.com/page/g/x/y/g016789xvxy.html
1.7.3 选择适合自己的虚拟机软件
1.选择适合的虚拟机软件
如果你使用的是Windows系统,那么,老男孩推荐你使用VMware WorkStation,如果是MacOS平台则可以选择Virtual PC,如果你用的是Ubuntu系统,则可以选择Xen、KVM、VMware(Linux版本)。本书将以在Windows 7系统上安装VMware WorkStation 12(这里读者也可以选择更高版本即14 PRO版)为例,为大家讲解Linux运维技术,同时还会在DELL R710真实服务器环境上进行测试,其他环境的搭建大同小异,进入到Linux里面几乎没有差别。
2.虚拟机软件对硬件的要求
虚拟机软件的原理是利用宿主机物理硬件资源虚拟PC设备,因此对物理机硬件的要求比较高,其中最主要的是内存、硬盘和CPU资源。首先,宿主机物理内存要足够大,最低要在8GB以上(CentOS7最好是16GB以上),因为在创建虚拟设备时,要为每个虚拟机分配一定的内存资源(CentOS7一般最小为1024MB,内存设置太小会出现特殊问题)和硬盘空间(默认为10GB以上,实际最好是20GB以上),SSD(固态硬盘)最好,同样也要分配CPU资源,CPU最好是I5以上,例如,为每个虚拟机分配一核CPU。当然了,多个虚拟机系统也可以同时占用一核CPU,在日常学习Linux时,如果不进行大量并行安装软件等消耗CPU资源的操作,使用虚拟机环境还是非常舒服的。
1.7.4 安装与使用VMware虚拟机软件
1.对VMware Workstation版本的建议
表1-3中给出的是选择VMware Workstation版本的建议,仅为建议,非必须。
2.虚拟机软件的安装
在Windows系统下安装了适合Windows版本的VMware Workstation之后,就可以在VMware Workstation上创建虚拟机了,之后运行创建的虚拟机,在虚拟机上安装CentOS Linux操作系统,这个安装过程与在实际生产环境下的安装是一样的。
VMware Workstation虚拟机软件的安装很简单,只需要按照Windows常规方法持续按“下一步”即可完成,这里不再讲述,如果你遇到了问题可以去前言中寻找笔者为本书建立的问题反馈交流群。
1.7.5 创建一个虚拟机实践
1.创建一个新的虚拟机
1)虚拟机软件安装完毕后,双击桌面上的VMware Workstation图标或者在开始程序菜单里找到VMware Workstation图标以启动VM应用程序,如图1-10所示。
2)接下来按Ctrl+N快捷键(或者选择菜单栏“文件”→“新建虚拟机”)创建一个新的虚拟机,此时会出现新建虚拟机向导窗口,如图1-11所示。
3)在如图1-11所示的虚拟机创建向导界面中,选择“自定义(高级)”,即自定义安装,然后点击“下一步”按钮继续,弹出如图1-12所示的界面。
4)图1-12描述了虚拟机硬件兼容和虚拟设备大小限制,在图1-12右侧的“限制”下面,可以发现软件对要创建的虚拟机的硬件大小会有限制,例如,内存最大为64GB,CPU“16个处理器”,磁盘“8TB磁盘大小”等,不过,这些并不会影响我们的学习,保留默认选择即可。然后点击“下一步”按钮继续,此时会出现如图1-13所示的窗口。
5)在如图1-13所示的界面中,“为虚拟机选择如何安装系统”这一步骤很关键,请选择界面最下面标示的“稍后安装操作系统”,表示创建虚拟机后不再默认安装系统了,即创建虚拟机后,我们可以手动选择镜像或光盘放入虚拟光驱自行安装,如果选择了“安装程序光盘映像文件”则在创建完虚拟机后就会自动安装系统,这样做虽然很方便,但是会增加太多的安装包,并且会自动分区,这样就不是企业环境安装的标准了。选择完毕,然后点击“下一步”按钮继续,这时会出现如图1-14所示的界面。
6)“为虚拟机选择系统类型及内核版本”也很关键,其作用是选择什么系统类型以及内核版本进行系统安装,如果选错了,则可能无法正确安装系统。
这里选择的是“Linux”系统类型,为“CentOS 64位”系统,因此也可以在系统类型中直接选择,选择完毕,然后点击“下一步”按钮继续,这时会出现如图1-15所示的界面。
7)在如图1-15所示的界面中,要为虚拟机命名并选择安装程序的路径,路径要选择大一点的宿主机磁盘分区,剩余空间至少要大于20GB,配置完毕后点击“下一步”按钮继续,这时出现的界面如图1-16所示。
8)在如图1-16所示的界面中,要选择虚拟机对应的CPU的颗数,以及每个CPU的核数,默认都是1,保持默认选择即可,我们仅仅是用虚拟机进行学习和实验,不要求虚拟机设备资源有多好。点击“下一步”按钮继续,这时出现的界面如图1-17所示。
9)“为虚拟机选择内存资源大小”也很关键,默认选择的虚拟机内存大小为1024MB,对于CentOS7来说正好合适。之后,点击“下一步”按钮继续,这时出现的界面如图1-18所示。
10)“为虚拟机选择网络类型”极其关键,VMware虚拟机常见的网络类型有bridged(桥接)、NAT(地址转换)、host-only(仅主机)3种,在分析如何选择之前,先向大家简单介绍下这三种网络类型。
笔者的写书环境是办公室环境,有物理路由器,不经常更换网络环境,因此,这里选择以桥接模式为例为大家讲解(如图1-22所示)。在选择了网络类型之后,点击“下一步”按钮继续,此时出现的界面如图1-23所示。
11)在如图1-23所示的界面中选择虚拟机的I/O控制器类型,采用默认类型即可,选择完毕,点击“下一步”按钮继续,此时出现的界面如图1-24所示。
12)在选择虚拟机磁盘类型时,采用默认的SCSI即可(VM高版本会有SAS选项,不过建议不要选该选项),选择完毕后,点击“下一步”按钮继续,会出现如图1-25所示的界面。
13)在选择虚拟机使用的磁盘时,采用默认的“创建新虚拟磁盘”即可创建一个虚拟磁盘,选择完毕后,点击“下一步”按钮继续,会弹出如图1-26所示的界面。
14)在选择虚拟机使用的磁盘容量时,仍然是采用默认的20GB的配置,选择完毕后,点击“下一步”按钮继续,此时出现的界面如图1-27所示。
15)如图1-28所示的界面显示的是配置的虚拟机的所有选项信息,如果与前面选择一致的话,则点击“下一步”按钮继续,出现的界面如图1-28所示。
16)图1-28为显示配置的虚拟机的所有选项信息,可以通过滚动条下拉查看,点击左下的“自定义硬件”按钮可以自定义添加其他硬件,例如磁盘、网卡等,这里保留默认。选择完毕后,点击“下一步”按钮继续,会出现如图1-29所示的界面。
17)图1-29所示的界面中展示的是创建虚拟机后的界面信息,左边是虚拟机的名称,右边是虚拟机的实际配置。在这个窗口中,可以为创建好的虚拟机配置光驱,将CentOS镜像文件(CentOS-7-x86_64-DVD-1810,需要单独下载,如果阿里云提供的地址没有CentOS7.6了,那么下载更高的7系列版本也可以,只要是7系列都可以)放到光驱里,就可以启动虚拟机安装Linux系统了。选择窗口右边的光驱选项,会出现如图1-30所示的界面。
18)将CentOS7.6 ISO镜像文件载入光驱,接下来就只剩下启动虚拟机安装系统了。点击“开启虚拟机”即可,如图1-31所示。
到此为止,VMware虚拟机的准备工作就全部做完了,第2章将为大家讲解安装Linux系统的知识。
1.8 本章重点
1)了解什么是操作系统以及操作系统简单原理图。
2)了解Unix/Linux的发展历史。
3)了解市面上常见的Unix系统版本。
4)了解Unix及Linux诞生发展的几个关键人物。
5)重点了解GNU、GPL知识。
6)了解Linux系统的特点。
7)了解Linux系统的常见发行版本,不同场景选择。
8)重点了解CentOS和Red Hat的区别和联系。
9)了解CentOS各个版本的应用场景及企业应用情况。
10)学会搭建学习Linux的环境。
注意:最好是能口头表达出上述了解的内容。
1.9 本章相关问题
1)请详细描述GNU的相关知识和历史事件。
2)请描述什么是GPL?
3)企业工作中如何选择各Linux发行版?
4)Red Hat Linux和CentOS Linux有什么区别和联系?
5)请说出3个以上你认为Linux受欢迎的特点。
1.10 本章参考资料
- 操作系统介绍资料
http://baike.baidu.com/view/880.htm - 自由软件基金会
http://www.gnu.org/philosophy/free-sw.html - GNU与GPL知识
http://www.gnu.org/home.zh-cn.html - GPL协议英文版
http://www.gnu.org/licenses/gpl.html - 虚拟机及虚拟机软件的知识
http://zh.wikipedia.org/wiki/%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%AF%94%E8%BE%83#.E8.99.9B.E6.93.AC.E6.A9.9F.E5.99.A8.E6.AF.94.E8.BC.83 - 本章内容对应的视频精品资料
http://edu.51cto.com/course/course_id-839.html