前言是本系列文章的总纲,真诚地提醒大家先耐心认真地读一下,不看前言就无法理解作者的思路和逻辑,否则很可能会感到杂乱无章,其实这与操作系统乃至Linux本身就很庞杂的特点有关,故阅读前言就很重要了,这是一座作者和读者沟通理解的重要桥梁,更是令学习事半功倍并马上创造价值的秘诀所在。

正式开始之前,首先要走出一个误区,这个误区就是Ubuntu桌面做得很好,但不适合用于服务器应用。

这个结论就比较费解了,大家熟悉的麦当劳,维基百科都是Ubuntu server驱动的,据W3techs的统计,互联网上大约38.1%[1]的主机是以Ubuntu作为服务器系统。

当然,国内红帽和CentOS比较流行一点,这一点笔者从不否认,笔者本人从红帽5.0(不是RHEL 5.0)就开始使用,免费的付费的都使用过,也通过了RHCE认证,对红帽系统十分熟悉,也算红帽的老用户了,但更深知Linux不是只有红帽,尺有所长,寸有所短,对于个人用户而言,无论是工作站应用还是服务器应用,Ubuntu更加合适一些。

不同版本的Linux之间的差异本来不是很大,且选择Linux发行版本身就是个仁者见仁,智者见智的,随应用场景不同而不同,个人多年经验是,一个操作系统最重要的是安全,稳定,使用便捷,能够满足用户需求,满足这几点就是一个不错的选择。

无论是RHEL,SELS,Ubuntu还是各种社区版本,每个发现版本都有其系统特性,而系统特性则应该是用户或CTO最应关注的,发掘系统特性以满足业务需求才是上策,如在云计算领域,OpenStack应用上,就世界范围而言,Ubuntu就比红帽有优势。

Ubuntu作为服务器系统,应用丰富,这一点是RHEL和CentOS所无法匹敌的,部署和配置便捷高效,并且继承了Debian软件包体系稳定的特性,尤其是LTS版本。

这个专栏命名为《活学活用Ubuntu server 18.04》,活学就是不是什么Linux知识都学,而是抓住重点和关键内容,系统地掌握Linux知识体系(不一定每一部分都会深入),更为重要的是,并将所学知识和最新的Ubuntu server 18.04相结合,学以致用,这就是活用。

循序渐进地将学和用结合起来,边学边用,学用结合,理论知识的学习内容少而精且系统,实践项目又贴近用户或企业应用实际,是高效学习和实践Ubuntu server的首选教程。

此外由于操作系统所涉及的内容繁多庞杂,读者的水平和需求千差万别,需求的内容及深度也不尽相同,故让每位读者都满意真的很难,故所涉及的每部分内容不会太深,不过总贴近应用实际,尽量在二者之间找到一个平衡点,不求最权威,但求简洁,易懂和实用。

本专题文章所有操作都针对Ubuntu server 18.04定制,在Ubunu 18.04系统中反复测试多次,并提供相关虚拟机,确保读者照葫芦画瓢就可以得到相同的结果,此外,扩展阅读进一步深入本章的核心内容,在线资源提供了与本章相关资源,如制作好的虚拟机,节省读者时间,重点强调的是,本书所引用的文字和图片的原始出处都在附录参考文献中一一记录,所查阅的在线文献也全部列出,方便读者进一步学习研究,除此之外的所有文字和图片均属作者原创。

适用读者
本专栏适合所有所有Linux的学习者和使用者,目标是以最精炼的语言及最简单的方式将活生生的Ubunu应用呈现给大家,尤其适合以下几类读者:
1.Ubunu服务器学习者和使用者
Ubunu系统应该是最易于使用Linux发行版本之一,也是最适合做为个人服务器的系统,本文通过Ubuntu server的活学活用帮助大家快速高效地掌握Ubunu server的使用和巧用,安全和高效Ubunu有那些技巧,并在学习和使用过程中少走弯路,在工作,学习中实实在在地将Ubunu用起来,让大家真真正正地喜欢上它,并变成学习和工作形影不离的得力助手。至于Ubunu玩家,多数是喜欢尝试新鲜事物,尤其喜欢折腾,十分享受尝试和折腾带来的快感,这本书中大量新鲜和有趣的东东最适合他们了,扶上马,再送一程,不走弯路地开始Linux学习和职业之路,Ubuntu就该这么学。

2.服务器管理员(System Engineer)
Debian和Ubunu服务器是互联网上十分流行的服务器系统,根据Linode(美国著名的Linux VPS 虚拟服务器提供商)的统计,其托管的服务器有近80%的采用Debian和Ubunu系统,而管理它们最理想的平台就是Ubunu桌面版。相同的软件包管理体系大大为系统管理员的工作带来了很大的便利,更具体来说,无论是从编译好的软件仓库安装,卸载或升级软件包,还是利用源代码编译都十分便捷和高效。而学习Debian/Ubunu服务器的管理和运维,Ubunu则是一个很好的切入点,丰富的应用,为日后的工作打下坚实的基础。

3.数据库管理员(Database Administrator)
数据库管理员尽管主要职责是负责数据库的维护,但数据库软件本身却与操作系统密不可分,故一个优秀的数据库管理员也需要对Linux系统知识和网络服务胸有成竹,这样数据库才能更加稳固和高效。

4.DevOps
这个词不好翻译,根据维基百科的定义"DevOps是Development和Operations的组合词,是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。" 简而言之就是,开发和运维相融合,利用各种自动化工具和开发相关程序,打破开发和运营的鸿沟,将两者紧密结合并无缝对接,Ubuntu完全可以满足DevOps的需求,并能够将二者充分融合的操作系统,本书所涉及的工作站,服务器应用和安全知识和技能可以帮助DevOps更上一层楼。

本文排版约定
本书使用下列排版格式约定,请读者认真阅读:


1.注释符号(#)
命令或系统输出关键的地方会有注释,这里采用Shell script的注释习惯,注释内容以#号开始,需要注意的是Linux系统中超级用户的提示符也采用#,但本书默认采用普通用户身份操作,且命令不含提示符。此外,如有其他设备,如Cisco路由器或交换机,其操作命令和Linux比较类似,为了有所区别,采用类C注释方式//,最后还有SQL语言,注释也比较特殊,为--。
cd /                                #切换到根目录/
sudo mkdir /nextcloud               #创建nextcloud目录

交换器路由器命令行
en                                  //进入交换机或路由器特权模式
conf t                              //切换到交换机或路由器配置模式

SQL语言注释
CREATE DATABASE wordpress;          --创建名为wordpress的数据库
FLUSH PRIVILEGES;                   --即时刷新授权表

2.命令输出示例
本书命令及其相关输出实例如下:
sudo lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:        18.04
Codename:       bionic

3.斜体中文
斜体中文表示提示与技巧,很容易和正文区别开来,补充相关的背景知识和使用技巧。

4.中译名和英文缩写
由于计算机术语中译名比较灵活,故本书所给出的中译名都会给出英文原词,且为了便于读者接受,中译名尽量采用相对规范的维基百科译名,中译名及英文缩写范例如下:
Linux内核(Linux kernel)                       #中文名(英文名)
主引导记录(Master Boot Record,MBR)       #中文名(英文名,英文缩写)

6.范例约定
命令行默认当前目录:普通用户henry的家目录/home/henry
域名地址范例:example.com          #文中所有示例的域名均采用此名称,如果添加主机名,则为hostname.example.com,如ldap.example.com
用户密码范例:12345678             #文中所有示例的密码均采用此密码
示例程序范例:Hello World          #文中默认示例程序除非例外均为Hello World,无论采用那种编程语言,因为本身的核心不是编程
默认编辑器:nano或vim              #文中默认编辑器为nano或vim,建议初学者还从nano编辑器入手

7.提示和窍门
相关的提示和窍门的内容以下列方式给出:
Tips:快速清除讨厌的锁文件
使用apt/apt-get/aptitude安装软件时,经常得到如下错误:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

提示无法获得锁,这种情况可能是有其他程序也在进行安装相关的操作,更有可能是其他程序锁定但程序退出时却没有即时删掉其创建的锁定文件造成的,解决方法也很简单粗暴,运行如下命令直接删除即可:
sudo rm -rf /var/lib/dpkg/lock          #如果提示目录不同,方法相同,都是删除lock文件

如果删除后,依然报同样的错误,那原因很有可能是其他程序正在进行安装相关的操作,需要等待,或找到该程序并结束了它(不推荐),有时更换一个程序也是可以的,如apt-get报错,但用apt或aptitude做同样的操作就可以通过,很神奇但的确发生过。

除非特殊或必要本书都采用以上都是默认的约定进行操作。

本专栏配套资源
Ubuntu官方下载:
http://old-releases.ubuntu.com/releases/18.04.1/

Github资源:
国内网盘链接:
提取码:

致谢
首先,感谢自由软件的运动的发起人Richard Stallman先生,Linux的创始人Linus先生,感谢他的身体力行和为自由软件付出的巨大努力才成就了自由软件的今天,才有Linux操作系统成为今日软件创新之主流。

特别感谢Ubunu项目的发起人Mark Shuttleworth先生十二年来持之以恒的提升Linux桌面的用户体验,使得大家可以通过Ubunu这个世界上最为易用和最为流行Linux发行版本快速进入开源和自由软件的世界。

感谢分布全球的各个开源项目开发者及参与者,正因为你们的无私奉献使得开源世界如此丰富和美妙!

其次,还要感谢51CTO团队的支持,鼓励和指点,使得本专栏能够更加完美地呈现给读者并如此快速地与读者见面。

再次由衷地感谢!

最后,还要感谢那些热心读者在各大电商网站对本书中肯的建议,批评,鼓励和指正,使得本系列更加完善和完美,也让笔者心中倍感欣慰,感谢你们!

何晓龙于多伦多

2019年2月26日

[1]Usage statistics and market share of Linux for websites
https://w3techs.com/technologies/details/os-linux/all/all