前言
随着虚拟化、云计算时代的来临,Linux迅猛发展,在服务器领域已经占据半壁江山,而基于Linux的运维也面临新的挑战:面对越来越复杂的业务,面对越来越多样化的用户需求,不断扩展的应用需要越来越合理的模式来保障Linux灵活便捷、安全稳定地持续提供服务,这种模式中的保障因素就是Linux运维。从初期的几台服务器发展到庞大的云计算数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,于是标准化、自动化、稳定性、可靠性等业务需求越来越被人们所重视。因此,对Linux的高性能、可靠性提出了更高的要求。
2009年我完成了基于Linux操作系统的入门作品《循序渐进Linux——基础知识、服务器搭建、系统管理、性能调优、集群应用》。本书出版后,得到了很多同行的认可和支持,但是,由于这本书出版已近6年,书中介绍的部分知识点和操作系统版本已经变得陈旧,已不能满足Linux以及开源技术迅速发展的需求,抱着对读者和本书负责的态度,我决定修订此书,因此也就有了本书。
目前市场上关于Linux系统管理或运维的书籍有很多,但是普遍存在的问题是模式单一,要么只讲基础理论和系统命令,要么侧重粘贴代码,要么介绍软件的安装与配置,这种模式带有很大的实验性质,并没有生产环境中实战应用和经验技巧的介绍。
本书以RHEL/CentOS 7.x版本为主线,也涉及RHEL/CentOS 6.x的版本,这也是目前企业线上环境主流的系统版本。在内容介绍上,本书从基础入手,再进行深入研究,同时结合实际的应用案例进行由点到线及面、由浅入深的讲述。本书秉承了实战、实用、通俗、易懂的特点,在内容上十分注重实战化,从系统管理的多个方面以真实的生产环境介绍Linux系统管理工作中的各个方面,理论介绍结合实际应用是贯穿全书的思想,通过真实案例的学习,可以使读者深入、迅速地掌握Linux运维技术的各种经验和技巧,从而真正提高实践能力。
谈谈Linux学习方法
Linux作为一个开源的操作系统,有着自己独特的魅力,作为一个Linux爱好者或者Linux初学者,掌握一个合理有效的学习方法是至关重要的。在这里,我作为一个Linux老手,谈谈自己的一点看法和经验。
1.多动手实践,理论结合实际
要学活、学通Linux操作系统,必须理论结合实际,多动手操作。例如,对每个命令都要亲自操作实践,对于命令的每个参数也要亲自实践,只有这样才能理解其含义。虽然现在网络上关于Linux的文档资料很多,单单一味地去看,是没有任何效果的。
有很多新手都存在这么一个问题,感觉自己也学习Linux时间很长了,基本命令操作也都知道,但是在系统出现故障时,面对Linux显得无能为力,不知道如何下手。归根结底,就是学习的理论知识没有很好地与实际操作相结合。总之,只有多次动手练习,多多实战,才能掌握其中的技巧。
2.一定要习惯命令行方式工作
Linux下90%的操作都是通过命令行完成的,因而,命令是必须要熟练掌握的。这对于刚刚从Windows下转到Linux的新手可能会有点困难,但是一定要努力适应。这确实有点困难,但是一旦迈过了这个难关,接下来学习Linux的道路将一马平川。很多Linux新手最终放弃Linux,都跟这个原因有关。
3.选择一个适合自己的Linux发行版本
Linux的发行版本太多了,目前Linux大约有300多个发行版本。但是,请不要为此而感到没有头绪。根据自己学习Linux的方向,选择适合自己的发行版本。例如,如果喜欢Linux的企业级应用,想从事Linux服务器管理方面的工作,推荐学习CentOS版本或者Red Hat Enterprise Linux发行版本;而如果是为了娱乐游戏等,推荐选择Ubuntu Linux;如果你已经是Linux的初中级学者,想继续深入学习,推荐选择CentOS或者Debian Linux等。
4.学会使用Linux的联机帮助
Linux是由命令组成的一个有机系统,因而命令非常多,常用命令就有上百个。要识记每个命令的用法和参数,是不可能的,每个人都办不到。好在Linux自身提供了强大的联机帮助文档,如果不记得某些命令的用法,查看联机文档即可。例如,如果不清楚tar命令的用法,只须在命令行执行man tar,即可列出tar命令的所有参数和用法。熟练、灵活运用联机帮助,在Linux下工作会有事半功倍的效果。
5.学会利用网络资源
Linux能获得飞速发展,互联网的力量功不可没。网络上Linux技术社区、网站、论坛带动了Linux发展的热度,一些狂热的Linux爱好者无偿地将自己的学习经验和总结发布到网络上,并且在网络的每个角落回答广大网友提出的问题,这些免费的技术经验和资料是学习Linux的瑰宝。
遇到Linux难题,搜索引擎绝对是第一选择,基本上99%的问题,都可以在这里找到答案。如果还是不能解决问题,可以去大型Linux技术社区论坛,发表提问,热心的Linux爱好者一定会帮助你的。
本书结构和主要内容
本书最大的特点是注重实践、理论与实际相结合,在讲述完一个知识点后,一般都附有很多的例子,作为对理论知识的实践补充,并且每个章节都涉及独立的知识,读者可以只选择阅读感兴趣的章节,也可以从头开始阅读。全书给出了一个由浅入深、由点及面、循序渐进地学习Linux的过程。
本书主要分为五篇,共20章,基本结构如下。
第一篇 基础知识篇(第1章~第5章)
第一篇主要讲述Linux的学习方法、Linux的安装、系统基本结构、系统运作原理、常用命令的使用方法以及软件包的安装与使用,每个章节都理论与实践相结合,每个知识点的讲解都尽力做到完整、明确。通过对基础知识篇的学习,初学者已经对Linux有了一个整体的清晰认识,或者说已经进入了Linux领域的大门了。
第二篇 服务器搭建篇(第6章~第10章)
第二篇主要讲述Linux在服务器环境下的系统安全防范以及各种应用软件使用环境的搭建,首先讲解了Linux作为服务器的安全策略和安全防范规则,然后详述了各种Linux服务器的架设过程。由于Linux下应用软件数目众多,不可能面面俱到,这里选择了最常用、最流行的Linux应用软件作为讲述的对象,主要讲解了Web服务器的搭建、LAMP服务器的搭建、DNS服务器的搭建、Samba服务器搭建。此外,还深入介绍了如何构建一个高性能的MySQL数据库服务器。最后结合实际案例讲述了Linux常见故障的排除思路和解决方法。
第三篇 系统管理篇(第11章~第15章)
通过对前两篇的学习,读者已经掌握Linux的基本使用方法。该篇进入Linux深入学习阶段:系统管理,主要讲述Linux系统下的用户权限管理、磁盘存储管理、文件系统管理、内存管理、进程管理。通过对这些内容的学习,让读者更深层次地理解Linux的运作机制和原理,因为只有真正理解了Linux内部的技术细节,才能更深入地学习Linux,为进一步学习后面的章节打下坚实的基础。
第四篇 性能调优篇(第16章~第17章)
第四篇主要讲述Linux服务器的性能调优原则和调优思路,开篇首先讲述了性能优化的思路和性能评价标准,然后分别评估了影响Linux性能的四个方面:Linux的CPU性能评估、内存性能评估、磁盘I/O性能评估、网络性能评估。通过该篇的学习,读者应该对Linux服务器的性能调优工作有了全面的认识和了解,为以后的系统管理和维护工作打下良好基础。
第五篇 虚拟化与集群应用篇(第18章~第20章)
第五篇是对本书知识体系的一个综合,或者说是对全书所有知识点的一个整理和融合。该篇从实际应用出发,详细深入地讲述了开源虚拟化平台PVE的使用、高性能集群软件Keepalived的使用、负载均衡集群软件LVS、HAproxy的使用等。学习完该篇,相信读者对虚拟化会有一个全新的了解,并且能熟练应用高可用集群和负载均衡集群构建业务系统。
本书读者对象
本书适合的读者对象有:
· 初/中级Linux运维管理人员;
· Linux系统工程师;
· 系统集成商;
· 解决方案构架师;
· 所有开源爱好者。
勘误和支持
本书的修订信息会发布在作者的博客上,该博客会不定期更新书中的遗漏。当然,若读者遇到疑惑或者发现书中的错误,也欢迎在博客上留言,博客地址为http://ixdba.blog.51cto.com,非常欢迎大家到上面提出意见和建议。由于本人水平有限,书中错误、疏漏在所难免,希望大家多多批评指正!
致谢
首先要感谢我的爸爸、妈妈,感谢你们将我培养成人,并时时刻刻向我传递信心和力量!感谢我的妻子吴娟然女士,是她的鼓励和背后默默的支持,让我坚持写完了这本书。
感谢对本书提供大力支持的杨武先生、禄广峰先生,感谢我的挚友张建坤、兰海文,他们从技术角度对本书某些章节进行了修改和补充,并提出了很多意见和建议。
本书内容是建立在开源软件与开源社区研究成果基础之上的,因此,在本书完成之际,对每位无私奉献的开源作者以及开源社区表示衷心的感谢,因为有他们,开源世界才更加精彩。同时,也要感谢学习和使用Linux开源软件过程中认识的一些同行好友,以及本书的众多支持者,在本书撰写过程中他们向我提出了很多意见和建议,人数众多不一一列举,在此一并感谢。
高俊峰(南非蚂蚁)