Linux 就该这么学

内容简介

本书源自日均阅读量近万次火爆的线上同名课程,口碑与影响力俱佳,旨在打造简单易学且实用性强的轻量级 Linux 入门教程。

本书基于红帽 RHEL 系统编写,且内容通用于 CentOS、Fedora 等系统。本书共分为20章,内容涵盖了部署虚拟环境、安装 Linux 系统;常用的 Linux 命令;与文件读写操作有关的技术;使用 Vim 编辑器编写和修改配置文件;用户身份与文件权限的设置;硬盘设备分区、格式化以及挂载等操作;部署 RAID 磁盘阵列和 LVM;firewalld 防火墙与 iptables 防火墙的区别和配置;使用 ssh 服务管理远程主机;使用 Apache 服务部署静态网站;使用 vsftpd 服务传输文件;使用 Samba 或 NFS 实现文件共享;使用 BIND 提供域名解析服务;使用 DHCP 动态管理主机地址;使用 Postfix 与 Dovecot 部署邮件系统;使用 Squid 部署代理缓存服务;使用 iSCSI 服务部署网络存储;使用 MariaDB 数据库管理系统;使用 PXE Kickstart 无人值守安装服务;使用 LNMP 架构部署动态网站环境等。此外,本书还深度点评了红帽 RHCSA、RHCE、RHCA 认证,方便读者备考。

本书适合打算系统、全面学习 Linux 技术的初学人员阅读,具有一定 Linux 使用经验的用户也可以通过本书来温习自己的 Linux 知识。

作者简介

刘遄(Liu Chuán),计算机信息技术方向教育学硕士,LinuxProbe 网站创始人兼核心讲师,在高中时期便因兴趣的驱使而较早地接触 Linux 系统并开始学习运维技术。刘遄老师于2012年~2015年期间分别获得红帽 RHCE 工程师认证以及 RHCA 架构师顶级认证。多年以来,一直从事 Linux 运维技术和红帽认证课程的培训工作,当前是国内开源行业颇具影响力的技术型大 V。

本书内容

前言

本书作者刘遄(Liu Chuán)从事于 Linux 运维技术行业,高中时期便因兴趣的驱使而较早地接触到了 Linux 系统并开始学习运维技术,并且在2012年获得红帽工程师 RHCE 6 版本证书,在2015年初又分别获得红帽工程师 RHCE 7 版本证书与红帽架构师认证 RHCA 顶级证书。

尽管如此,但依然深知水平有限且技术一般,若不是得益于良师益友的无私帮助,肯定不能如此顺利地取得上述成绩。并且,作为一名普通的技术人,我亲身经历过半夜还在培训班的心酸,体验过拥堵6小时车程的无奈,也翻看过市面上十几本如同嚼蜡般的 Linux 技术书籍,这让我更加坚定了写作本书的信念。此刻,我正是怀揣着一颗忐忑的心,尽自己最大的努力把有用的知识分享给读者,希望你们能够少走一些弯路,更快地入门 Linux 系统。

窃以为,一名技术高超的导师不应该仅仅是技术的搬运工,而应该是优质知识的提炼者,所以在写作本书的过程中,我不希望也不会将自己了解掌握的所有技术知识都写到书里,借此来炫技,而是从真正贴近于新人学习特点的角度出发,主动摒弃了不实用的部分,并把重点、难点反复实践,以加深读者对理论基础的理解,并彻底掌握生产环境中用到的技术内容。

本书基于最新的 Linux 系统 RHEL 7 编写而成,而且配套软件及资料完全免费,课程面向 Linux 新手。本书会从零基础带领读者入门 Linux 系统,然后渐进式地提高内容难度,使其匹配生产环境对运维人员的要求。而且,本书每章都配套有大量的图、表、命令示例以及课后习题,以达到增强读者学习兴趣与加深记忆的效果。最后,本书以及配套资源相较于当前的 RHCE 培训,至少要多出40%的内容,只要您能每天坚持学习,相信这绝对是您体验最佳、进步最快的一次学习经历。

最后想说的是,我的写作初心其实并不高雅,只是在还债,还十几年来中国有如此多的培训机构赚了那么多钱,但却没有培训机构真正给学员提供一本好教材的债,而这应该是我们的学员早就应该享受的服务,不能再选择性失明了。而到了2017年,我的写作初衷也融入了一点小私心,除了运营好《Linux 就该这么学》图书的在线学习网站 http://www.linuxprobe. com/,服务更多的学员和读者之外,还要把我们的免费开源图书做到远超其他培训机构收费教材的水平,并坚持做中国开源站点的道德典范,不欺骗,不作恶,保持最纯净的技术交流环境,而我们想要得到的也很简单——如果您认可了刘遄老师的付出并满意我们的服务,还请把本书告诉身边的朋友,让更多的人知道我们在做的这件很酷的事。

学习是件苦差事

我不想回避这个问题——学习是件痛苦的事情。如果说学习 Linux 真的很简单,那必是骗子的谎言,起码这不能给您带来高薪。在每次起床后的几分钟时间里,大脑都会陷入斗争状态——是该聊会天呢,还是要追个美剧呢,还是打一局英雄联盟呢,还是看一下那该死的刘遄写的那本可怕的 Linux 教材呢?这个时候,请不要忘记自己最初的梦想。十年后的你,一定会感激现在拼命努力学习的自己。身为作者,我的使命就是让本书对得起你为此花费的时间、精力和金钱,让你每学完一个章节都是一次进步。

稻盛和夫先生在《活法》中有段一直激励着我的话,现在转送给正在阅读本书的你:

“工作马马虎虎,只想在兴趣和游戏中寻觅快活,充其量只能获得一时的快感,绝不能尝到从心底涌出的惊喜和快乐,但来自工作的喜悦并不像糖果那样——放进嘴里就甜味十足,而是需要从苦劳与艰辛中渗出,因此当我们聚精会神,孜孜不倦,克服艰辛后的成就感,世上没有哪种喜悦可以类比”。

“更何况人类生活中工作占据了较大的比重,如果不能从劳动中、工作中获得充实感,那么即使从别的地方找到快乐,最终我们仍然会感到空虚和缺憾”。

开源共享精神

简单来说,开源软件的特点就是把软件程序与源代码文件一起打包提供给用户,让用户在不受限制地使用某个软件功能的基础上还可以按需进行修改,或编制成衍生产品再发布出去。用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。这也正好符合了黑客和极客对自由的追求,因此国内外开源社区的根基都很庞大,人气也相当高。

坦白来讲,每位投身于 Linux 行业的技术人或者程序员只要听到开源项目就会由衷地感到自豪,这是一种从骨子里带有的独特情怀。开源的企业不单纯是为了利益,而是互相扶持,努力服务好更多的用户。开源软件最重要的特性有下面这些。

  • 低风险:使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。
  • 高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的 bug 还没有等爆发就已经被修补。
  • 低成本:开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。
  • 更透明:没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。

但是,如果开源软件为了单纯追求“自由”而牺牲程序员的利益,这将会影响程序员的创造激情,因此世界上现在有60多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。对于那些只知道一味抄袭、篡改、破解或者盗版他人作品的不法之徒,终归会在某一天收到法院的传票。对于准备编写一款开源软件的开发人员,也非常建议先了解一下当前最热门的开源许可协议,选择一个合适的开源许可协议来最大限度保护自己的软件权益。

  • GNU GPL(GNU General Public License,GNU 通用公共许可证):只要软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议且开源、免费,因此这个协议并不适合商用软件。遵循该协议的开源软件数量极其庞大,包括 Linux 系统在内的大多数的开源软件都是基于这个协议的。GPL 开源许可协议最大的4个特点如下所示。

  • 复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。
  • 传播自由:允许软件以各种形式进行传播。
  • 收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
  • 修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。
  • BSD(Berkeley Software Distribution,伯克利软件发布版)许可协议:用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件。

  • 如果再发布的软件中包含源代码,则源代码必须继续遵循 BSD 许可协议。
  • 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了 BSD 协议。
  • 不允许用原始软件的名字、作者名字或机构名称进行市场推广。
  • Apache 许可证版本(Apache License Version)许可协议:在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的 Hadoop、Apache HTTP Server、MongoDB 等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的4个条件。

  • 该软件及其衍生品必须继续使用 Apache 许可协议。
  • 如果修改了程序源代码,需要在文档中进行声明。
  • 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
  • 如果再发布的软件中有声明文件,则需在此文件中标注 Apache 许可协议及其他许可协议。
  • MPL(Mozilla Public License,Mozilla公共许可)许可协议:相较于 GPL 许可协议,MPL 更加注重对开发者的源代码需求和收益之间的平衡。
  • MIT(Massachusetts Institute of Technology)许可协议:目前限制最少的开源许可协议之一,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。

为什么学习 Linux 系统

早在20世纪70年代,UNIX 系统是开源而且免费的。但是在1979年时,AT&T 公司宣布了对 UNIX 系统的商业化计划,随之开源软件业转变成了版权式软件产业,源代码被当作商业机密,成为专利产品,人们再也不能自由地享受科技成果。

于是在1984年,Richard Stallman 面对于如此封闭的软件创作环境,发起了 GNU 源代码开放计划并制定了著名的 GPL 许可协议。1987年时,GNU 计划获得了一项重大突破——gcc 编译器发布,这使得程序员可以基于该编译器编写出属于自己的开源软件。随之,在1991年10月,芬兰赫尔辛基大学的在校生 Linus Torvalds 编写了一款名为 Linux 的操作系统。该系统因其较高的代码质量且基于 GNU GPL 许可协议的开放源代码特性,迅速得到了 GNU 计划和一大批黑客程序员的支持。随后 Linux 系统便进入了如火如荼的发展阶段。

1994年1月,Bob Young 在 Linux 系统内核的基础之上,集成了众多的源代码和程序软件,发布了红帽系统并开始出售技术服务,这进一步推动了 Linux 系统的普及。1998年以后,随着 GNU 源代码开放计划和 Linux 系统的继续火热,以 IBM 和 Intel 为首的多家 IT 企业巨头开始大力推动开放源代码软件的发展。到了2017年年底,Linux 内核已经发展到了4.13版本,并且 Linux 系统版本也有数百个之多,但它们依然都使用 Linus Torvalds 开发、维护的 Linux 系统内核。RedHat 公司也成为了开源行业及 Linux 系统的带头公司。

在讲课时,我经常会问同学们一个问题:“为什么学习 Linux 系统?”很多学生为了让我高兴,直接就说“因为 Linux 系统是开源的,所以要去学习”。其实这个想法是完全错误的!开源的操作系统少说有100个,开源的软件至少也有十万个,为什么不去逐个学习?所以上面谈到的开源特性只是一部分优势,并不足以成为您付出精力去努力学习的理由。

对于用户来讲,开源精神仅具备锦上添花的效果,因此正确的学习动力应该源自于:Linux 系统是一款优秀的软件产品,具有类似 UNIX 的程序界面,而且继承了 UNIX 的稳定性,能够较好地满足工作需求。

大多数读者应该都是从微软的 Windows 系统开始了解计算机和网络的,因此肯定会有这样的想法“Windows 系统很好用啊,而且也可足以满足日常工作需求呀”。客观来讲,Windows 系统确实很优秀,但是在安全性、高可用性与高性能方面却难以让人满意。您应该见过下面这张图片。

想必读者现在已经能猜到,为什么要在需要长期稳定运行的网站服务器上、在处理大数据的集群系统中以及需要协同工作的环境中采用 Linux 系统了。通过下图也可以看出 Linux 系统相较于 Windows 系统的具体优势。

常见的 Linux 系统版本

在介绍常见的 Linux 系统版本之前,首先需要区分 Linux 系统内核与 Linux 发行套件系统的不同。

  • Linux 系统内核指的是一个由 Linus Torvalds 负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。
  • Linux 发行套件系统是我们常说的 Linux 操作系统,也即是由 Linux 内核与各种常用软件的集合产品。

全球大约有数百款的 Linux 系统版本,每个系统版本都有自己的特性和目标人群,下面将可以从用户的角度选出最热门的几款进行介绍。

注:

本书全篇将以“Linux 系统”来替代“Linux 发行套件系统”这个词。

  • 红帽企业版 Linux(RedHat Enterprise Linux,RHEL):红帽公司是全球最大的开源技术厂商,RHEL 是全世界内使用最广泛的 Linux 系统。RHEL 系统具有极强的性能与稳定性,并且在全球范围内拥有完善的技术支持。RHEL 系统也是本书、红帽认证以及众多生产环境中使用的系统。

  • 社区企业操作系统(Community Enterprise Operating System,CentOS):通过把 RHEL 系统重新编译并发布给用户免费使用的 Linux 系统,具有广泛的使用人群。CentOS 当前已被红帽公司“收编”。

  • Fedora:由红帽公司发布的桌面版系统套件(目前已经不限于桌面版)。用户可免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到 RHEL 系统中,因此 Fedora 也称为 RHEL 系统的“试验田”。运维人员如果想时刻保持自己的技术领先,就应该多关注此类 Linux 系统的发展变化及新特性,不断改变自己的学习方向。

  • openSUSE:源自德国的一款著名的 Linux 系统,在全球范围内有着不错的声誉及市场占有率。

  • Gentoo:具有极高的自定制性,操作复杂,因此适合有经验的人员使用。读者可以在学习完本书后尝试一下该系统。

  • Debian:稳定性、安全性强,提供了免费的基础支持,可以良好地支持各种硬件架构,以及提供近十万种不同的开源软件,在国外拥有很高的认可度和使用率。

  • Ubuntu:是一款派生自 Debian 的操作系统,对新款硬件具有极强的兼容能力。Ubuntu 与 Fedora 都是极其出色的 Linux 桌面系统,而且 Ubuntu 也可用于服务器领域。

现在国内大多数 Linux 相关的图书都是围绕 CentOS 系统编写的,作者大多也会给出围绕 CentOS 进行写作的一系列理由,但是很多理由都站不住脚,根本没有剖析到 CentOS 系统与 RHEL 系统的本质关系。CentOS 系统是通过把 RHEL 系统释放出的程序源代码经过二次编译之后生成的一种 Linux 系统,其命令操作和服务配置方法与 RHEL 完全相同,但是去掉了很多收费的服务套件功能,而且还不提供任何形式的技术支持,出现问题后只能由运维人员自己解决。经过这般分析基本上可以判断出,选择 CentOS 的理由只剩下——免费!当人们大举免费、开源、正义的旗帜来宣扬 CentOS 系统的时候,殊不知 CentOS 系统其实早在2014年年初就已经被红帽公司“收编”,当前只是战略性的免费而已。再者说,根据 GNU GPL 许可协议,我们同样也可以免费使用 RHEL 系统,甚至是修改其代码创建衍生产品。开源系统在自由程度上没有任何差异,更无关道德问题。

本书是基于最新的 RHEL 7 系统编写的,书中内容及实验完全通用于 CentOS、Fedora 等系统。也就是说,当您学完本书后,即便公司内的生产环境部署的是 CentOS 系统,也照样可以搞得定。更重要的是,本书配套资料中的 ISO 镜像与红帽 RHCSA 及 RHCE 考试基本保持一致,因此更适合备考红帽认证的考生使用。

  • 随书配备的 ISO 镜像文件下载地址:http://www.linuxprobe.com/tools

  • 深度评解红帽 RHCSA、RHCE、RHCA 认证:http://www.linuxprobe.com/redhat-certificate

优秀的 RHEL 7系统

注:

本小节的内容是我在2015年写给学员的一篇文章,现在 RHEL 7 系统已经经过近三年的迭代更新,此时再回看这篇文章,发现我的预测还是很准确吧。当前,国内大多数机房都已经部署 RHEL 7系统,国内外多家银行机构、保险公司系统也纷纷上线 CentOS 7 或 RHEL 7 系统,但我依然想引用这篇文章来帮助读者了解 RHEL 7 系统,而且我也深信这篇文章同样也会适用于未来的 RHEL 8 系统。

2014年年末,RedHat 公司推出了当前最新的企业版 Linux 系统——RHEL 7,彼时国内外各大媒体都给了不少特写镜头,行业也给予了硕大的期待。但是,时至今日 RHEL 7 系统的市场占有率却一直不温不火,于是有人开始对 RHEL 7 系统的未来表示担心,甚至有人还拿出各种论调来唱衰 Linux 系统,觉得开源厂商已经过了事业最高点,要在服务器领域让步于 Windows 系统了。这些话其实并没必要去反驳,任何一个产品都会有其拥趸和黑粉,时间会向所有人证明一切。我们现在只是来单纯地聊一聊这个 RHEL 7 系统。

在正式开聊之前,希望读者对 Linux 系统特性和运维领域有基本的了解,知道 Linux 系统在服务器领域中占据着不可小觑的市场份额,认识到 RedHat 厂商对 Linux 系统及整个开源行业的重要影响,更知道 CentOS 系统其实是 RHEL 系统的衍生品。如果以前使用过一段时间的 RHEL 7 系统,我们就更能顺畅地讨论“红帽 Linux 系统是否是一个失败的产品”这个问题。

我们先来看一个烫手的热议问题:“为什么半年过去了,RHEL 7 系统的市场份额依然不温不火?要不要返回去学习老版本的 Linux 系统?”甚至有阴谋论说美国在使用新版本的 Linux 系统来搜集全球信息,告诫我们千万不要去碰。这个问题必须要回应,否则更多的阴谋论会层出不穷,甚至会让国内某些认知能力欠缺的媒体对开源行业产生误解甚至曲解。

基于前面提到的与读者共有的经验共识和篇幅限制,下面的论证速度会比较快,也会很有意思。首先,RHEL 是企业版的服务器系统而不是用来玩耍折腾的桌面机系统,更何况作为桌面操作系统的 Windows 7 在2009年7月14日发布之后,整整用了3年才开始真正普及,难道在2009年到2013年间,Windows 7 就是失败的产品吗?再者,RHEL 7 系统创新式地集成了 Docker 虚拟化技术,支持 XFS 文件系统,兼容微软的身份管理,并采用 systemd 作为系统初始化进程,其性能和兼容性相较于之前版本都有了很大的改善,很明显是一款非常优秀的操作系统。最后,其实单从纳入 OpenStack 和 Docker 的决策上来讲,就应该相信红帽的开发团队不是在闭门造车。因此应该重新考虑到底是哪里出了问题。

运维人员在心里经常会想:“现在的环境跑得好好的,为什么要换呢?”重新部署生产环境不是说装上操作系统万事大吉,也不是把软件随便安装上就能拍屁股走人的,还要考虑升级带来的风险。

  • 日后的生产环境出了问题,谁来负责?
  • 旧的软件依然能否与新系统兼容?
  • 新的系统或软件是否有 bug?
  • 安全性如何,审计怎么做?
  • 之前购买的第三方技术支持是否可以具备相应的能力?
  • 升级后是否会影响到某些软件的版权,是否需要重新付费?
  • 不习惯新系统带来的变化怎么办?
  • 费力升级后对自己有什么好处?

……

客观来讲,这次 RHEL 7 系统的改变实在太大,最重要的是它采用了 systemd 作为初始化进程。这样一来,几乎之前所有的运维自动化脚本都需要修改。那么,到底还要不要升级到 RHEL 7?当然,也不是说服务器机房中的生产环境从不更新换代,当工作需求超过了当前版本的能力范围时,就必须要进行升级。比如,rsyslogd 日志记录服务在 RHEL 6 系统中的版本是5.8,而现在最新的版本已经是8.1。这两个版本之间差了3个大的主版本号,其功能就有了很大的差距,您觉得会一直用旧的版本吗?

早在2014年年初,Fedora 系统首次采用了 systemd 系统初始化进程,当时我就断言 RHEL 7系统也会使用 systemd,所以当即更新了自己的培训课程。这也让身在其他培训机构还在学习 init 参数的用户新生艳羡。所以,不论是学习 Linux 还是编程语言,都应该选择当前稳定且最新的版本作为学习环境。

  • 稳定:无论是进行开发还是运维,稳定压到一切。
  • 最新:老版本可能会有更大的概率存在安全漏洞或者功能缺陷,而新版本不仅出现漏洞的概率小,而且即便出现漏洞,也会快速得到众多开源社区和企业的响应并更快地修复。

我每次在公开场合讲座时都会表达这样一个观点:“我们并不是因为开源而喜欢 Linux,而是因为 Linux 系统真的非常优秀,开源精神仅仅是锦上添花而已。”我们在前文中已经狠狠地肯定了 Linux 系统对运维行业甚至是对世界的影响。大家要做的就是去相信我对运维行业未来发展的判断,然后放手来学习吧。

了解红帽认证

红帽公司成立于1993年,是全球首家收入超10亿美元的开源公司,总部位于美国,分支机构遍布全球。红帽公司作为全球领先的开源和 Linux 系统提供商,其产品已被业界广泛认可并使用,尤其是 RHEL 系统在业内拥有超高的 Linux 系统市场占有率。红帽公司除了提供操作系统之外,还提供了虚拟化、中间件、应用程序、管理和面向服务架构的解决方案。

红帽认证是由红帽公司推出的 Linux 认证,该认证被认为是 Linux 行业乃至整个 IT 领域价值最高的认证之一。红帽认证考试全部采用上机形式,在考察学生基础理论能力的同时还考察了实践动手操作以及排错能力。红帽公司针对红帽认证制定了完善的专业评估与认证标准,其认证主要包括红帽认证系统管理员(RHCSA)、红帽认证工程师(RHCE)与红帽认证架构师(RHCA)。

2014年6月10日,红帽公司在发布新版红帽企业版系统(RHEL 7)的当天即在红帽英文官网更新了其对 RHCSA 与 RHCE 培训政策的调整,考生只有先通过红帽 RHCSA 认证后才能考取红帽 RHCE 认证。

红帽认证进阶等级图

红帽认证系统管理员(Red Hat Certified System Administrator,RHCSA)属于 Linux 系统的初级认证,比较适合 Linux 爱好者。该认证要求考生对 Linux 系统有一定的了解,并且能够熟练使用 Linux 命令来完成以下任务:

  • 管理文件、目录、文档以及命令行环境;
  • 使用分区、LVM 逻辑卷管理本地存储;
  • 安装、更新、维护、配置系统与核心服务;
  • 熟练创建、修改、删除用户与用户组,并使用 LDAP 进行集中目录身份认证;
  • 熟练配置防火墙以及 SELinux 来保障系统安全。

红帽认证管理员(RHCSA)证书示例

红帽认证工程师(Red Hat Certified Engineer,RHCE)属于 Linux 系统的中级水平认证,难度相对 RHCSA 认证来讲更大,而且要求考生必须已获得 RHCSA 认证。该认证适合有基础的 Linux 运维管理员,主要考察对下列服务的管理与配置能力:

  • 熟练配置防火墙规则链与 SElinux 安全上下文;
  • 配置 iSCSI(互联网小型计算机系统接口)服务;
  • 编写 Shell 脚本来批量创建用户、自动完成系统的维护任务;
  • 配置 HTTP/HTTPS 网络服务;
  • 配置 FTP 服务;
  • 配置 NFS 服务;
  • 配置 SMB 服务;
  • 配置 SMTP 服务;
  • 配置 SSH 服务;
  • 配置 NTP 服务。

红帽认证工程师(RHCE)证书示例

红帽认证架构师(Red Hat Certified Architect,RHCA)属于 Linux 系统的最高级别认证,是公认的 Linux 操作系统顶级认证,目前中国仅有不到1000人(2017年更新数据)持有该认证。考生需要在获得 RHCSA 与 RHCE 认证后再完成5门课程的考试才能获得 RHCA 认证,因此难度最大,备考时间最长,费用也最高(考试费约在1.8万元~2.1万元人民币)。该认证考察的是考生对红帽卫星服务、红帽系统集群、红帽虚拟化、系统性能调优以及红帽云系统的安装搭建与维护能力。

红帽认证架构师(RHCA)证书示例

RHCA 高分技巧

红帽 RHEL 7 版本的 RHCA 认证需要完成至少5门考试。这5门考试的时间不同,但均为210分合格(70%)。而且红帽公司非常注重 RHCA 架构师认证的实用性,所以课程总是在随行业趋势而不断调整。

下表为2017年最新版的考试课程。欲取得红帽 RHCA 认证,您必须通过以下任意5门认证考试。

考试代码 认证名称
EX210 红帽 OpenStack 认证系统管理员考试
EX220 红帽混合云管理专业技能证书考试
EX236 红帽混合云存储专业技能证书考试
EX248 红帽认证 JBoss 管理员考试
EX280 红帽平台即服务专业技能证书考试
EX318 红帽认证虚拟化管理员考试
EX401 红帽部署和系统管理专业技能证书考试
EX413 红帽服务器固化专业技能证书考试
EX436 红帽集群和存储管理专业技能证书考试
EX442 红帽性能调优专业技能证书考试

本书组织结构

  • 第1章,部署虚拟环境安装 Linux 系统:从零基础详细讲解了虚拟机软件与红帽 Linux 系统,完整演示了 VM 虚拟机的安装与配置过程,以及红帽 RHEL 7 系统的安装、配置过程和初始化方法。此外,本章还涵盖了在 Linux 系统中找回 root 管理员密码、RPM 与 Yum 软件仓库的知识,以及 RHEL 7 系统中 systemd 初始化进程的特色与使用方法。

  • 第2章,新手必须掌握的 Linux 命令:本章首先介绍系统内核和 Shell 终端的关系与作用,然后介绍 bash 解释器的4大优势并学习 Linux 命令的执行方法。本章还精挑细选了数十个 Linux 命令,它们与系统工作、系统状态、工作目录、文件、目录、打包压缩与搜索等主题相关。学习这些最基础的 Linux 命令,可以为今后学习更复杂的命令和服务做好必备知识铺垫。

  • 第3章,管道符、重定向与环境变量:本章讲解了与文件读写操作有关的重定向技术的5种模式,让读者通过实验切实理解每个重定向模式的作用,解决输出信息的保存问题;然后深入讲解了管道命令符,帮助读者掌握命令之间的搭配使用方法,进一步提高命令输出值的处理效率;随后通过讲解 Linux 系统命令行中的通配符和常见转义符,让您输入的 Linux 命令具有更准确的意义,为下一章学习编写 Shell 脚本打好功底。

  • 第4章,Vim 编辑器与 Shell 命令脚本:本章讲解了如何使用 Vim 编辑器来编写、修改文档,然后通过逐个配置主机名称、系统网卡以及 Yum 软件仓库参数文件等实验,帮助读者加深 Vim 编辑器中诸多命令、快捷键、模式切换方法的理解;然后把前面章节中讲解的 Linux 命令、命令语法与 Shell 脚本中的各种流程控制语句通过 Vim 编辑器写到 Shell 脚本中结合到一起,实现最终能够自动化工作的脚本文件;本章最后演示了怎样通过 at 命令与 crond 计划任务服务来分别实现一次性的系统任务设置和长期性的系统任务设置,从而让日常的工作更加高效,更自动化。

  • 第5章,用户身份与文件权限:本章详细讲解了文件的所有者、所属组以及其他人可对文件进行的读(r)写(w)执行(x)等操作,以及如何在 Linux 系统中添加、删除、修改用户账户信息。我们还可以使用 SUID、SGID 与 SBIT 特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般操作权限时所带来的不足。隐藏权限能够给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能进行修改或删除。而文件的访问控制列表(Access Control List,ACL)可以进一步让单一用户、用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限吧。本章最后还将讲解如何使用 su 命令与 sudo 服务让普通用户具备超级管理员的权限,不仅可以满足日常的工作需求,还可以确保系统的安全性。

  • 第6章,存储结构与磁盘划分:本章详细地分析了 Linux 系统中最常见的 Ext3、Ext4 与 XFS 文件系统的不同之处,并带领各位读者着重练习硬盘设备分区、格式化以及挂载等常用的硬盘管理操作,以便熟练掌握文件系统的使用方法。在打下坚实的理论基础与完成一些相关的实践练习后,我们还将进一步完整地部署 SWAP(交换)分区、配置 quota 磁盘配额服务,以及掌握 ln 命令带来的软硬链接。

  • 第7章,使用 RAID 与 LVM 磁盘阵列技术:本章深入讲解了各个常用 RAID 技术方案的特性,并通过实际部署 RAID 10、RAID 5+ 备份盘等方案来更直观地查看 RAID 的强大效果,以便进一步满足生产环境对硬盘设备的 I/O 读写速度和数据冗余备份机制的需求。同时,考虑到用户可能会动态调整存储资源,本章还将介绍 LVM(Logical Volume Manager,逻辑卷管理器)的部署、扩容、缩小、快照以及卸载删除的相关知识。

  • 第8章,iptables 与 firewalld 防火墙:本章讲解了 RHEL 7 中新增的 firewalld 防火墙与先前版本中 iptables 防火墙之间的区别,并分别使用 iptables、firewall-cmd、firewall-config 和 TCP Wrappers 等防火墙策略配置服务来完成数十个根据真实工作需求而设计的防火墙策略配置实验。在学习完这些实验之后,各位读者不仅可以熟练地过滤请求的流量,还可以基于服务程序的名称对流量进行允许和拒绝操作,确保 Linux 系统的安全性万无一失。

  • 第9章,使用 ssh 服务管理远程主机:本章讲解了如何使用 nmtui 命令配置网络参数,以及通过 nmcli 命令查看网络信息并管理网络会话服务,从而让您能够在不同工作场景中快速地切换网络运行参数;还讲解了如何手工绑定 mode6 模式双网卡,实现网络的负载均衡。本章还深入介绍了 SSH 协议与 sshd 服务程序的理论知识、Linux 系统的远程管理方法以及在系统中配置服务程序的方法,并采用实验的形式演示了使用基于密钥验证的 sshd 服务程序进行远程登录,以及使用 screen 服务程序远程管理 Linux 系统的不间断会话等技术。

  • 第10章,使用 Apache 服务部署静态网站:本章通过对比当前主流的 Web 服务程序来使读者更好地理解各自的优势及特点,并真正掌握在 Linux 系统中配置服务的技巧。本章还详细讲解了 SELinux 服务的作用、三种工作模式以及策略管理方法,确保读者掌握 SELinux 域和 SELinux 安全上下文的配置方法。

  • 第11章,使用 vsftpd 服务传输文件:本章讲解了什么是文件传输协议(File Transfer Protocol,FTP),以及如何部署 vsftpd 服务程序,然后深度剖析了 vsftpd 主配置文件中最常用的参数及其作用,并完整演示了 vsftpd 服务程序三种认证模式的配置方法;本章还涵盖了可插拔认证模块的原理、作用以及实用配置方法。

  • 第12章,使用 Samba 或 NFS 实现文件共享:本章讲解了 Samba 服务的理论知识,以及 SMB 协议与 Samba 服务程序的起源和发展过程,并通过实验的方式部署文件共享服务来深入了解 Samba 服务程序中相关参数的作用;还讲解了如何配置网络文件系统(Network File System,NFS)服务来简化 Linux 系统之间的文件共享工作,以及通过部署 NFS 服务在多台 Linux 系统之间挂载并使用资源。

  • 第13章,使用 BIND 提供域名解析服务:本章讲解了 DNS 域名解析服务的原理以及作用,介绍了域名查询功能中正向解析与反向解析的作用,实践部署了 DNS 主服务器、DNS 从服务器、DNS 缓存服务器,并通过实验的方式演示了如何在 DNS 主服务器上部署正、反解析工作模式,以便让大家深刻体会到 DNS 域名查询的便利和强大。

  • 第14章,使用 DHCP 动态管理主机地址:本章讲解了动态主机配置协议的作用,以及在 Linux 系统中配置部署 dhcpd 服务程序的方法,剖析了 dhcpd 服务程序配置文件内每个参数的作用,并通过自动分配 IP 地址、绑定 IP 地址与 MAC 地址等实验,让各位读者更直观地体会 DHCP 协议的强大之处。

  • 第15章,使用 Postifx 与 Dovecot 部署邮件系统:本章介绍了 SMTP、POP3、IMAP4 等常见的电子邮件协议,以及 MUA、MTA、MDA 这三种服务角色的作用;还完整地演示了在 Linux 系统中使用 Postfix 和 Dovecot 服务程序配置电子邮件系统服务的方法,重点讲解了常用的配置参数,此外将结合 BIND 服务程序提供的 DNS 域名解析服务来验证客户端主机与服务器之间的邮件收发功能;最后还介绍了如何在电子邮件系统中设置用户别名,以帮助大家在生产环境中更好地控制、管理电子邮件账户以及信箱地址。

  • 第16章,使用 Squid 部署代理缓存服务:本章介绍了代理服务的原理以及作用、Squid 服务程序正向解析和反向解析的理论以及配置方法。在掌握了 Squid 服务程序的标准正向代理模式、透明正向代理模式、访问控制列表功能以及反向代理等实用功能之后,读者不但可以进一步理解代理服务,提升服务控制能力,而且在步入运维岗位后能够游刃有余地处理相关问题。

  • 第17章,使用 iSCSI 服务部署网络存储:本章开篇介绍了计算机硬件存储设备的不同接口技术的优缺点,并由此切入 iSCSI 技术主题的讲解。本章还将带领大家在 Linux 系统上部署 iSCSI 服务端程序,并分别基于 Linux 系统和 Windows 系统来访问远程的存储资源。

  • 第18章,使用 MariaDB 数据库管理系统:本章介绍了数据库以及数据库管理系统的理论知识,然后介绍了 MariaDB 数据库管理系统的内容,接下来将通过动手实验的方式,帮助各位读者掌握 MariaDB 数据库管理系统的一些常规操作;最后还介绍了数据库的备份与恢复方法。

  • 第19章,使用 PXE+Kickstart 无人值守安装服务:本章介绍了可以实现无人值守安装服务的 PXE+Kickstart 服务程序,并带领大家动手安装部署 PXE + TFTP + FTP + DHCP + Kickstart 等服务程序,从而搭建出一套可批量安装 Linux 系统的无人值守安装系统。在学完本章内容之后,运维新手就可以避免枯燥乏味的重复性工作,大大提高系统安装的效率。

  • 第20章,使用 LNMP 架构部署动态网站环境:LNMP 动态网站部署架构是一套由 Linux + Nginx + MySQL + PHP 组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性。本章首先对比了使用源码包安装服务程序与使用 RPM 软件包安装服务程序的区别,然后讲解了如何手工编译源码包并安装各个服务程序,以及如何使用 Discuz! X3.2 版本论坛系统验证架构环境。

感谢你们相信并选择我

首先,感谢广大读者从众多 Linux 图书中最终选择了本书,感谢你们的厚爱与信任。相信本书不会让你们失望的。

其次,感谢跟随刘遄老师一起努力打拼的各位成员,他们是(以加入团队时间排序):逄增宝、岳永、张宏宇、冯琪、黄烨婧、冯振华、张振宇、唐资富、刘峰、王辉、苏西云、李帅、陶武杰、王浩、郭建鹏、周晓雪、郝大发、倪家兴、郑帅、姜显赫、高军、王毅、任维国、张雄、周阳、程伟、任倩倩、吴向平、华世发。感谢你们相信我,为了我们共同的事业而奋勇向前,如果没有你们的帮助和支持,就不会有现在的成绩。在过去两年中,我们从一个每天只有十几人次访问的小博客,发展到了每天将近一万人次访问的公众站点;在两年内更是接连开通了近30个 QQ 技术交流群,群内读者已超过5万人;微信公众号也从0做到了10万粉丝,这些都是此前中国任何一本技术类电子图书没有达到的高度和成就。尤其在最近一年,我们的发展速度远远领先于同行业所有的资讯网站和教育机构,优质图书内容与读者口碑让我们走的每一步都如此扎实。现在我们可以很自豪地讲:“我们用努力留住了用户,用户看到了我们的付出。”

再次,感谢人民邮电出版社的傅道坤编辑。我们在2015年末初次接触后傅老师便主动提起出版本书的想法,随后一起用了近2年的时间共同打磨本书。感谢傅老师一直以来给予的信任和中肯实用的建议。感谢北京联合大学应用科技学院王廷梅院长在我研究生进修教育学期间的照顾和悉心培育,是您引导我步入了教育学和计算机科学与技术专业。不忘母校,不忘联大。

最后也是最重要的,感谢我的父母和妻子。当我在2015年说想要写一本 Linux 技术图书的时候,感谢你们相信了我。感谢我的妻子能够理解我的压力,一起来协助管理在线培训班及招生工作,让我有了更多的时间来写作。如果没有你们的信任和陪伴,我不敢想象自己现在会是什么样子。

读者服务

本书是一本注重实用性的 Linux 技术自学图书,自电子版公布后日均阅读量近万次。本书以及后续的进阶篇图书将继续一如既往地免费、完整地提供给各位读者。当前,我们正在世界各地部署图书配套站点的镜像服务器,旨在用最快的网站响应速度满足您心中那个求知的小宇宙。此外,我们的团队成员在完善、更新本书内容以及配套软件的同时,还将为您收集、整理值得每天一看的“新闻资讯”和“技术干货”。当然,也欢迎您到我们的 QQ 技术群(http://www.linuxprobe.com/club)中寻找技术大牛!

而这一切的便利与服务,只差您现在的一个选择,赶紧拿起手机扫描下面的微信二维码吧。

编辑手记

与刘遄老师初次相识是在2016年。当时因为自身的工作性质使然,每天都在网络上四处瞎逛,寻求一些可以拿来进行纸质出版的资源,并时刻幻想着哪一天也能捡到个宝,让我有机会打造一本有爆款潜力的高质量精品图书。

直到有一天,偶然闯入刘遄老师运营的 www.linuxprobe.com 网站,看到他精心编写的本书同名线上教程以及真实用户的全五星好评,不由地心中暗喜“天不负我”!于是,马不停蹄地给刘遄老师发邮件、加 QQ,商讨合作事宜。终于,在不亚于“求职面试”难度的多轮沟通之后,我们在与兄弟出版社的竞争中脱颖而出,赢得了刘老师的“芳心”。然后才有了大家现在看到的这本打着“异步社区”LOGO 的《Linux 就该这么学》。

在本书写作出版期间,我经常会与刘遄老师进行交流,讨论稿件本身的问题、封面设计事宜,以及后期的营销计划,刘老师所具备的专业、严谨、细心和执行力让我深感折服。

沟通多了之后,话题也慢慢地从图书本身向外扩展,工作、生活、家庭、课业都是我们谈论的话题。慢慢地,我也得知,刘遄老师早在高中时期便因为兴趣驱使而接触到 Linux 系统并开始学习运维技术,还先后获得了红帽认证管理员、红帽认证工程师以及最顶级的红帽认证架构师等证书。刘遄老师对 Linux 技术发自肺腑的热爱和痴迷,是他多年以来一直从事 Linux 系统运维培训以及红帽认证课程培训的源动力。在这个行业的长期浸淫,也让他成长为国内开源行业颇具影响力的技术大 V。

刘遄老师针对 Linux 系统培训的教学思想相当具有前瞻性和独特性。他始终认为,一名优秀的 IT 技术培训讲师应该将技术知识进行提炼总结之后再传授给学生,而不能仅仅是一名技术知识的搬运工。这也是《Linux 就该这么学》的写作原则。在本书写作过程中,刘遄老师真正做到了断舍离,他从真正贴近于新人学习特点的角度出发,抛弃了不重要、不实用的内容,着重将笔墨用在了“重点、难点知识的讲解,以及与理论基础的结合、实践”方面,由此写就了一本最适合 Linux 新手入门的教程。

刘遄老师花费了近3年时间写作的这本《Linux 就该这么学》,前后修订1500余次,在出版之前又拿出半年时间再次修正、校对,这也从源头保障了图书的品质。当前,本书电子版的日均访问量近10000次,累计在线阅读人数已达到百万级别,是国内当之无愧的高质量 Linux 系统自学图书。

本书基于最新的红帽系统 RHEL 7 编写,但是其内容也通用于 CentOS、Fedora 等常见的 Linux 衍生版本。难能可贵的是,刘遄老师还在书中讲解了红帽认证考试体系以及考试要求,如果您有志于考取红帽认证,也可以与刘老师进一步交流。

为了降低各位读者的学习门槛,保持学习热情,提高学习效率,刘老师对本书的内容编排也是煞费苦心。书中的章节内容会保持适度的关联性,读者在按照章节顺序学习之时,可以通过“学新”而起到“温故”的效果。

无论读者学习 Linux 系统的目的是出于兴趣,还是为了谋求一份高薪工作,这本高品质、高颜值的《Linux 就该这么学》都是您入门 Linux 系统的首选教程。

Choose it! Buy it! Read it!

傅道坤

本书责任编辑

第1章 部署虚拟环境安装 Linux 系统

      • 1.1 准备您的工具
      • 1.2 安装配置 VM 虚拟机
      • 1.3 安装您的 Linux 系统
      • 1.4 重置 root 管理员密码
      • 1.5 RPM(红帽软件包管理器)
      • 1.6 Yum 软件仓库
      • 1.7 systemd 初始化进程
      • 复习题

本章讲解了如下内容:

  • 准备您的工具;

  • 安装配置 VM 虚拟机;

  • 安装您的 Linux 系统;

  • 重置 root 管理员密码;

  • RPM(红帽软件包管理器);

  • Yum 软件仓库;

  • systemd 初始化进程。

本章从零基础详细讲解了虚拟机软件与红帽 Linux 系统,完整演示了 VM 虚拟机的安装与配置过程,以及红帽 RHEL 7系统的安装、配置过程和初始化方法。此外,本章还涵盖了在 Linux 系统中找回 root 管理员密码、RPM 与 Yum 软件仓库的知识,以及 RHEL 7系统中 systemd 初始化进程的特色与使用方法。

1.1 准备您的工具

所谓“工欲善其事,必先利其器”,在本章学习过程中,读者需要搭建出为今后练习而使用的红帽 RHEL 7系统环境。您不需要为了练习实验而特意再购买一台新电脑,下文会讲解如何通过虚拟机软件来模拟出仿真系统。虚拟机是能够让用户在一台真机上模拟出多个操作系统的软件。一般来讲当前主流的硬件配置足以胜任安装虚拟机的任务,并且依据刘遄老师近10年的运维技术学习及多年的在线培训经验来看,建议您无论经济条件是否允许,都不应该在学习期间把 Linux 系统安装到真机上面,因为在学习过程中都免不了要“折腾”您的 Linux 操作系统。通过虚拟机软件安装的系统不仅可以模拟出硬件资源,把实验环境与真机文件分离保证数据安全,更酷的是当操作失误或配置有误导致系统异常的时候,可以快速把操作系统还原至出错前的环境状态,进而减少重装系统的等待时间(在真机上安装 Linux 操作系统每次至少需要30分钟)。

最近几年在讲课时,总会发现同学们使用的实验环境五花八门,有 CentOS,有 RHEL 6,还有 Debian 系统等,结果每次给他们排错时都费心劳力,苦不堪言,而且特别无语。就像您报名去学习日料,老师用柳刃,您非要用长刀,结果寿司肯定会被切的稀巴烂。聪明的学生在学习时一定会采用跟老师一样的工具和环境,这样出现问题后可以首先排除环境问题并迅速定位错误,等技术学的足够扎实了,到了生产环境中自然也就具备了随心选择工具和环境的能力。所以尤其建议没有报名参加刘遄老师开设的付费培训班的同学,一定要充分发挥自己的自学能力,否则长期的实验出错一定会影响您的学习兴趣。

另外,说来也很郁闷,其实我在初中时就有学习 Linux 系统的打算,但那时候上网还不便捷,想要安装 Linux 系统就必须去买光盘才行,而那个时候安装 Linux 系统至少需要6张光盘(CD-ROM 容量大约为700MB),狠下心买回家后尝试安装了几次却一直报错,因为搞不懂报错原因而只能放弃了。2015年春节前打扫屋子时又翻出了这些光盘,这次终于找到了当年出错误的原因,原来是第五张光盘被“刮花”了,系统相关的依赖关系包被损坏,最终导致 Linux 系统安装失败。原本可以早几年就可以接触到 Linux 系统,结果因为这个原因而耽搁,真的是既郁闷又尴尬,所以这里必须狠狠地提醒各位同学:“工具准备齐全后一定要校验完整性,不要重蹈我的覆辙”。

1.2 安装配置 VM 虚拟机

VMware WorkStation 虚拟机软件是一款桌面计算机虚拟软件,让用户能够在单一主机上同时运行多个不同的操作系统。每个虚拟操作系统的硬盘分区、数据配置都是独立的,而且多台虚拟机可以构建为一个局域网。Linux 系统对硬件设备的要求很低,我们没有必要再买一台电脑,课程实验用虚拟机完全可以搞定,而且 VM 还支持实时快照、虚拟网络、拖曳文件以及 PXE(Preboot Execute Environment,预启动执行环境)网络安装等方便实用的功能。

可能会有读者有疑问“为什么要用收费的虚拟机产品来搭建实验环境,而不是用一些免费的开源虚拟机软件呢?”本书前言中讲到,我们学习Linux系统的原因不是因为它免费,也不是因为它开源,而是因为 Linux 系统真的很好用,这个结论同样也适用于 VMware Workstation 这款产品。

运行下载完成的 Vmware Workstation 虚拟机软件包,将会看到如图1-1所示的虚拟机程序安装向导初始界面。

图1-1 虚拟机软件的安装向导初始界面

在虚拟机软件的安装向导界面单击“下一步”按钮,如图1-2所示。

图1-2 虚拟机的安装向导

在最终用户许可协议界面选中“我接受许可协议中的条款”复选框,然后单击“下一步”按钮,如图1-3所示。

图1-3 接受许可条款

选择虚拟机软件的安装位置(可选择默认位置),选中“增强型键盘驱动程序”复选框后单击“下一步”按钮,如图1-4所示。

根据自身情况适当选择“启动时检查产品更新”与“帮助完善 VMware Workstation Pro”复选框,然后单击“下一步”按钮,如图1-5所示。

选中“桌面”和“开始菜单程序文件夹”复选框,然后单击“下一步”按钮,如图1-6所示。

图1-4 选择虚拟机软件的安装路径

图1-5 虚拟机的用户体验设置

图1-6 虚拟机图标的快捷方式生成位置

一切准备就绪后,单击“安装”按钮,如图1-7所示。

图1-7 准备开始安装虚拟机

进入安装过程,此时要做的就是耐心等待虚拟机软件的安装过程结束,如图1-8所示。

图1-8 等待虚拟机软件安装完成

大约5~10分钟后,虚拟机软件便会安装完成,然后再次单击“完成”按钮,如图1-9所示。

双击桌面上生成的虚拟机快捷图标,在弹出的如图1-10所示的界面中,输入许可证密钥,或者选择试用之后,单击“继续”按钮(这里选择的是“我希望试用 VMware Worksatation 12 30天”复选框)。

在出现“欢迎使用 VMware Workstation 12”界面后,单击“完成”按钮,如图1-11所示。

在桌面上再次双击快捷方式,此时便看到了虚拟机软件的管理界面,如图1-12所示。

图1-9 虚拟机软件安装向导完成界面

图1-10 虚拟机软件许可验证界面

图1-11 虚拟机软件的感谢界面

图1-12 虚拟机软件的管理界面

注意,在安装完虚拟机之后,不能立即安装 Linux 系统,因为还要在虚拟机内设置操作系统的硬件标准。只有把虚拟机内系统的硬件资源模拟出来后才可以正式步入 Linux 系统安装之旅。VM 虚拟机的强大之处在于不仅可以调取真实的物理设备资源,还可以模拟出多网卡或硬盘等资源,因此完全可以满足大家对学习环境的需求,再次强调,真的不用特意购买新电脑。

在图1-12中,单击“创建新的虚拟机”选项,并在弹出的“新建虚拟机向导”界面中选择“典型”单选按钮,然后单击“下一步”按钮,如图1-13所示。

图1-13 新建虚拟机向导

选中“稍后安装操作系统”单选按钮,然后单击“下一步”按钮,如图1-14所示。

图1-14 选择虚拟机的安装来源

注: 

在近几年的讲课过程中真是遇到了很多不听话的学生,明明要求选择“稍后安装操作系统”单选按钮,结果非要选择“安装程序光盘镜像文件”单选按钮,并把下载好的 RHEL 7系统的镜像选中。这样一来,虚拟机会通过默认的安装策略为您部署最精简的 Linux 系统,而不会再向您询问安装设置的选项。

如果您是购买图书自行学习的话,请一定不要低估后续实验的难度和 Linux 知识体系的难度,更不要高估自己的自学和排错能力,否则可能会因为系统长期报错而丧失学习兴趣,得不偿失。对于经济条件允许、有意愿深入了解 Linux 系统并考取红帽 RHCE 的同学,可以看一下刘遄老师主讲的培训介绍:http://www.linuxprobe.com/training。

在图1-15中,将客户机操作系统的类型选择为“Linux”,版本为“Red Hat Enterprise Linux 7 64位”,然后单击“下一步”按钮。

图1-15 选择操作系统的版本

填写“虚拟机名称”字段,并在选择安装位置之后单击“下一步”按钮,如图1-16所示。

将虚拟机系统的“最大磁盘大小”设置为 20.0GB(默认即可),然后单击“下一步”按钮,如图1-17所示。

单击“自定义硬件”按钮,如图1-18所示。

图1-16 命名虚拟机及设置安装路径

图1-17 虚拟机最大磁盘大小

图1-18 虚拟机的配置界面

在出现的图1-19所示的界面中,建议将虚拟机系统内存的可用量设置为 2GB,最低不应低于 1GB。如果自己的真机设备具有很强的性能,那么也建议将内容量设置为 2GB,因为将虚拟机系统的内存设置得太大没有必要。

根据您真机的性能设置 CPU 处理器的数量以及每个处理器的核心数量,并开启虚拟化功能,如图1-20所示。

图1-19 设置虚拟机的内存量

图1-20 设置虚拟机的处理器参数

光驱设备此时应在“使用 ISO 镜像文件”中选中了下载好的RHEL系统镜像文件,如图1-21所示。

图1-21 设置虚拟机的光驱设备

VM 虚拟机软件为用户提供了3种可选的网络模式,分别为桥接模式、NAT 模式与仅主机模式。这里选择“仅主机模式”,如图1-22所示。

图1-22 设置虚拟机的网络适配器

  • 桥接模式:相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网。
  • NAT模式:让 VM 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网,在真机中 NAT 虚拟机网卡对应的物理网卡是 VMnet8。
  • 仅主机模式:仅让虚拟机内的主机与物理主机通信,不能访问外网,在真机中仅主机模式模拟网卡对应的物理网卡是 VMnet1。

把 USB 控制器、声卡、打印机设备等不需要的设备统统移除掉。移掉声卡后可以避免在输入错误后发出提示声音,确保自己在今后实验中思绪不被打扰。然后单击“关闭”按钮,如图1-23所示。

图1-23 最终的虚拟机配置情况

返回到虚拟机配置向导界面后单击“完成”按钮,如图1-24所示。虚拟机的安装和配置顺利完成。

当看到如图1-25所示的界面时,就说明您的虚拟机已经被配置成功了。接下来准备步入属于您的 Linux 系统之旅吧。

图1-24 结束虚拟机配置向导

图1-25 虚拟机配置成功的界面

1.3 安装您的 Linux 系统

安装 RHEL 7或 CentOS 7系统时,您的电脑的 CPU 需要支持 VT(Virtualization Technology,虚拟化技术)。所谓 VT,指的是让单台计算机能够分割出多个独立资源区,并让每个资源区按照需要模拟出系统的一项技术,其本质就是通过中间层实现计算机资源的管理和再分配,让系统资源的利用率最大化。其实只要您的电脑不是五六年前买的,价格不低于三千元,它的 CPU 就肯定会支持 VT 的。如果开启虚拟机后依然提示“CPU 不支持 VT 技术”等报错信息,请重启电脑并进入到 BIOS 中把 VT 虚拟化功能开启即可。

在虚拟机管理界面中单击“开启此虚拟机”按钮后数秒就看到 RHEL 7系统安装界面,如图1-26所示。在界面中,Test this media & install Red Hat Enterprise Linux 7.0和 Troubleshooting 的作用分别是校验光盘完整性后再安装以及启动救援模式。此时通过键盘的方向键选择 Install Red Hat Enterprise Linux 7.0选项来直接安装 Linux 系统。

图1-26 RHEL 7系统安装界面

接下来按回车键后开始加载安装镜像,所需时间大约在30~60秒,请耐心等待,如图1-27所示。

选择系统的安装语言后单击 Continue 按钮,如图1-28所示。

注:

请读者不用担心英语基础的问题,因为 Linux 系统中用的 Linux 命令具有特定的功能和意义,而非英语单词本身的意思。比如 free 的意思是“自由”、“免费”,而 free 命令在 Linux 系统中的作用是查看内存使用量。因此即便是英语水平很高,只要没有任何 Linux 基础知识,在看到这些 Linux 命令后也需要重新学习。再者,把系统设置成英文后还可以锻炼一下英语阅读能力,不知不觉地就把 Linux 系统和英文一起学了,岂不是更好?!如果您执意选择中文安装语言,也可以在图1-28中进行选择。

图1-27 安装向导的初始化界面

图1-28 选择系统的安装语言

在安装界面中单击 SOFTWARE SELECTION 选项,如图1-29所示。

RHEL 7系统的软件定制界面可以根据用户的需求来调整系统的基本环境,例如把 Linux 系统用作基础服务器、文件服务器、Web 服务器或工作站等。此时您只需在界面中单击选中 Server with GUI 单选按钮,然后单击左上角的 Done 按钮即可,如图1-30所示。

注:

之前看过一个新闻,说是苹果公司某员工在 iOS 系统的用户说明书末尾加了一句“反正你们也不会去看”。其实这件事情有时候也可以用来调侃部分读者的学习状态,刘遄老师绝不会把没用的知识写到本书中,但就是这样一张如此醒目的截图也总是有同学视而不见,结果采用了默认的 Minimal Install 单选按钮安装 RHEL 7系统,最终导致很多命令不能执行,服务搭建不成功。请一定留意!

图1-29 安装系统界面

图1-30 选择系统软件类型

返回到 RHEL 7系统安装主界面,单击 NETWORK & HOSTNAME 选项后,将 Hostname 字段设置为 linuxprobe.com,然后单击左上角的 Done 按钮,如图1-31所示。

返回到安装主界面,单击 INSTALLATION DESTINATION 选项来选择安装媒介并设置分区。此时不需要进行任何修改,单击左上角的 Done 按钮即可,如图1-32所示。

注: 

读者可能会有这样的疑问“为什么我们不像其他 Linux 图书那样,讲一下手动分区的方法呢”?原因很简单,因为 Linux 系统根据 FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)把不同的目录定义了相应的不同功能,这部分内容会在第6章中详细介绍。并且通过刘遄老师最近这几年的教学经验来看,即便现在写出了操作步骤,读者们大多也只是点点鼠标,并不能真正理解其中的知识,效果不一定好,更何况在接下来的实验中,手动分区相对于自动分区来说也没有明显的好处。所以读者大可不必担心学不到,我们书籍的规划课程章节是非常科学的。

图1-31 配置网络和主机名

图1-32 系统安装媒介的选择

返回到安装主界面,单击 Begin Installation 按钮后即可看到安装进度,在此处选择 ROOT PASSWORD,如图1-33所示。

图1-33 RHEL 7系统的安装界面

然后设置 root 管理员的密码。若坚持用弱口令的密码则需要单击2次左上角的 Done 按钮才可以确认,如图1-34所示。这里需要多说一句,当您在虚拟机中做实验的时候,密码无所谓强弱,但在生产环境中一定要让 root 管理员的密码足够复杂,否则系统将面临严重的安全问题。

图1-34 设置 root 管理员的密码

Linux 系统安装过程一般在30~60分钟,在安装过程期间耐心等待即可。安装完成后单击 Reboot 按钮,如图1-35所示。

图1-35 系统安装完成

重启系统后将看到系统的初始化界面,单击 LICENSE INFORMATION 选项,如图1-36所示。

图1-36 系统初始化界面

选中 I accept the license agreement 复选框,然后单击左上角的 Done 按钮,如图1-37所示。

图1-37 同意许可说明书

返回到初始化界面后单击 FINISH CONFIGURATION 选项,即可看到 Kdump 服务的设置界面。如果暂时不打算调试系统内核,也可以取消选中 Enable kdump 复选框,然后单击 Forward 按钮,如图1-38所示。

图1-38 禁用 Kdump 服务

在如图1-39所示的系统订阅界面中,选中 No, I prefer to register at a later time 单选按钮,然后单击 Finish 按钮。此处设置为不注册系统对后续的实验操作和生产工作均无影响。

虚拟机软件中的 RHEL 7系统经过又一次的重启后,我们终于可以看到系统的欢迎界面,如图1-40所示。在界面中选择默认的语言 English (United States),然后单击 Next 按钮。

图1-39 暂时不对系统进行注册

图1-40 系统的语言设置

将系统的输入来源类型选择为 English (US),然后单击 Next 按钮,如图1-41所示。

图1-41 设置系统的输入来源类型

为 RHEL 7系统创建一个本地的普通用户,该账户的用户名为 linuxprobe,密码为 redhat,然后单击 Next 按钮,如图1-42所示。

图1-42 创建本地的普通用户

按照图1-43所示的设置来设置系统的时区,然后单击 Next 按钮。

图1-43 设置系统的时区

在图1-44所示的界面中单击 Start using Red Hat Enterprise Linux Server 按钮,出现如图1-45所示的界面。至此,RHEL 7系统完成了全部的安装和部署工作。准备开始学习 Linux 系统吧。

图1-44 系统初始化结束界面

图1-45 系统的欢迎界面

1.4 重置 root 管理员密码

平日里让运维人员头疼的事情已经很多了,因此偶尔把 Linux 系统的密码忘记了并不用慌,只需简单几步就可以完成密码的重置工作。但是,如果您是第一次阅读本书,或者之前没有 Linux 系统的使用经验,请一定先跳过本节,等学习完 Linux 系统的命令后再来学习本节内容。如果您刚刚接手了一台 Linux 系统,要先确定是否为 RHEL 7系统。如果是,然后再进行下面的操作。

    [root@linuxprobe ~]# cat /etc/redhat-release    Red Hat Enterprise Linux Server release 7.0 (Maipo)

重启 Linux 系统主机并出现引导界面时,按下键盘上的 e 键进入内核编辑界面,如图1-46所示。

图1-46 Linux 系统的引导界面

在 linux16 参数这行的最后面追加“rd.break”参数,然后按下 Ctrl + X 组合键来运行修改过的内核程序,如图1-47所示。

图1-47 内核信息的编辑界面

大约30秒过后,进入到系统的紧急求援模式,如图1-48所示。

图1-48 Linux 系统的紧急救援模式

依次输入以下命令,等待系统重启操作完毕,然后就可以使用新密码 linuxprobe 来登录 Linux 系统了。命令行执行效果如图1-49所示。

图1-49 重置 Linux 系统的 root 管理员密码

mount -o remount,rw /sysrootchroot /sysrootpasswdtouch /.autorelabelexitreboot

1.5 RPM(红帽软件包管理器)

在 RPM(红帽软件包管理器)公布之前,要想在 Linux 系统中安装软件只能采取源码包的方式安装。早期在 Linux 系统中安装程序是一件非常困难、耗费耐心的事情,而且大多数的服务程序仅仅提供源代码,需要运维人员自行编译代码并解决许多的软件依赖关系,因此要安装好一个服务程序,运维人员需要具备丰富知识、高超的技能,甚至良好的耐心。而且在安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、卸载、查询、升级等管理软件操作时难度都非常大。

RPM 机制则为解决这些问题而设计的。RPM 有点像 Windows 系统中的控制面板,会建立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。目前 RPM 的优势已经被公众所认可,使用范围也已不局限在红帽系统中了。表1-1是一些常用的 RPM 软件包命令,当前不需要记住它们,大致混个“脸熟”就足够了。

表1-1  常用的 RPM 软件包命令

安装软件的命令格式 rpm -ivh filename.rpm
升级软件的命令格式 rpm -Uvh filename.rpm
卸载软件的命令格式 rpm -e filename.rpm
查询软件描述信息的命令格式 rpm -qpi filename.rpm
列出软件文件信息的命令格式 rpm -qpl filename.rpm
查询文件属于哪个RPM的命令格式 rpm -qf filename

1.6 Yum 软件仓库

尽管 RPM 能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。Yum 软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum 软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。Yum 软件仓库的技术拓扑如图1-50所示。

Yum 软件仓库中的 RPM 软件包可以是由红帽官方发布的,也可以是第三方发布的,当然也可以是自己编写的。《Linux 就该这么学》随书提供的镜像光盘内已经包含了大量可用的 RPM 红帽软件包,后文中详细讲解这些软件包。表1-2所示为一些常见的 Yum 命令,当前只需对它们有一个简单印象即可。

图1-50 Yum 软件仓库的技术拓扑图

表1-2  常见的 Yum 命令

命令 作用
yum repolist all 列出所有仓库
yum list all 列出仓库中所有软件包
yum info软件包名称 查看软件包信息
yum install软件包名称 安装软件包
yum reinstall软件包名称 重新安装软件包
yum update软件包名称 升级软件包
yum remove软件包 移除软件包
yum clean all 清除所有仓库缓存
yum check-update 检查可更新的软件包
yum grouplist 查看系统中已经安装的软件包组
yum groupinstall软件包组 安装指定的软件包组
yum groupremove软件包组 移除指定的软件包组
yum groupinfo软件包组 查询指定的软件包组信息

1.7 systemd 初始化进程

Linux 操作系统的开机过程是这样的,即从 BIOS 开始,然后进入 Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为 Linux 系统的第一个进程,它需要完成 Linux 系统中相关的初始化工作,为用户提供合适的工作环境。红帽 RHEL 7系统已经替换掉了熟悉的初始化进程服务 System V init,正式采用全新的 systemd 初始化进程服务。如果您之前学习的是 RHEL 5或 RHEL 6系统,可能会不习惯。systemd 初始化进程服务采用了并发启动机制,开机速度得到了不小的提升。虽然 systemd 初始化进程服务具有很多新特性和优势,但目前还是下面4个槽点。

  • 槽点1:systemd 初始化进程服务的开发人员 Lennart Poettering 就职于红帽公司,这让其他系统的粉丝很不爽。
  • 槽点2: systemd 初始化进程服务仅仅可在 Linux 系统下运行,“抛弃”了 UNIX 系统用户。
  • 槽点3:systemd 接管了诸如 syslogd、udev、cgroup 等服务的工作,不再甘心只做初始化进程服务。
  • 槽点4:使用 systemd 初始化进程服务后,RHEL 7系统变化太大,而相关的参考文档不多,令用户着实为难。

无论怎样,RHEL 7系统选择 systemd 初始化进程服务已经是一个既定事实,因此也没有了“运行级别”这个概念,Linux 系统在启动时要进行大量的初始化工作,比如挂载文件系统和交换分区、启动各类进程服务等,这些都可以看作是一个一个的单元(Unit),systemd 用目标(target)代替了 System V init 中运行级别的概念,这两者的区别如表1-3所示。

表1-3  systemd 与 System V init 的区别以及作用

System V init 运行级别 systemd 目标名称 作用
0 runlevel0.target, poweroff.target 关机
1 runlevel1.target, rescue.target 单用户模式
2 runlevel2.target, multi-user.target 等同于级别3
3 runlevel3.target, multi-user.target 多用户的文本界面
4 runlevel4.target, multi-user.target 等同于级别3
5 runlevel5.target, graphical.target 多用户的图形界面
6 runlevel6.target, reboot.target 重启
emergency emergency.target 紧急 Shell

如果想要将系统默认的运行目标修改为“多用户,无图形”模式,可直接用 ln 命令把多用户模式目标文件连接到/etc/systemd/system/目录:

 [root@linuxprobe ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/ system/default.target 

如果有读者之前学习过 RHEL 6系统,或者已经习惯使用 service、chkconfig 等命令来管理系统服务,那么现在就比较郁闷了,因为在 RHEL 7系统中是使用 systemctl 命令来管理服务的。表1-4和表1-5所示 RHEL 6系统中 System V init 命令与 RHEL 7系统中 systemctl 命令的对比,您可以先大致了解一下,后续章节中会经常用到它们。

表1-4  systemctl 管理服务的启动、重启、停止、重载、查看状态等常用命令

System V init 命令(RHEL 6系统) systemctl 命令(RHEL 7系统) 作用
service foo start systemctl start foo.service 启动服务
service foo restart systemctl restart foo.service 重启服务
service foo stop systemctl stop foo.service 停止服务
service foo reload systemctl reload foo.service 重新加载配置文件(不终止服务)
service foo status systemctl status foo.service 查看服务状态

表1-5 systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

System V init 命令(RHEL 6系统) systemctl 命令(RHEL 7系统) 作用
chkconfig foo on systemctl enable foo.service 开机自动启动
chkconfig foo off systemctl disable foo.service 开机不自动启动
chkconfig foo systemctl is-enabled foo.service 查看特定服务是否为开机自动启动
chkconfig --list systemctl list-unit-files --type=service 查看各个级别下服务的启动与禁用情况

复习题

1.为什么建议读者校验下载的系统镜像或工具?

答:为了保证软件包的安全与完整性。

2.使用虚拟机安装 Linux 系统时,为什么要先选择稍后安装操作系统,而不是去选择 RHEL 7系统镜像光盘?

答:在配置界面中若直接选择了 RHEL 7系统镜像,则 VMware Workstation 虚拟机会使用内置的安装向导自动进行安装,最终安装出来的系统跟我们后续进行实验所需的系统环境会不一样。

3.RPM(红帽软件包管理器)只有红帽企业系统在使用,对吗?

答: RPM 已经被 CentOS、Fedora、openSUSE 等众多 Linux 系统采用,它真的很好用!

4.简述 RPM 与 Yum 软件仓库的作用。

答: RPM 是为了简化安装的复杂度,而 Yum 软件仓库是为了解决软件包之间的依赖关系。

5.RHEL 7系统采用了 systemd 作为初始化进程,那么如何查看某个服务的运行状态?

答:执行命令“systemctl status 服务名.service”可查看服务的运行状态,其中服务名后的.service 可以省略。

第2章 新手必须掌握的 Linux 命令(一)
第2章 新手必须掌握的 Linux 命令(二)
第3章 管道符、重定向与环境变量
第4章 Vim 编辑器与 Shell 命令脚本(一)
第4章 Vim 编辑器与 Shell 命令脚本(二)
第5章 用户身份与文件权限(一)
第5章 用户身份与文件权限(二)
第6章 存储结构与磁盘划分(一)
第6章 存储结构与磁盘划分(二)
第7章 使用 RAID 与 LVM 磁盘阵列技术
第8章 iptables 与 firewalld 防火墙
第9章 使用 ssh 服务管理远程主机
第10章 使用 Apache 服务部署静态网站(一)
第10章 使用 Apache 服务部署静态网站(二)
第11章 使用 vsftpd 服务传输文件
第12章 使用 Samba 或 NFS 实现文件共享
第13章 使用 BIND 提供域名解析服务(一)
第13章 使用 BIND 提供域名解析服务(二)
第14章 使用 DHCP 动态管理主机地址
第15章 使用 Postifx 与 Dovecot 部署邮件系统
第16章 使用 Squid 部署代理缓存服务
第17章 使用 iSCSI 服务部署网络存储
第18章 使用 MariaDB 数据库管理系统
第19章 使用 PXE+Kickstart 无人值守安装服务
第20章 使用 LNMP 架构部署动态网站环境(一)
第20章 使用 LNMP 架构部署动态网站环境(二)

阅读全文: http://gitbook.cn/gitchat/geekbook/5b690899fa9fe34011ed8da4

你可能感兴趣的:(Linux 就该这么学)