随着开源技术的不断进步与创新,在整个IT行业中,越来越多的企业愿意采用开源产品,而基于Linux的操作系统为这些开源产品提供了一个极佳的操作平台。本书将基于Linux操作系统这样一个基础平台,讲解如何实现各种开源产品的应用案例。全书主要从运维工作中的应用服务入手,全面讲解Linux操作系统及各种软件服务的运维方案。 现在的商业环境是一个充满竞争的环境,很多企业的业务量在不断地增长,对服务质量的要求也越来越高。特别是互联网企业,为了满足客户更高的要求,提升客户使用体验,IT?部门维护的设备往往数以万计,如此庞大的设备维护量,通常会让IT管理人员头疼不已。本书介绍的自动化运维内容可以让我们快速掌握简单的大规模批量运维方法。仅仅依靠自动化运维还不足以发挥出这些设备的能效,因此,我们还需要将各个服务器设备有机地结合在一起,为客户提供更加安全、快捷、高效的服务,于是集群技术应运而生。本书最后将围绕集群技术介绍目前比较流行的开源产品部署案例。
		
	
丁明一达内集团云计算、数据分析与商业智能教学研发总监、开源技术推广者;红帽认证架构师(RHCA)、红帽认证高级讲师(RHCI)、华为授权讲师(HCSI);曾任职于中国电信、鹏博士等多家IT企业,并创办多个企业,有十余年IT行业经验;精通Linux系统、Shell脚本编程、数据库、各大云计算产品、Docker容器技术、分布式存储技术,拥有丰富的虚拟化技术使用经验,数据分析经验,对企业集群存储环境及高性能、高可用架构有深入的研究,著有畅销图书《Linux运维之道》《Linux Shell核心编程指南》。
第1篇  基础知识
第1章  部署操作系统	2
1.1 通过光盘安装Linux操作系统	2
1.1.1 操作系统版本的选择	2
1.1.2 光盘安装实例	3
1.2 无人值守自动安装Linux操作系统	11
1.2.1 大规模部署案例	11
1.2.2 PXE简介	12
1.2.3 Kickstart技术	13
1.2.4 配置安装服务器	13
1.2.5 自动化安装案例	15
1.3 常见问题分析	20
第2章  命令工具	24
2.1 基本命令	25
2.1.1 目录及文件的基本操作	25
2.1.2 查看文件内容	29
2.1.3 链接文件	32
2.1.4 压缩及解压	33
2.1.5 命令使用技巧	34
2.1.6 帮助	35
2.2 Vim文档编辑	37
2.2.1 Vim工作模式	37
2.2.2 Vim光标操作	38
2.2.3 Vim编辑文档	39
2.2.4 Vim查找与替换	39
2.2.5 Vim保存与退出	40
2.2.6 Vim小技巧	40
2.3 账户与安全	41
2.3.1 账户及组的概念	41
2.3.2 创建账户及组	42
2.3.3 修改账户及组	43
2.3.4 删除账户及组	44
2.3.5 账户与组文件解析	45
2.3.6 文件及目录权限	46
2.3.7 账户管理案例	48
2.3.8 ACL访问控制权限	50
2.4 存储管理	51
2.4.1 硬盘分区	52
2.4.2 格式化与挂载文件系统	56
2.4.3 LVM逻辑卷概述	58
2.4.4 创建LVM分区实例	60
2.4.5 修改LVM分区容量	63
2.4.6 删除LVM分区	64
2.4.7 RAID硬盘阵列概述	65
2.4.8 RAID级别	65
2.4.9 创建与管理软件RAID实例	69
2.4.10 RAID性能测试	72
2.4.11 RAID故障模拟	73
2.5 软件管理	73
2.5.1 Linux常用软件包类型	73
2.5.2 RPM软件包管理	74
2.5.3 使用DNF安装软件	76
2.5.4 DNF使用技巧	80
2.5.5 源码编译安装软件	81
2.5.6 常见问题分析	82
2.5.7 systemd服务管理	83
2.6 计划任务	88
2.6.1 at一次性计划任务	88
2.6.2 cron周期性计划任务	89
2.6.3 计划任务权限	90
2.6.4 通过systemd定制计划任务	90
2.7 性能监控	92
2.7.1 监控CPU使用情况——uptime命令	92
2.7.2 监控内存及交换分区使用情况——free命令	92
2.7.3 监控硬盘使用情况——df命令	93
2.7.4 监控网络使用情况——ip和ss命令	94
2.7.5 监控进程使用情况——ps和top命令	96
2.8 网络配置	97
2.8.1 命令行配置网络参数	97
2.8.2 修改系统配置文件配置网络参数	101
2.8.3 网络故障排错	103
2.9 内核模块	105
2.9.1 内核模块存放位置	105
2.9.2 查看已加载内核模块	106
2.9.3 加载与卸载内核模块	106
2.9.4 修改内核参数	107
第3章  自动化运维	109
3.1 Shell简介	109
3.2 Bash功能介绍	110
3.2.1 历史命令	110
3.2.2 命令别名	110
3.2.3 管道与重定向	111
3.2.4 快捷键	112
3.3 Bash使用技巧	112
3.3.1 重定向技巧	112
3.3.2 命令序列使用技巧	113
3.3.3 作业控制技巧	114
3.3.4 花括号{}的使用技巧	114
3.4 变量	115
3.4.1 自定义变量	115
3.4.2 变量的使用范围	116
3.4.3 环境变量	116
3.4.4 位置变量	117
3.4.5 变量的展开替换	118
3.4.6 数组	119
3.4.7 算术运算与测试	120
3.5 Shell引号	122
3.5.1 反斜线	122
3.5.2 单引号	123
3.5.3 双引号	123
3.5.4 反引号	123
3.6 正则表达式	123
3.6.1 基本正则表达式	124
3.6.2 扩展正则表达式	127
3.6.3 POSIX规范	128
3.6.4 Perl正则表达式	129
3.7 Sed	130
3.7.1 Sed简介	130
3.7.2 Sed基本语法格式	130
3.7.3 Sed入门范例	131
3.7.4 Sed指令与脚本	133
3.7.5 Sed高级应用	139
3.8 Awk	142
3.8.1 Awk简介	142
3.8.2 Awk工作流程	142
3.8.3 Awk基本语法格式	143
3.8.4 Awk操作指令	144
3.8.5 Awk高级应用	148
3.9 Shell脚本	151
3.9.1 脚本格式	151
3.9.2 运行脚本的方式	152
3.9.3 Shell脚本简单案例	153
3.9.4 判断语句的应用	156
3.9.5 循环语句的应用	159
3.9.6 控制语句的应用	163
3.9.7 Shell函数的应用	164
3.9.8 综合案例	166
3.9.9 图形脚本	169
3.10 Ansible	171
3.10.1 准备环境	172
3.10.2 Ansible ad-hoc命令	176
3.10.3 Ansible模块	177
3.10.4 Ansible Playbook	185
第2篇  网络服务
第4章  搭建网络服务	192
4.1 NFS文件共享	192
4.1.1 NFS服务器配置	193
4.1.2 客户端访问NFS共享	195
4.1.3 NFS高级设置	196
4.1.4 常见问题分析	199
4.2 Samba文件共享	200
4.2.1 快速配置Samba服务器	201
4.2.2 访问Samba共享	202
4.2.3 配置文件详解	204
4.2.4 Samba应用案例	205
4.2.5 常见问题分析	208
4.3 vsftpd文件共享	209
4.3.1 FTP的工作模式	210
4.3.2 安装与管理vsftpd	211
4.3.3 配置文件解析	211
4.3.4 账号权限	213
4.3.5 vsftpd应用案例	213
4.3.6 常见问题分析	217
4.4 ProFTPD文件共享	218
4.4.1 安装ProFTPD软件	218
4.4.2 配置文件解析	219
4.4.3 ProFTPD权限设置	220
4.4.4 虚拟用户应用案例	220
4.4.5 常见问题分析	224
4.5 SVN版本控制	224
4.5.1 SVN简介	224
4.5.2 四种服务器对比	226
4.5.3 安装SVN软件	227
4.5.4 svnserve服务器搭建	227
4.5.5 svnserve+SSH服务器搭建	233
4.5.6 Apache+SVN服务器搭建	234
4.5.7 多人协同编辑案例	236
4.5.8 常见问题	240
4.6 Git版本控制	241
4.6.1 部署Git远程版本服务器	242
4.6.2 客户端操作版本仓库	243
4.6.3 HEAD指针	246
4.6.4 Git分支	247
4.6.5 Git标签	253
4.6.6 免密登录Git远程版本服务器	254
4.6.7 常见问题分析	255
4.7 网络存储服务器	255
4.7.1 iSCSI网络存储	256
4.7.2 Rsync文件同步	259
4.7.3 Rsync+Inotify实现文件自动同步	265
4.8 DHCP服务器	271
4.8.1 安装软件	272
4.8.2 配置文件解析	272
4.8.3 DHCP应用案例	273
4.8.4 常见问题分析	275
4.9 DNS域名服务器	276
4.9.1 DNS简介	276
4.9.2 安装DNS软件	278
4.9.3 BIND配置文件解析	278
4.9.4 部署主域名服务器	282
4.9.5 部署从域名服务器	285
4.9.6 DNS视图应用案例	287
4.9.7 常见问题分析	289
4.10 Apache网站服务器	290
4.10.1 Apache简介	290
4.10.2 安装Apache软件	291
4.10.3 配置文件解析	292
4.10.4 虚拟主机应用案例	297
4.10.5 网站安全应用案例	298
4.10.6 常见问题分析	301
4.11 Nginx网站服务器	302
4.11.1 Nginx简介	302
4.11.2 安装Nginx软件	302
4.11.3 配置文件解析	305
4.11.4 虚拟主机应用案例	307
4.11.5 SSL网站应用案例	310
4.11.6 HTTP响应状态码	311
4.12 数据库基础	312
4.12.1 MySQL数据库简介	312
4.12.2 安装MySQL	313
4.12.3 MySQL管理工具	314
4.12.4 数据库定义语言	319
4.12.5 数据库操作语言	323
4.12.6 数据库查询语言	325
4.12.7 MySQL与安全	327
4.12.8 MySQL数据库备份与还原	330
4.13 动态网站架构案例	332
4.13.1 论坛系统应用案例	332
4.13.2 博客系统应用案例	338
第5章  系统监控	344
5.1 Zabbix监控系统	344
5.1.1 简介	344
5.1.2 Zabbix基础监控案例	345
5.1.3 Zabbix监控案例进阶	366
5.2 Prometheus监控系统	388
5.2.1 Prometheus简介	388
5.2.2 Prometheus监控应用案例	389
第6章  网络安全	400
6.1 防火墙	400
6.1.1 firewalld简介	401
6.1.2 firewall-cmd命令	402
6.2 SELinux简介	406
6.2.1 SELinux配置文件	406
6.2.2 SELinux软件包	408
6.2.3 SELinux安全上下文	408
6.2.4 SELinux排错	409
6.2.5 修改安全上下文	411
6.2.6 查看与修改布尔值	413
6.2.7 SELinux应用案例	414
6.2.8 httpd相关的SELinux安全策略	414
6.2.9 FTP相关的SELinux安全策略	415
6.2.10 MySQL相关的SELinux安全策略	416
6.2.11 NFS相关的SELinux安全策略	417
6.2.12 Samba相关的SELinux安全策略	418
6.3 OpenVPN	419
6.3.1 OpenVPN简介	419
6.3.2 安装OpenVPN服务	419
6.3.3 OpenVPN客户端	423
6.4 WireGuard	428
6.4.1  WireGuard简介	428
6.4.2  安装WireGuard	429
6.4.3  配置WireGuard	431
第3篇  高级应用
第7章  虚拟化与容器技术	436
7.1 虚拟化产品对比	436
7.1.1 VMware虚拟化技术	437
7.1.2 Xen虚拟化技术	437
7.1.3 KVM虚拟化技术	438
7.2 KVM虚拟化应用案例	438
7.2.1 安装KVM组件	438
7.2.2 创建虚拟机、安装操作系统	439
7.2.3 监控虚拟机操作系统	444
7.2.4 命令工具使用技巧	446
7.2.5 虚拟存储与虚拟网络	451
7.3 容器技术	458
7.3.1 安装容器管理软件	461
7.3.2 镜像与容器管理	461
7.3.3 自定义镜像	465
7.3.4 发布服务	467
7.3.5 存储卷	468
第8章  集群及高可用	470
8.1 集群	470
8.1.1 LVS负载均衡简介	470
8.1.2 基于NAT的LVS负载均衡	471
8.1.3 基于TUN的LVS负载均衡	472
8.1.4 基于DR的LVS负载均衡	473
8.1.5 LVS负载均衡调度算法	474
8.1.6 部署LVS	475
8.1.7 LVS负载均衡应用案例	478
8.1.8 常见问题分析	484
8.2 Keepalived双机热备	484
8.2.1 Keepalived简介	484
8.2.2 VRRP简介	485
8.2.3 安装Keepalived服务	485
8.2.4 配置文件解析	486
8.2.5 Keepalived+LVS应用案例	487
8.2.6 常见问题分析	494
8.3 Squid代理服务器	495
8.3.1 Squid简介	495
8.3.2 安装Squid服务	495
8.3.3 常见的代理服务器类型	496
8.3.4 配置文件解析	497
8.3.5 Squid应用案例	498
8.4 HAProxy负载均衡	502
8.4.1 HAProxy简介	502
8.4.2 配置文件解析	503
8.4.3 HAProxy应用案例	505
8.5 Nginx高级应用	509
8.5.1 Nginx负载均衡简介	509
8.5.2 Nginx负载均衡案例	511
8.5.3 Nginx rewrite规则	515
8.6 MySQL高可用	518
8.6.1 MySQL复制简介	518
8.6.2 一步一步实现MySQL复制	519