隨著開源技術(shù)的不斷進(jìn)步與創(chuàng)新,在整個IT行業(yè)中,越來越多的企業(yè)愿意采用開源產(chǎn)品,而基于Linux的操作系統(tǒng)為這些開源產(chǎn)品提供了一個極佳的操作平臺。本書將基于Linux操作系統(tǒng)這樣一個基礎(chǔ)平臺,講解如何實現(xiàn)各種開源產(chǎn)品的應(yīng)用案例。全書主要從運維工作中的應(yīng)用服務(wù)入手,全面講解Linux操作系統(tǒng)及各種軟件服務(wù)的運維方案。 現(xiàn)在的商業(yè)環(huán)境是一個充滿競爭的環(huán)境,很多企業(yè)的業(yè)務(wù)量在不斷地增長,對服務(wù)質(zhì)量的要求也越來越高。特別是互聯(lián)網(wǎng)企業(yè),為了滿足客戶更高的要求,提升客戶使用體驗,IT?部門維護(hù)的設(shè)備往往數(shù)以萬計,如此龐大的設(shè)備維護(hù)量,通常會讓IT管理人員頭疼不已。本書介紹的自動化運維內(nèi)容可以讓我們快速掌握簡單的大規(guī)模批量運維方法。僅僅依靠自動化運維還不足以發(fā)揮出這些設(shè)備的能效,因此,我們還需要將各個服務(wù)器設(shè)備有機地結(jié)合在一起,為客戶提供更加安全、快捷、高效的服務(wù),于是集群技術(shù)應(yīng)運而生。本書最后將圍繞集群技術(shù)介紹目前比較流行的開源產(chǎn)品部署案例。
丁明一達(dá)內(nèi)集團(tuán)云計算、數(shù)據(jù)分析與商業(yè)智能教學(xué)研發(fā)總監(jiān)、開源技術(shù)推廣者;紅帽認(rèn)證架構(gòu)師(RHCA)、紅帽認(rèn)證高級講師(RHCI)、華為授權(quán)講師(HCSI);曾任職于中國電信、鵬博士等多家IT企業(yè),并創(chuàng)辦多個企業(yè),有十余年IT行業(yè)經(jīng)驗;精通Linux系統(tǒng)、Shell腳本編程、數(shù)據(jù)庫、各大云計算產(chǎn)品、Docker容器技術(shù)、分布式存儲技術(shù),擁有豐富的虛擬化技術(shù)使用經(jīng)驗,數(shù)據(jù)分析經(jīng)驗,對企業(yè)集群存儲環(huán)境及高性能、高可用架構(gòu)有深入的研究,著有暢銷圖書《Linux運維之道》《Linux Shell核心編程指南》。
第1篇 基礎(chǔ)知識
第1章 部署操作系統(tǒng) 2
1.1 通過光盤安裝Linux操作系統(tǒng) 2
1.1.1 操作系統(tǒng)版本的選擇 2
1.1.2 光盤安裝實例 3
1.2 無人值守自動安裝Linux操作系統(tǒng) 11
1.2.1 大規(guī)模部署案例 11
1.2.2 PXE簡介 12
1.2.3 Kickstart技術(shù) 13
1.2.4 配置安裝服務(wù)器 13
1.2.5 自動化安裝案例 15
1.3 常見問題分析 20
第2章 命令工具 24
2.1 基本命令 25
2.1.1 目錄及文件的基本操作 25
2.1.2 查看文件內(nèi)容 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光標(biāo)操作 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 創(chuàng)建賬戶及組 42
2.3.3 修改賬戶及組 43
2.3.4 刪除賬戶及組 44
2.3.5 賬戶與組文件解析 45
2.3.6 文件及目錄權(quán)限 46
2.3.7 賬戶管理案例 48
2.3.8 ACL訪問控制權(quán)限 50
2.4 存儲管理 51
2.4.1 硬盤分區(qū) 52
2.4.2 格式化與掛載文件系統(tǒng) 56
2.4.3 LVM邏輯卷概述 58
2.4.4 創(chuàng)建LVM分區(qū)實例 60
2.4.5 修改LVM分區(qū)容量 63
2.4.6 刪除LVM分區(qū) 64
2.4.7 RAID硬盤陣列概述 65
2.4.8 RAID級別 65
2.4.9 創(chuàng)建與管理軟件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服務(wù)管理 83
2.6 計劃任務(wù) 88
2.6.1 at一次性計劃任務(wù) 88
2.6.2 cron周期性計劃任務(wù) 89
2.6.3 計劃任務(wù)權(quán)限 90
2.6.4 通過systemd定制計劃任務(wù) 90
2.7 性能監(jiān)控 92
2.7.1 監(jiān)控CPU使用情況——uptime命令 92
2.7.2 監(jiān)控內(nèi)存及交換分區(qū)使用情況——free命令 92
2.7.3 監(jiān)控硬盤使用情況——df命令 93
2.7.4 監(jiān)控網(wǎng)絡(luò)使用情況——ip和ss命令 94
2.7.5 監(jiān)控進(jìn)程使用情況——ps和top命令 96
2.8 網(wǎng)絡(luò)配置 97
2.8.1 命令行配置網(wǎng)絡(luò)參數(shù) 97
2.8.2 修改系統(tǒng)配置文件配置網(wǎng)絡(luò)參數(shù) 101
2.8.3 網(wǎng)絡(luò)故障排錯 103
2.9 內(nèi)核模塊 105
2.9.1 內(nèi)核模塊存放位置 105
2.9.2 查看已加載內(nèi)核模塊 106
2.9.3 加載與卸載內(nèi)核模塊 106
2.9.4 修改內(nèi)核參數(shù) 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 作業(yè)控制技巧 114
3.3.4 花括號{}的使用技巧 114
3.4 變量 115
3.4.1 自定義變量 115
3.4.2 變量的使用范圍 116
3.4.3 環(huán)境變量 116
3.4.4 位置變量 117
3.4.5 變量的展開替換 118
3.4.6 數(shù)組 119
3.4.7 算術(shù)運算與測試 120
3.5 Shell引號 122
3.5.1 反斜線 122
3.5.2 單引號 123
3.5.3 雙引號 123
3.5.4 反引號 123
3.6 正則表達(dá)式 123
3.6.1 基本正則表達(dá)式 124
3.6.2 擴展正則表達(dá)式 127
3.6.3 POSIX規(guī)范 128
3.6.4 Perl正則表達(dá)式 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高級應(yīng)用 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高級應(yīng)用 148
3.9 Shell腳本 151
3.9.1 腳本格式 151
3.9.2 運行腳本的方式 152
3.9.3 Shell腳本簡單案例 153
3.9.4 判斷語句的應(yīng)用 156
3.9.5 循環(huán)語句的應(yīng)用 159
3.9.6 控制語句的應(yīng)用 163
3.9.7 Shell函數(shù)的應(yīng)用 164
3.9.8 綜合案例 166
3.9.9 圖形腳本 169
3.10 Ansible 171
3.10.1 準(zhǔn)備環(huán)境 172
3.10.2 Ansible ad-hoc命令 176
3.10.3 Ansible模塊 177
3.10.4 Ansible Playbook 185
第2篇 網(wǎng)絡(luò)服務(wù)
第4章 搭建網(wǎng)絡(luò)服務(wù) 192
4.1 NFS文件共享 192
4.1.1 NFS服務(wù)器配置 193
4.1.2 客戶端訪問NFS共享 195
4.1.3 NFS高級設(shè)置 196
4.1.4 常見問題分析 199
4.2 Samba文件共享 200
4.2.1 快速配置Samba服務(wù)器 201
4.2.2 訪問Samba共享 202
4.2.3 配置文件詳解 204
4.2.4 Samba應(yīng)用案例 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 賬號權(quán)限 213
4.3.5 vsftpd應(yīng)用案例 213
4.3.6 常見問題分析 217
4.4 ProFTPD文件共享 218
4.4.1 安裝ProFTPD軟件 218
4.4.2 配置文件解析 219
4.4.3 ProFTPD權(quán)限設(shè)置 220
4.4.4 虛擬用戶應(yīng)用案例 220
4.4.5 常見問題分析 224
4.5 SVN版本控制 224
4.5.1 SVN簡介 224
4.5.2 四種服務(wù)器對比 226
4.5.3 安裝SVN軟件 227
4.5.4 svnserve服務(wù)器搭建 227
4.5.5 svnserve+SSH服務(wù)器搭建 233
4.5.6 Apache+SVN服務(wù)器搭建 234
4.5.7 多人協(xié)同編輯案例 236
4.5.8 常見問題 240
4.6 Git版本控制 241
4.6.1 部署Git遠(yuǎn)程版本服務(wù)器 242
4.6.2 客戶端操作版本倉庫 243
4.6.3 HEAD指針 246
4.6.4 Git分支 247
4.6.5 Git標(biāo)簽 253
4.6.6 免密登錄Git遠(yuǎn)程版本服務(wù)器 254
4.6.7 常見問題分析 255
4.7 網(wǎng)絡(luò)存儲服務(wù)器 255
4.7.1 iSCSI網(wǎng)絡(luò)存儲 256
4.7.2 Rsync文件同步 259
4.7.3 Rsync+Inotify實現(xiàn)文件自動同步 265
4.8 DHCP服務(wù)器 271
4.8.1 安裝軟件 272
4.8.2 配置文件解析 272
4.8.3 DHCP應(yīng)用案例 273
4.8.4 常見問題分析 275
4.9 DNS域名服務(wù)器 276
4.9.1 DNS簡介 276
4.9.2 安裝DNS軟件 278
4.9.3 BIND配置文件解析 278
4.9.4 部署主域名服務(wù)器 282
4.9.5 部署從域名服務(wù)器 285
4.9.6 DNS視圖應(yīng)用案例 287
4.9.7 常見問題分析 289
4.10 Apache網(wǎng)站服務(wù)器 290
4.10.1 Apache簡介 290
4.10.2 安裝Apache軟件 291
4.10.3 配置文件解析 292
4.10.4 虛擬主機應(yīng)用案例 297
4.10.5 網(wǎng)站安全應(yīng)用案例 298
4.10.6 常見問題分析 301
4.11 Nginx網(wǎng)站服務(wù)器 302
4.11.1 Nginx簡介 302
4.11.2 安裝Nginx軟件 302
4.11.3 配置文件解析 305
4.11.4 虛擬主機應(yīng)用案例 307
4.11.5 SSL網(wǎng)站應(yīng)用案例 310
4.11.6 HTTP響應(yīng)狀態(tài)碼 311
4.12 數(shù)據(jù)庫基礎(chǔ) 312
4.12.1 MySQL數(shù)據(jù)庫簡介 312
4.12.2 安裝MySQL 313
4.12.3 MySQL管理工具 314
4.12.4 數(shù)據(jù)庫定義語言 319
4.12.5 數(shù)據(jù)庫操作語言 323
4.12.6 數(shù)據(jù)庫查詢語言 325
4.12.7 MySQL與安全 327
4.12.8 MySQL數(shù)據(jù)庫備份與還原 330
4.13 動態(tài)網(wǎng)站架構(gòu)案例 332
4.13.1 論壇系統(tǒng)應(yīng)用案例 332
4.13.2 博客系統(tǒng)應(yīng)用案例 338
第5章 系統(tǒng)監(jiān)控 344
5.1 Zabbix監(jiān)控系統(tǒng) 344
5.1.1 簡介 344
5.1.2 Zabbix基礎(chǔ)監(jiān)控案例 345
5.1.3 Zabbix監(jiān)控案例進(jìn)階 366
5.2 Prometheus監(jiān)控系統(tǒng) 388
5.2.1 Prometheus簡介 388
5.2.2 Prometheus監(jiān)控應(yīng)用案例 389
第6章 網(wǎng)絡(luò)安全 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應(yīng)用案例 414
6.2.8 httpd相關(guān)的SELinux安全策略 414
6.2.9 FTP相關(guān)的SELinux安全策略 415
6.2.10 MySQL相關(guān)的SELinux安全策略 416
6.2.11 NFS相關(guān)的SELinux安全策略 417
6.2.12 Samba相關(guān)的SELinux安全策略 418
6.3 OpenVPN 419
6.3.1 OpenVPN簡介 419
6.3.2 安裝OpenVPN服務(wù) 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篇 高級應(yīng)用
第7章 虛擬化與容器技術(shù) 436
7.1 虛擬化產(chǎn)品對比 436
7.1.1 VMware虛擬化技術(shù) 437
7.1.2 Xen虛擬化技術(shù) 437
7.1.3 KVM虛擬化技術(shù) 438
7.2 KVM虛擬化應(yīng)用案例 438
7.2.1 安裝KVM組件 438
7.2.2 創(chuàng)建虛擬機、安裝操作系統(tǒng) 439
7.2.3 監(jiān)控虛擬機操作系統(tǒng) 444
7.2.4 命令工具使用技巧 446
7.2.5 虛擬存儲與虛擬網(wǎng)絡(luò) 451
7.3 容器技術(shù) 458
7.3.1 安裝容器管理軟件 461
7.3.2 鏡像與容器管理 461
7.3.3 自定義鏡像 465
7.3.4 發(fā)布服務(wù) 467
7.3.5 存儲卷 468
第8章 集群及高可用 470
8.1 集群 470
8.1.1 LVS負(fù)載均衡簡介 470
8.1.2 基于NAT的LVS負(fù)載均衡 471
8.1.3 基于TUN的LVS負(fù)載均衡 472
8.1.4 基于DR的LVS負(fù)載均衡 473
8.1.5 LVS負(fù)載均衡調(diào)度算法 474
8.1.6 部署LVS 475
8.1.7 LVS負(fù)載均衡應(yīng)用案例 478
8.1.8 常見問題分析 484
8.2 Keepalived雙機熱備 484
8.2.1 Keepalived簡介 484
8.2.2 VRRP簡介 485
8.2.3 安裝Keepalived服務(wù) 485
8.2.4 配置文件解析 486
8.2.5 Keepalived+LVS應(yīng)用案例 487
8.2.6 常見問題分析 494
8.3 Squid代理服務(wù)器 495
8.3.1 Squid簡介 495
8.3.2 安裝Squid服務(wù) 495
8.3.3 常見的代理服務(wù)器類型 496
8.3.4 配置文件解析 497
8.3.5 Squid應(yīng)用案例 498
8.4 HAProxy負(fù)載均衡 502
8.4.1 HAProxy簡介 502
8.4.2 配置文件解析 503
8.4.3 HAProxy應(yīng)用案例 505
8.5 Nginx高級應(yīng)用 509
8.5.1 Nginx負(fù)載均衡簡介 509
8.5.2 Nginx負(fù)載均衡案例 511
8.5.3 Nginx rewrite規(guī)則 515
8.6 MySQL高可用 518
8.6.1 MySQL復(fù)制簡介 518
8.6.2 一步一步實現(xiàn)MySQL復(fù)制 519