图书目录

目 录

基础篇

第1章

Linux系统概述

1.1 认识Linux系统 2

1.1.1 Linux系统的出现 2

1.1.2 Linux系统的特点 2

1.1.3 Linux的结构 3

1.1.4 Linux发行版 4

1.2 Linux服务器系统安装流程详解 5

1.2.1 版本选择及硬件要求 5

1.2.2 系统映像的下载 6

1.2.3  启动介质的制作 6

1.2.4  虚拟机的准备 7

动手练 Linux系统的安装 8

1.3 登录界面与Shell命令行简介 12

1.3.1 本地控制台与TTY终端 12

1.3.2 Shell环境与Bash 13

1.4 命令执行与Bash操作技巧 14

1.4.1 命令结构解析 14

1.4.2 帮助信息的获取 15

1.4.3  Bash操作技巧 15

1.4.4  管道与重定向 16

1.5  SSH远程连接及管理 17

1.5.1  认识SSH 17

1.5.2  查看与启动SSH服务 19

1.5.3  使用Windows命令行远程连接 20

动手练 使用第三方SSH工具远程管理 21

知识延伸:Linux 服务器终端常用管理命令 22

第2章

软件与文件管理

2.1 软件源配置管理 24

2.1.1 软件源的作用 24

2.1.2 软件源配置文件的位置 24

2.1.3 配置字段详解 25

2.1.4 软件源条目的分类 25

动手练 修改软件源 25

2.2 软件管理操作 25

2.2.1 更新与升级系统组件 25

动手练 升级已安装的软件包 26

2.2.2 查询软件包 27

动手练 查看软件源中软件包的信息 28

2.2.3  安装软件包 28

2.2.4  删除软件包及清理依赖残留 29

动手练 清理APT缓存 30

2.3 使用PPA安装及管理软件 30

2.3.1 PPA简介 30

2.3.2 安装及管理软件 31

2.4 用户与用户组管理 33

2.4.1 用户与用户组简介 33

2.4.2 添加与删除用户及用户组 33

2.4.3 sudo与用户的切换 34

2.4.4 Linux常见的用户组及其权限 35

2.5 文件及目录的管理 35

2.5.1  文件及目录基础 35

2.5.2  文件及目录的常见管理操作 37

知识延伸:sudo配置与权限分配策略 39

第3章

磁盘与文件系统管理

3.1 磁盘与分区管理 40

3.1.1 查看磁盘与分区信息 40

3.1.2  为磁盘进行分区 41

3.2 文件系统与挂载管理 42

3.2.1 常见的文件系统类型简介 42

3.2.2  文件系统的格式化 43

动手练 查看分区的文件系统类型 44

3.2.3 文件系统的挂载与卸载 44

动手练 卸载文件系统 45

3.3 开机自动挂载管理 45

3.3.1 自动挂载配置文件 45

3.3.2 开机自动挂载配置 46

3.4 逻辑卷原理及管理 46

3.4.1 LVM架构简介 46

3.4.2 部署物理卷、卷组与逻辑卷 47

3.4.3 扩展与压缩逻辑卷空间 48

动手练 删除逻辑卷、卷组与物理卷 51

3.5 建议RAID管理与应用 51

3.5.1 软件RAID的原理与类型 51

3.5.2  使用mdadm创建RAID卷 52

3.5.3 RAID故障的恢复 54

知识延伸:RAID的管理与开机自动挂载 55

第4章

网络配置与远程安全管理

4.1 网络信息的查看 56

4.1.1 查看网络接口及IP地址信息 56

4.1.2 查看默认网关信息 56

动手练 查看指定目标的路由路径 57

4.1.3 查看DNS服务器地址 57

4.1.4 查看当前网络连接与监听端口 57

动手练 使用lsof命令查看监听服务与进程关系 58

4.2 网络参数的配置 58

4.2.1 使用命令临时设置网络参数 58

4.2.2 修改网络配置文件永久生效 60

动手练 网络控制管理命令 60

4.3 常用网络调试命令 61

4.3.1 ping、traceroute与mtr命令 61

4.3.2 dig、host与nslookup解析工具 62

动手练 交互式或命令行DNS查询 63

4.4 SSH服务的基础安全管理 63

4.4.1 增强SSH安全性的常用方法 63

4.4.2 利用密钥实现安全登录 64

4.5 防火墙UFW基础配置 66

4.5.1 UFW的安装与启用 66

4.5.2 放行与阻止常见端口 67

4.5.3  UFW的进阶用法 68

4.5.4  配置服务别名与日志功能 69

知识延伸:Netplan网络配置工具简介 70

服务篇

第5章

文件共享与传输服务

5.1 Samba文件共享服务部署与管理 72

5.1.1 安装Samba服务 72

5.1.2 配置共享目录与权限 73

动手练 Windows访问Samba共享目录 75

5.1.3  用户身份认证与访问控制策略 75

5.2 NFS部署与管理 77

5.2.1 部署NFS 77

5.2.2 配置NFS共享目录及权限 77

5.2.3  客户端挂载与测试访问 79

动手练 配置自动挂载 79

5.3 FTP与SFTP服务部署与管理 79

5.3.1 安装与启动FTP 80

动手练 连接服务器 80

5.3.2 配置vsftpd服务参数 81

5.3.3 访问限制与安全加固 83

动手练 启用与配置SFTP 83

5.4 rsync文件同步与备份 85

5.4.1 rsync命令及本地同步 85

5.4.2 远程同步配置 86

5.4.3  自动化同步 87

5.5 常用命令行文件传输技巧 88

5.5.1 使用scp进行主机间快速传输 88

5.5.2 使用wget与curl拉取远程文件 89

动手练 使用wget与curl工具下载网络资源 90

知识延伸:基于Python HTTP/Netcat实现简易传输 91

第6章

Web服务器搭建与应用

6.1 Web服务器概述 93

6.1.1 认识Web服务器 93

6.1.2 Web服务器的分类 93

6.2 Apache服务的安装与基本配置 94

6.2.1 安装Apache 服务 94

6.2.2 配置默认站点与根目录 95

6.2.3 服务控制与日志管理 96

动手练 实时监测Apache日志文件 97

6.3 虚拟主机及SSL证书配置 97

6.3.1 配置基于域名的虚拟主机 97

动手练 配置基于端口的虚拟主机 99

6.3.2 配置内网HTTPS安全访问 100

6.3.3  Apache服务器调试与常见问题排查 101

6.4  Nginx服务器安装与反向代理 102

6.4.1  部署Nginx服务 103

6.4.2  Nginx服务配置 103

动手练 创建虚拟主机并使用不同域名访问 104

6.4.3  配置反向代理与负载均衡 106

6.4.4  Nginx安全加固与性能优化 107

6.5  PHP及动态网站环境配置 108

6.5.1  安装PHP及其模块 108

6.5.2  Apache集成PHP环境配置 109

动手练 Nginx与PHP-FPM结合使用 110

6.6  LNMP的配置 112

6.6.1  安装MySQL数据库组件 112

6.6.2  构建Nginx+PHP+MySQL架构 113

6.7  常见CMS网站的部署 114

6.7.1  认识CMS网站 114

6.7.2  基于LNMP部署WordPress 115

动手练 部署Discuz! 117

知识延伸:一键部署LNMP 119

第7章

数据库服务的部署及管理

7.1 MySQL与MariaDB服务的部署 120

7.1.1 MySQL与MariaDB简介 120

7.1.2 MySQL官方仓库部署 121

动手练 MariaDB的部署操作 123

7.2 Mysql数据库用户与权限管理 125

7.2.1 用户管理 125

动手练 删除用户 126

7.2.2 权限管理 126

动手练 撤销权限 127

7.2.3 常用SQL命令和技巧 128

7.3 Mysql数据库备份与恢复 129

7.3.1 数据库备份 129

7.3.2 数据库恢复 130

动手练 数据的导入/导出 131

7.4 MySQL数据库性能优化与安全加固 132

7.4.1 查询优化 132

7.4.2 参数调优 132

7.4.3 安全加固 133

知识延伸:PostgreSQL数据库的安装与管理 135

第8章

网络核心服务配置与管理

8.1 Bind9 DNS服务部署与区域配置 137

8.1.1 安装Bind9服务 137

8.1.2 创建正向及反向区域文件 138

8.1.3 编辑区域配置文件 139

8.1.4 检查配置文件并验证 140

动手练 使用Windows客户端进行验证 141

8.2 DNS缓存、转发与优化 142

8.2.1 部署DNS缓存服务器 142

8.2.2 部署DNS转发服务器 143

8.2.3  DNS服务器的优化技巧 144

8.3 Avahi与mDNS:零配置网络服务发现 145

8.3.1 认识mDNS与Avahi 145

8.3.2 安装与配置Avahi 146

动手练 本地域名解析与服务发现实践 147

8.4 ISC DHCP服务部署与动态地址分配 148

8.4.1 部署ISC DHCP服务 148

8.4.2 配置ISC DHCP参数 149

8.4.3 启用动态分配服务并调试 150

动手练 DHCP服务的监控及调试 151

8.5 DHCP静态地址绑定与客户端管理 152

8.5.1 MAC地址绑定静态IP 152

8.5.2 单独绑定网关与DNS地址 153

动手练 多设备分组 154

8.5.3  DHCP中继代理 155

知识延伸:NTP网络时间同步服务 157

第9章

邮件、代理与VPN服务的配置与管理

9.1 邮件服务器基础搭建 158

9.1.1 部署Postfix服务 158

9.1.2 本地邮件发送测试 159

9.1.3 局域网邮件发送测试 160

9.2 Dovecot邮件接收服务配置 162

9.2.1 安装与启用Dovecot 162

9.2.2 配置IMAP/POP3接收协议 163

9.2.3 本地邮件收发测试 164

动手练 局域网邮件收发测试 166

9.2.4 多用户间邮件收发 166

9.3 邮件客户端配置与测试 167

9.3.1 使用Thunderbird收发邮件 168

动手练 登录user2用户收取邮件 169

9.3.2 使用mutt收发邮件 170

9.4 邮件安全与反垃圾邮件 172

9.4.1 邮件加密与安全收发 172

9.4.2 反垃圾邮件 173

9.5  代理服务器的部署与管理 175

9.5.1  安装与启用Squid代理服务 175

动手练 测试代理 176

9.5.2  配置访问控制列表 176

动手练 不允许访问某些域名 178

9.5.3  启用缓存及日志功能 178

9.6  VPN服务安装与配置 180

9.6.1  OpenVPN原理与服务器安装 180

9.6.2  配置PKI 180

9.6.3  创建服务器端配置文件 182

9.6.4  配置客户端 183

动手练 验证VPN连接 184

知识延伸:WireGuard 在局域网环境下的部署步骤 185

运维篇

第10章

Shell脚本编程与自动化任务

10.1 Shell脚本基础知识 188

10.1.1 Shell脚本的执行机制 188

10.1.2 脚本的结构 189

10.1.3 编写第一个Shell脚本 190

动手练 调用bash解释器执行脚本 191

10.2 变量与数据操作 191

10.2.1 变量类型与赋值方式 191

10.2.2 Shell中的输入与输出 192

10.2.3 数值计算与变量替换 193

10.2.4 环境变量与位置参数 194

10.3 条件判断与流程控制 195

10.3.1 if语句与case语句 195

10.3.2 for、while、until循环 196

10.4 函数与数组 197

10.4.1 函数定义与调用 197

10.4.2 参数传递与返回值 198

10.4.3 一维数组与数组遍历 200

10.5  文本处理与正则表达式 200

10.5.1  正则表达式的语法与元字符 201

10.5.2  grep命令用法 202

10.5.3  sed命令用法 202

10.5.4  awk命令用法 204

10.6  Shell并发与任务调度 205

10.6.1  for循环并发执行任务 205

10.6.2  后台任务与作业控制 206

10.6.3  expect实现非交互式控制 206

10.6.4  定时任务cron与at命令 207

10.7  系统性能与资源监控脚本 208

10.7.1  集成top、vmstat、iostat命令 208

10.7.2  系统资源监控 209

动手练 定时系统资源监控与报表生成 210

10.7.3  日志分析与告警脚本 211

动手练 自动化日志归档与清理 212

知识延伸:Shell脚本调试与排错 213

第11章

Ansible自动化运维

11.1 自动化运维基础 214

11.1.1 认识自动化运维 214

11.1.2 Ansible与Shell脚本的对比与选型 215

11.1.3 常见的自动化运维场景 215

11.2 Ansible概述 216

11.2.1 Ansible的工作机制 216

11.2.2 控制节点与被管理节点架构 217

11.2.3 模块化设计与插件机制 217

11.2.4 常用模块与作用 217

11.3 Ansible安装与初始化 218

11.3.1 部署Ansible 218

11.3.2 配置SSH通信与免密登录 218

11.3.3 主机清单管理 219

动手练 创建Ansible主配置文件 220

11.4 Ansible核心命令与模块 221

11.4.1 Ansible命令行管理与常用模块 221

11.4.2 自定义模块与高级命令技巧 223

11.4.3  高效使用ad-hoc命令的小技巧 225

11.5 Playbook基础与编写规范 226

11.5.1 Playbook结构与语法解析 226

11.5.2 Task、Handler、Block、Tag机制 228

11.5.3 Role机制与目录结构 230

11.5.4 变量与事实 233

11.6 自动化流程控制 234

11.6.1 循环语句与条件控制 234

11.6.2 错误处理与异常控制 235

11.6.3  import与include机制的使用 236

知识延伸:Ansible问题排查与调试技巧 238

第12章

系统安全管理

12.1 日志管理 239

12.1.1 日志文件分类与位置 239

动手练 查看日志 240

12.1.2 使用journalctl管理systemd日志 240

动手练 日志管理与清理 242

12.1.3 日志轮转与logrotate配置 242

12.2 防火墙UFW进阶规则 243

12.2.1 规则优先级 243

12.2.2 UFW配置文件与规则持久化 244

12.2.3 日志联动 245

12.3 Fail2ban恶意登录防护 246

12.3.1 Fail2ban工作原理 246

12.3.2 部署Fail2ban 247

动手练 测试Fail2ban封禁功能 248

12.4   SSH安全审计 248

12.4.1 SSH登录日志查看与分析 248

12.4.2 来源IP排查 250

12.5  AppArmor安全模块基础 250

12.5.1  AppArmor概述与工作机制 250

12.5.2  AppArmor状态管理与常用命令 251

12.5.3  AppArmor配置文件 252

动手练 自定义与调整策略 253

12.6  系统用户安全策略 254

12.6.1  密码强度与复杂度 254

12.6.2  密码过期策略与警告时间 255

12.6.3  锁定无用账户 255

12.7  基本安全审计与漏洞检测 256

12.7.1  审计系统用户与关键服务 256

12.7.2  基于rkhunter的快速后门检测 257

12.7.3  使用Lynis安全审计 258

动手练 使用杀毒工具查杀病毒 258

知识延伸:交互式系统与网络监控工具 260