目 录
第1章 开启Linux系统管理与运维的大门 1
1.1 你必须知道的Linux版本问题 1
1.1.1 Linux的内核版本 1
1.1.2 Linux的发行版本 2
1.2 CentOS之于Linux 2
1.3 CentOS 8的特色 3
1.3.1 Web控制台Cockpit 3
1.3.2 文件系统和存储 3
1.3.3 联网 4
1.3.4 OpenSSH 4
1.3.5 虚拟化 4
1.4 Linux运维工程师的技能 4
1.4.1 系统和系统服务 5
1.4.2 网络知识 5
1.5 小结 6
第2章 跟我学CentOS 8的安装 7
2.1 安装CentOS 8必须知道的基础知识 7
2.1.1 磁盘分区 7
2.1.2 静态分区的缺点及逻辑卷管理简介 8
2.1.3 虚拟化和VMware Workstation简介 9
2.1.4 下载CentOS 8 10
2.2 安装CentOS 8 11
2.2.1 创建虚拟机 11
2.2.2 用光盘安装CentOS 8 13
2.2.3 用U盘安装CentOS 8 21
2.2.4 Windows 10 + CentOS 8双系统安装 22
2.2.5 网络安装 25
2.3 Linux的登录 26
2.3.1 首次配置与本地登录 26
2.3.2 远程登录SSH和Xshell工具的使用 28
2.3.3 退出登录 31
2.3.4 重启和关机 31
2.3.5 重置密码 32
2.4 初学者安装过程中遇到的问题 33
2.4.1 Linux分区是否会覆盖原有Windows系统 33
2.4.2 如何安装多个Linux发行版 33
2.4.3 如何删除双系统中的Linux系统 34
2.4.4 主机连不上虚拟机安装的Linux系统 35
2.5 Linux的目录结构 36
2.6 小结 38
第3章 运维必备的网络管理技能 39
3.1 网络管理协议介绍 40
3.1.1 TCP/IP概述 40
3.1.2 UDP与ICMP协议简介 41
3.2 网络管理命令 42
3.2.1 检查网络是否通畅或网络连接速度:ping 42
3.2.2 配置网络或显示当前网络接口状态:ifconfig 44
3.2.3 显示添加或修改路由表:route 46
3.2.4 复制文件至其他系统:scp 46
3.2.5 复制文件至其他系统:rsync 47
3.2.6 显示网络连接、路由表或接口状态:netstat 49
3.2.7 探测至目的地址的路由信息:traceroute 51
3.2.8 测试、登录或控制远程主机:telnet 53
3.2.9 下载网络文件:wget 53
3.3 Linux网络配置 55
3.3.1 Linux网络配置相关文件 55
3.3.2 配置Linux系统的IP地址 55
3.3.3 设置主机名 57
3.3.4 设置默认网关 57
3.3.5 设置DNS服务器 57
3.4 Linux 默认防火墙firewalld 58
3.4.1 firewalld的特性 58
3.4.2 firewalld的基本术语 58
3.4.3 firewalld的使用 59
3.5 Linux 防火墙nftables 61
3.5.1 Linux内核防火墙的工作原理 61
3.5.2 Linux软件防火墙nftables 62
3.5.3 nftables配置实例 70
3.6 Linux高级网络配置工具 73
3.6.1 高级网络管理工具iproute2 73
3.6.2 网络数据采集与分析工具tcpdump 75
3.7 动态主机配置协议 78
3.7.1 DHCP的工作原理 79
3.7.2 配置DHCP服务器 79
3.7.3 配置DHCP客户端 81
3.8 Linux域名服务DNS 81
3.8.1 DNS简介 82
3.8.2 DNS服务器配置 82
3.8.3 DNS服务测试 86
3.9 小结 87
第4章 路由管理 88
4.1 认识路由 88
4.1.1 路由的基本概念 88
4.1.2 路由的原理 89
4.1.3 Linux系统中的路由表 90
4.1.4 静态路由和动态路由 90
4.2 配置Linux静态路由 91
4.2.1 配置网络接口地址 91
4.2.2 接口IP地址与直连路由 94
4.2.3 route命令 95
4.2.4 Linux路由器配置实例 97
4.3 Linux的策略路由 98
4.3.1 策略路由的概念 98
4.3.2 路由表管理 99
4.3.3 规则与路由管理 101
4.3.4 策略路由应用实例 102
4.4 小结 104
第5章 文件共享服务 105
5.1 网络文件系统(NFS) 105
5.1.1 NFS 简介 105
5.1.2 配置NFS服务器 106
5.1.3 配置NFS客户端 110
5.2 文件服务器Samba 110
5.2.1 Samba服务简介 110
5.2.2 Samba服务的安装与配置 110
5.3 FTP服务器 113
5.3.1 FTP服务概述 113
5.3.2 vsftp的安装与配置 114
5.3.3 proftpd的安装与配置 119
5.4 小结 123
第6章 搭建LAMP服务 124
6.1 Apache HTTP服务的安装与配置 124
6.1.1 HTTP协议简介 124
6.1.2 Apache服务的安装、配置与启动 126
6.1.3 Apache基于IP的虚拟主机配置 135
6.1.4 Apache基于端口的虚拟主机配置 138
6.1.5 Apache基于域名的虚拟主机配置 140
6.1.6 Apache安全控制与认证 142
6.2 MySQL服务的安装与配置 147
6.2.1 MySQL的版本选择 148
6.2.2 MySQL的版本命名机制 148
6.2.3 MySQL yum安装 148
6.2.4 MySQL程序介绍 150
6.2.5 MySQL配置文件介绍 151
6.2.6 MySQL启动与停止 153
6.3 PHP的安装与配置 158
6.4 LAMP集成安装、配置与测试实战 158
6.5 MySQL日常维护 163
6.5.1 MySQL权限管理 163
6.5.2 MySQL日志管理 167
6.5.3 MySQL备份与恢复 172
6.5.4 MySQL复制 178
6.5.5 MySQL复制搭建过程 180
6.6 小结 185
第7章 搭建LNMP服务 186
7.1 LNMP服务的安装与管理 186
7.1.1 Nginx的安装与管理 186
7.1.2 PHP的安装 189
7.2 Nginx负载均衡与反向代理 189
7.2.1 Nginx负载均衡设置 189
7.2.2 Nginx反向代理配置 191
7.3 集成Nginx与PHP 192
7.3.1 spawn-fcgi集成方式 192
7.3.2 php-fpm集成方式 195
7.4 LNMP实战 196
7.4.1 第一个PHP程序 196
7.4.2 数据库连接 197
7.4.3 记录查询 198
7.4.4 增加分页 201
7.4.5 添加记录 204
7.4.6 修改记录 206
7.4.7 删除记录 210
7.5 小结 214
第8章 Docker 215
8.1 Docker三大概念——镜像、仓库、容器 215
8.2 安装Docker 216
8.3 Docker仓库和加速器 217
8.4 Docker基础使用命令 218
8.4.1 搜索镜像 218
8.4.2 拉取镜像 218
8.4.3 查看本地镜像列表 219
8.4.4 运行容器 219
8.4.5 停止容器 220
8.4.6 重新运行容器 220
8.4.7 连接MySQL数据库 220
8.4.8 开机自动启动容器 222
8.4.9 删除容器 222
8.4.10 删除镜像 222
8.5 Docker搭建LNMP实战 223
8.5.1 Docker运行MySQL 223
8.5.2 Docker运行PHP-FPM 224
8.5.3 Docker运行Nginx 225
8.6 认识Docker Compose 226
8.6.1 安装Docker Compose 226
8.6.2 Docker Compose搭建LNMP实战 226
8.7 小结 228
第9章 LVS集群 229
9.1 集群技术简介 229
9.2 LVS 集群介绍 230
9.2.1 3种负载均衡技术 230
9.2.2 负载均衡调度算法 233
9.3 LVS集群的体系结构 234
9.4 LVS负载均衡配置实例 235
9.4.1 基于NAT模式的LVS的安装与配置 235
9.4.2 基于DR模式的LVS的安装与配置 239
9.4.3 基于IP隧道模式的LVS的安装与配置 241
9.5 利用集群搭建高可用MySQL平台 243
9.5.1 高可用MySQL平台的功能 243
9.5.2 可选方案对比 244
9.5.3 高可用MySQL平台实现方案 245
9.5.4 搭建MySQL集群 245
9.5.5 搭建负载均衡LVS 254
9.5.6 搭建双机热备HA 258
9.5.7 项目测试 262
9.6 小结 264
第10章 Kubernetes集群搭建 265
10.1 Kubernetes集群 265
10.1.1 什么是Kubernetes 265
10.1.2 Kubernetes集群能解决什么问题 266
10.1.3 Kubernetes体系架构 266
10.2 环境准备 268
10.2.1 硬件配置 268
10.2.2 设置主机名 268
10.2.3 设置主机名解析 269
10.2.4 关闭防火墙、SELinux和交换分区 270
10.2.5 配置内核参数,将桥接的IPv4流量传递到iptables链 271
10.2.6 配置国内的软件源 272
10.3 软件安装 273
10.3.1 安装Docker引擎 273
10.3.2 安装Kubernetes组件 275
10.4 部署Master节点 275
10.4.1 初始化集群 275
10.4.2 配置kubectl工具 276
10.4.3 部署网络 277
10.5 部署Node节点 278
10.5.1 部署Node节点并加入集群 278
10.5.2 查看节点 279
10.6 部署应用 279
10.6.1 通过deployment部署应用 279
10.6.2 通过服务访问应用 280
10.7 部署图形化管理工具Dashboard 282
10.7.1 创建Dashboard的YAML配置文件 282
10.7.2 部署Dashboard 284
10.7.3 访问Dashboard 286
10.8 小结 287
第11章 高可用性集群:双机热备 288
11.1 高可用性集群技术 288
11.1.1 可用性和集群 288
11.1.2 集群的分类 289
11.2 双机热备开源软件Pacemaker 289
11.2.1 Pacemaker概述 290
11.2.2 Pacemaker的安装与配置 290
11.2.3 Pacemaker资源配置 294
11.2.4 Pacemaker测试 297
11.3 双机热备软件Keepalived 299
11.3.1 Keepalived概述 299
11.3.2 Keepalived的安装与配置 300
11.3.3 Keepalived的启动与测试 302
11.4 小结 303
第12章 KVM虚拟化和oVirt虚拟化管理平台 304
12.1 KVM虚拟化 304
12.1.1 安装KVM虚拟化 304
12.1.2 KVM虚拟机的管理方法 306
12.1.3 使用图形工具创建虚拟机 308
12.1.4 使用virt-install创建虚拟机 311
12.2 oVirt虚拟化管理平台 317
12.2.1 oVirt-engine虚拟化管理平台概述 317
12.2.2 oVirt管理平台的安装 318
12.2.3 oVirt Node安装 320
12.2.4 oVirt Node设置 324
12.2.5 oVirt虚拟化管理平台设置 325
12.2.6 配置资源 328
12.2.7 建立虚拟机 332
12.3 小结 334
第13章 GlusterFS存储 335
13.1 GlusterFS介绍 335
13.1.1 分布式文件系统 335
13.1.2 GlusterFS概述 338
13.1.3 GlusterFS集群的模式 339
13.2 GlusterFS部署和应用 342
13.2.1 GlusterFS的安装 342
13.2.2 配置服务和集群 345
13.2.3 添加磁盘到集群 346
13.2.4 添加不同模式的GlusterFS磁盘 348
13.2.5 在Linux中使用GlusterFS存储 349
13.3 小结 351
第14章 配置OpenStack私有云 352
14.1 OpenStack概况 352
14.2 OpenStack的系统架构 353
14.2.1 OpenStack的体系架构 353
14.2.2 OpenStack的部署方式 354
14.2.3 计算模块Nova 355
14.2.4 分布式对象存储模块Swift 356
14.2.5 虚拟机镜像管理模块Glance 357
14.2.6 身份认证模块Keystone 357
14.2.7 控制台Horizon 358
14.3 OpenStack的主要部署工具 358
14.3.1 Fuel 358
14.3.2 TripleO 359
14.3.3 RDO 359
14.3.4 DevStack 359
14.4 通过RDO部署OpenStack 359
14.4.1 部署前的准备 360
14.4.2 配置安装源 360
14.4.3 安装PackStack 360
14.4.4 安装OpenStack 361
14.5 管理OpenStack 364
14.5.1 登录仪表盘 364
14.5.2 用户设置 366
14.5.3 管理用户 367
14.5.4 管理镜像 368
14.5.5 管理云主机类型 370
14.5.6 管理网络 371
14.5.7 管理实例 378
14.6 小结 385
第15章 配置OpenNebula云平台 386
15.1 OpenNebula概述 386
15.1.1 云计算概述 386
15.1.2 OpenNebula概述 387
15.2 OpenNebula的安装 388
15.2.1 控制端环境配置 388
15.2.2 控制端安装 389
15.2.3 客户端安装 392
15.2.4 配置控制端和客户端 392
15.3 OpenNebula的配置与应用 398
15.3.1 配置VDC和集群 398
15.3.2 添加KVM主机 400
15.3.3 建立映像 402
15.3.4 添加虚拟网络和模板 405
15.3.5 创建并访问虚拟机 406
15.4 小结 408
附录A Linux常用命令示例 409
A.1 文件管理 409
A.1.1 复制文件:cp 409
A.1.2 移动文件:mv 411
A.1.3 创建文件或修改文件时间:touch 412
A.1.4 删除文件:rm 413
A.1.5 查看文件 415
A.1.6 查看文件或目录:find 418
A.1.7 过滤文本:grep 419
A.1.8 比较文件差异diff 423
A.1.9 在文件或目录之间创建链接:ln 424
A.1.10 显示文件类型:file 425
A.1.11 分割文件:split 426
A.1.12 合并文件:join 428
A.1.13 文件权限:umask 429
A.1.14 文本操作:awk和sed 430
A.2 目录管理 431
A.2.1 显示当前工作目录:pwd 431
A.2.2 创建目录:mkdir 431
A.2.3 删除目录:rmdir 432
A.2.4 改变工作目录:cd 433
A.2.5 查看工作目录文件:ls 434
A.2.6 查看目录树:tree 436
A.2.7 打包或解包文件:tar 437
A.2.8 压缩或解压缩文件和目录:zip/unzip 438
A.2.9 压缩或解压缩文件和目录:gzip/gunzip 439
A.2.10 压缩或解压缩文件和目录:bzip2/bunzip2 440
A.3 系统管理 441
A.3.1 查看命令帮助:man 441
A.3.2 导出环境变量:export 442
A.3.3 查看历史记录:history 443
A.3.4 显示或修改系统时间与日期:date 444
A.3.5 清除屏幕:clear 445
A.3.6 查看系统负载:uptime 445
A.3.7 显示系统内存状态:free 445
A.3.8 转换或复制文件dd 446
A.4 任务管理 447
A.4.1 单次任务:at 447
A.4.2 周期任务:crond 448