不论你在IT领域或者编程世界中从事什么工作或者已经从事了多久,如果你不学习新东西,就会遇到新问题。这不仅仅是因为平台和范例在持续发生变化,因为新的业务需求需要新的思想,或者因为那些不怀好意的家伙正在不断想出新的办法来攻击你的服务器。原因远远不只这些。停止学习的代价你根本承担不起。关键是要找到一种方法来学习高优先级的技能,而不是守着经验兜圈子。
我的意图和期望在于,通过阅读本书,哪怕是只读了一章,你也能有足够的信心去承担具有挑战性和创造性的工作,也就是那些你之前没有考虑过的事情。如果能一直坚持读到最后,你将学会使用那些支持虚拟化、灾难恢复、基础设施安全、数据备份、Web服务器、DevOps以及排除系统故障等关键和流行的技术。
但为什么使用Linux呢?因为Linux支持大部分的互联网、科学研究以及商业运营—实际上,支持世界上大部分的服务器。那些服务器需要被聪明且接受过良好训练的人员有效地进行配置、启动、保障和管理。聪明是你的天赋,而我能做的是帮助你得到良好的训练。
不确信自己是否拥有足够的Linux知识来开始这样一个雄心勃勃的计划吗?第1章将很快回答这个问题。之后,请系好你的安全带并准备好面对一段严肃的学习旅程吧。
致谢
撰写一本书时,必须仔细考虑方方面面的情况,否则就不可能度过漫长且时而令人受尽折磨的写作时光并完成写作。就本书来说,如同我写作《Learn Amazon Web Services in a Month of Lunches》时一样,完成这项工作需要Manning团队每个环节的工作人员的才华和奉献精神。
再一次说明,Frances Lefkowitz作为一名策划编辑,为每一章设立了清晰的定位和目标,坚持不懈地让我专注其中并走上正轨。Reka Horvath和John Guthrie耐心地测试了本书中的所有项目并在此过程中给出了有价值的操作建议。文字编辑Frances Buran似乎从未遇到过她能认可的副词,至少在我这里如此。但是,目前的书中,字里行间的准确性和优雅度清楚地说明了她的工作质量。
作为项目主管,Deirdre Hiam有效地指导我们走完最后一英里,并成功地让各个部分同步运转。本书的每一位同行评审人员也都做出了重要贡献。他们可能没有意识到,但是他们所有的宝贵建议都被仔细地分析和权衡,而且,只要可能,就都会被采纳。因此,非常感谢Angelo Costo、Christopher Phillips、Dario Victor Duran、Flayol Frederic、Foster Haines、George L. Gaines、Gustavo Patino、Javier Collado、Jens Christian B. Madsen、Jonas Medina de los Reyes、Maciej Jurkowski、Mayer Patil、Mohsen Mostafa Jokar和Tim Kane。
相较Linux管理技能而言,本书的内容更为丰富。要想成为一名成功的管理员,面对自己负责的服务器和系统,应当具备更强的责任感。我非常幸运能在担任Linux系统管理员的职业生涯之初,就从一位伟大的导师那里受益良多。Peter Fedorow对良好运营的细节以及全局大势的关注让他成为一名特别高效的管理员。他把我带进Linux虚拟化的世界,甚至没等那些容器冷却下来,它们就把我吸引住了。虽然一切都说完了、做完了,但毋庸置疑,Peter对我的影响力依然还在。
最后,如果没有我的妻子愉快的参与和帮助,我的任何专业(或私人)项目都不会顺利完成。我们充分分担着这项艰苦的工作,但成功主要归功于她。
关于本书
你正在期望学习管理Linux计算机吗?这是一个很好的选择。虽然Linux常常驻留于消费者的桌面计算机上,但它同时也是服务器领域的绝对主宰,特别是虚拟服务器和云服务器。鉴于现在大多数严格的服务器管理都是远程实施的,通过某个这样或那样的GUI进行工作只会增加无谓的开销。如果你打算管理当前引人关注的服务器和网络体系架构,你将不得不围绕Linux的命令行展开学习。
一个好消息是,核心Linux命令集可以实现跨地域和跨公司的运行,你可以仅关注计算机与业务相交的那些地方。一个更好的消息是,相对而言,Linux技能具有持久性。因为它是一个特别成熟和稳定的操作系统,25年前使用的大多数工具至今仍然在使用,而且,当今使用的大量工具在25年后也将可能继续发挥作用。换句话说,学习Linux将是一生的投资。
但是你非常繁忙,工作堆积如山。好吧,我不能保证掌握Linux与学会系鞋带一样简单。但是我可以帮助你像激光一样进行聚焦,从而将那些不需要的东西都扔到公路上去,让它们窒息在你开车驶过后留下的尾气中(当然,得假设你驾驶的不是一辆特斯拉,因为特斯拉是纯电动汽车)。
我将如何实现这一点呢?本书不采用技术培训的讲授方式。也就是说,虽然其他的书籍、课程及在线资源都围绕常规主题来组织内容(好了,孩子们,拿出你们的尺和笔,今天我们将学习Linux文件系统),但我却将基于现实生活中的一组项目来进行讲授。
例如,我本可以基于Linux文件系统构建完整的一章(或两章)。但本书并未按照这种方式处理,相反,你将学习如何构建企业文件服务器、系统恢复盘以及用来复制关键数据归档文件的脚本等。在这个过程中,你将会顺带学习文件系统的知识,这是本书提供的免费红利。
请不要认为我会覆盖Linux管理的所有工具。那是不可能的,毫不夸张地说,这样的工具有成千上万个。但也不用担心。本书将涵盖Linux管理员职业生涯早期所需掌握的核心技能,并且只有当实际的关键项目需要某些技能时,才会做有针对性的介绍。读完本书后,你能学到的将比基于传统资源所能学到的更多。你将学会如何掌控十几个主要的管理项目,而且能够轻松地处理更多的项目。
现在你有所了解了吗?我想是的。
读者对象
本书的目的是让你获得一系列可靠的Linux管理技能。也许你是一位开发者,更希望直接在驻留应用程序的服务器环境工作。或者,也许你已经准备好在服务器管理或DevOps领域开展工作。不论怎样,你就是我们中的一员。
你应该拥有什么基础知识呢?你至少应该能轻松地使用文件、网络及现代操作系统资源来进行工作。系统管理、网络管理与编程语言方面的经验肯定没有坏处,但不是必需的。最为重要的是,你应该不畏惧探索新的环境,并有试用新工具的热情。另一件事情是,期望你知道如何进行简单、直接的Linux操作系统的安装。
内容组织
这里简要给出本书的组织方式。除了第1章之外,本书的每一章都包括一个或两个实际项目。鉴于第1章的内容主要用来填补你的Linux知识体系中可能存在的基础知识空白,因此其组织形式与其他章节有所不同。不需要这些基础知识吗?我敢肯定你在第2章就能找到很多有趣的新玩具。
伴随本书中的这些项目,我还将介绍你需要掌握的技能和工具。另外,每章中的项目通常都是基于之前章节所学习的技能来构建的。为了清楚地表述我的意思,这里给出一个非常完整的列表,其中分章列出了你将在本书中碰到的技能范畴及工具。
章 节 技 能 范 畴 工 具
第1章 Shell、分区及文件系统 Bash、man
第2章 虚拟化、文件系统 VirtualBox、LXC、apt、yum/dnf
第3章 安全性、远程连接 ssh、scp、systemctl、ps、grep
第4章 分区、文件系统及文本流 tar、dd、redirects、rsync、locate、split、chmod、chown
第5章 脚本、系统进程管理与安全性 脚本、cron、anacron、systemd 定时器
第6章 分区、文件系统及设备管理 parted、GRUB、mount、chroot
第7章 数据库、网络、包管理 PHP、MySQL(MariaDB)、Apache Web服务器、包依赖性
第8章 包管理、网络及安全性 snapd、文件系统、加密
第9章 网络、安全性、系统监控 Apache、iptables、/etc/group、SELinux、apt、yum/dnf、chmod、chown、Let抯 Encrypt
第10章 网络与安全性 firewalls、ssh、Apache、OpenVPN、sysctl、easy-rsa
第11章 系统监控、文本流及安全性 grep、sed、journalctl、rsyslogd、/var/log/、Tripwire
第12章 网络、分区及文件系统 nfs、smb、ln、/etc/fstab
第13章 系统监控、系统进程管理与网络 top、free、nice、nmon、tc、iftop、df、kill、killall、uptime
第14章 网络 ip、dhclient、dmesg、ping、nmap、traceroute、netstat、netcat (nc)
第15章 设备管理 lshw、lspci、lsusb、, modprobe、CUPS
第16章 脚本、虚拟化 Ansible、YAML、apt
关于代码
本书中,代码清单和普通文本行中包括大量的源代码示例。在这两种情况下,源代码都被设置为代码体,以区别于常规的文本内容。
很多情况下,我调整了原有源代码的格式,增加了换行符并重置了缩进符以适应可用的页面空间。在极少数情况下这种方法还不够用,代码中还会包括续行符标记()。另外,当在文字中描述一段源代码时,通常会从清单中移除该段代码的注释。很多清单中都有代码注释,以突出一些重要的概念。
Linux发行版本
当前在有效维护的Linux发行版本有很多。对于所有Linux发行版本而言,大多数的基础都是相同的,但总有一些版本是能够在“这里”运行而不能够在“那里”运行的。出于实践性的目的,我将主要聚焦于两个版本:Ubuntu和CentOS。为什么是这两个版本呢?因为这两个版本代表了不同的版本系列。Ubuntu与Debian、Mint、Kali Linux及其他版本是同源的,而CentOS则与红帽(Red Hat)企业Linux和Fedora同源。
这并不是说我不重视Arch Linux、SUSE以及Gentoo等其他发行版本,或者说你在本书中学到的东西对在其他版本的环境中开展工作没有帮助。但是,对Ubuntu和CentOS的完全覆盖意味着抓住了Linux馅饼中最大的那一块,我仅使用这两个版本就可以达到这个目标。
本书的论坛
欢迎访问Manning出版公司运营的网络论坛,在该论坛中你可以对本书进行评论、提出技术问题并获得来自作者和其他用户的帮助等。你可以通过链接https://forums.manning.com/forums/linux-in-action访问该论坛。你也可以通过链接https://forums.manning.com/forums/about了解Manning论坛及其管理规则。
Manning对广大读者的承诺是,在读者之间以及读者与作者之间提供一个进行有意义对话的平台。这并非对作者具体参与度的任何承诺,他们对论坛的贡献是自愿的(而且是免费的)。我们建议大家向作者咨询一些有挑战性的问题,以免他丧失了兴趣!只要本书还在发行,你就可以在出版商的网站上访问该论坛以及之前讨论的内容。
其他在线资源
遇到问题了吗?网络搜索是你最好的朋友,因为它可以快速地将你与现有的Linux指南、排除故障的专业知识关联到一起。但是,你不该忘记StackExchange系列网站,特别是serverfault.com。如果某个系统配置出现了错误或者网络已经丢失,那么其他人已经遇到过相同问题的概率会很高,可能有人已经在ServerFault上问过这个问题并得到了答案。找不到任何答案吗?那么请自己留言提问。LinuxQuestions.org和ubuntuforums.org也会很有帮助。
同时,喜欢视频培训的用户将在Pluralsight.com上找到范围非常广泛的Linux课程,其中包括了十多门我自己的课程。