你所不了解的Linux(文末有福利)

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

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

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

学习是件苦差事

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

备注:本文摘自《Linux就该这么学》 文中出现的我为本书作者刘遄

开源共享精神

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

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

  • 低风险:使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。

  • 高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的bug还没有等爆发就已经被修补。

  • 低成本:开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。

  • 更透明:没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。

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

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

  • 你所不了解的Linux(文末有福利)

  • 复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。

  • 传播自由:允许软件以各种形式进行传播。

  • 收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。

  • 修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。

  • BSD(Berkeley Software Distribution,伯克利软件发布版)许可协议:用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件。

  • 你所不了解的Linux(文末有福利)

  • 如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议。

  • 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议。

  • 不允许用原始软件的名字、作者名字或机构名称进行市场推广。

  • Apache许可证版本(Apache License Version)许可协议:在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的4个条件。

  • 你所不了解的Linux(文末有福利)

  • 该软件及其衍生品必须继续使用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系统了。通过下图也可以看出Linux系统相较于Windows系统的具体优势。

    你所不了解的Linux(文末有福利)

    常见的Linux系统版本

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

  • Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。

  • Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品。

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

    注:

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

    你所不了解的Linux(文末有福利)

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

  • 你所不了解的Linux(文末有福利)

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

  • 你所不了解的Linux(文末有福利)

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

  • 你所不了解的Linux(文末有福利)

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

  • 你所不了解的Linux(文末有福利)

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

  • 你所不了解的Linux(文末有福利)

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

  • 你所不了解的Linux(文末有福利)

  • 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认证。

    你所不了解的Linux(文末有福利)

    红帽认证进阶等级图

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

  • 管理文件、目录、文档以及命令行环境;

  • 使用分区、LVM逻辑卷管理本地存储;

  • 安装、更新、维护、配置系统与核心服务;

  • 熟练创建、修改、删除用户与用户组,并使用LDAP进行集中目录身份认证;

  • 熟练配置防火墙以及SELinux来保障系统安全。

  • 你所不了解的Linux(文末有福利)

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

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

  • 熟练配置防火墙规则链与SElinux安全上下文;

  • 配置iSCSI(互联网小型计算机系统接口)服务;

  • 编写Shell脚本来批量创建用户、自动完成系统的维护任务;

  • 配置HTTP/HTTPS网络服务;

  • 配置FTP服务;

  • 配置NFS服务;

  • 配置SMB服务;

  • 配置SMTP服务;

  • 配置SSH服务;

  • 配置NTP服务。

  • 你所不了解的Linux(文末有福利)

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

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

    你所不了解的Linux(文末有福利)

    红帽认证架构师(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

    红帽性能调优专业技能证书考试

    本书摘自《Linux就该这么学

    评论有奖规则

  • 如果你对本书感兴趣,可在本文下方留言,说出自己的申请理由,小编会放出有价值的评论,且根据用户评论点赞数+申请理由综合评定,挑选3 名参与评论的小伙伴送出该书的兑换码。

  • 福利获奖名单会在次日的留言中直接回复中奖用户。

  • 点击阅读原文,购买《Linux就该这么学》

    点击图片get更多精彩

    你所不了解的Linux(文末有福利)

    惊呆!有了这些设备,程序员秒变黄金圣斗士!

    你所不了解的Linux(文末有福利)

    西二旗从业者恋爱收支调查报告:没想到平均单身年龄最高的群体竟然是?

    你所不了解的Linux(文末有福利)

    蚁族程序员自述:冬天盼暖气,面朝西二旗

    你所不了解的Linux(文末有福利)

    你所不了解的Linux(文末有福利)