內容簡介
本書由淺入深地介紹了Linux系統運維的知識,以及在企業實際環境中用到的各類服務、架構和運維管理。本書分基礎篇、LAMP LNMP架構篇、套用服務篇和架構運用篇。基礎篇詳細介紹Linux系統的基礎知識,LAMP LNMP架構篇介紹時下企業中常見的兩種架構的部署與配置,套用服務篇以企業實際運維環境為出發點詳細介紹當下企業用到的各類開源軟體服務,架構運用篇對前三篇的知識進行總結,並結合企業的實際場景加以實踐。
圖書目錄
基 礎 篇
第 1章 作業系統的安裝與基礎配置3
1.1 作業系統的安裝3
1.1.1 準備Linux作業系統安裝檔案3
1.1.2 配置虛擬機3
1.1.3 安裝CentOS作業系統10
1.2 作業系統的基礎配置15
1.2.1 修改默認主機名15
1.2.2 配置IP位址16
1.2.3 為系統添加操作用戶16
1.2.4 安裝常用軟體17
1.2.5 配置Yum源17
1.2.6 關閉防火牆服務17
1.2.7 關閉SELinux服務18
1.2.8 修改SSH服務默認配置18
1.2.9 修改檔案描述符19
1.2.10 登錄逾時退出19
第 2章 Linux系統的目錄及重要檔案20
2.1 系統目錄及其作用20
2.1.1 根目錄結構及其作用20
2.1.2 根下常見目錄介紹20
2.2 Linux系統的重要檔案21
2.2.1 網卡配置檔案21
2.2.2 DNS配置檔案22
2.2.3 系統hosts檔案22
2.2.4 主機名配置檔案23
2.2.5 fstab檔案23
2.2.6 rc.local檔案23
2.2.7 全局環境變數配置檔案24
2.2.8 定時任務配置檔案24
2.2.9 用戶相關的配置檔案25
第3章 新手必備的系統基礎命令26
3.1 系統管理命令26
3.1.1 man命令26
3.1.2 ls命令26
3.1.3 cd命令27
3.1.4 useradd命令28
3.1.5 passwd命令28
3.1.6 free命令29
3.1.7 whoami命令30
3.1.8 ps命令30
3.1.9 date命令31
3.1.10 pwd命令33
3.1.11 shutdown命令33
3.2 檔案目錄管理命令34
3.2.1 touch命令34
3.2.2 cat命令35
3.2.3 mkdir命令36
3.2.4 rm命令37
3.2.5 cp命令37
3.2.6 mv命令38
3.2.7 find命令39
3.3 檔案壓縮與解壓命令40
3.3.1 tar命令40
3.3.2 zip命令41
3.3.3 unzip命令42
3.4 磁碟管理命令43
3.4.1 df命令43
3.4.2 du命令44
3.4.3 fdisk命令44
3.4.4 mount命令45
3.5 網路管理命令46
3.5.1 ping命令46
3.5.2 wget命令46
3.5.3 telnet命令47
3.5.4 netstat命令47
3.5.5 curl命令49
3.5.6 ss命令49
3.6 系統性能管理命令51
3.6.1 uptime命令51
3.6.2 top命令51
3.6.3 iostat命令53
3.6.4 ifstat命令55
3.6.5 lsof命令55
3.6.6 time命令57
3.7 軟體包管理命令57
3.7.1 yum命令57
3.7.2 rpm命令59
第4章 Linux檔案系統、用戶與許可權61
4.1 檔案系統概述61
4.1.1 檔案類型61
4.1.2 檔案屬性62
4.2 用戶與用戶組63
4.2.1 用戶分類63
4.2.2 用戶組64
4.3 用戶許可權65
4.3.1 默認許可權65
4.3.2 umask值與默認許可權的關係65
4.3.3 如何修改默認許可權66
4.4 檔案許可權66
4.4.1 檔案許可權分類66
4.4.2 如何修改許可權67
第5章 磁碟管理68
5.1 磁碟分類68
5.2 磁碟的容量計算68
5.3 磁碟分區69
5.4 磁碟分區工具69
5.4.1 fdisk分區工具69
5.4.2 parted分區工具70
5.5 RAID技術概述71
5.5.1 RAID的定義71
5.5.2 RAID的級別與分類72
5.5.3 RAID的優點72
5.5.4 常用RAID對比72
第6章 正則表達式與vim編輯器的
使用73
6.1 什麼是正則表達式73
6.2 字元73
6.3 文本處理命令74
6.3.1 grep命令74
6.3.2 sed命令74
6.3.3 awk命令75
6.4 正則表達式使用示例75
6.5 vim編輯器75
6.5.1 什麼是vim編輯器75
6.5.2 vim編輯器的3種模式76
6.6 vim編輯的操作76
6.6.1 游標的移動方法76
6.6.2 搜尋與查找76
6.6.3 刪除、複製與貼上77
6.6.4 保存與退出77
LAMP LNMP架構篇
第7章 Apache的安裝與配置81
7.1 Apache概述81
7.1.1 什麼是Apache81
7.1.2 Apache的套用場景81
7.2 安裝Apache81
7.2.1 安裝環境準備81
7.2.2 Apache的安裝過程82
7.3 Apache的目錄結構與配置檔案84
7.3.1 Apache的目錄結構與作用85
7.3.2 Apache的主配置檔案86
7.3.3 Apache的日誌格式與日誌切割86
7.4 配置Apache的虛擬主機88
7.4.1 配置基於域名的虛擬主機88
7.4.2 配置基於連線埠的虛擬主機90
7.5 Apache的最佳化配置91
7.5.1 修改默認用戶與組91
7.5.2 最佳化錯誤頁面的顯示內容92
7.5.3 隱藏Apache的版本信息92
7.5.4 配置Apache的日誌輪詢93
7.5.5 最佳化站點目錄許可權94
7.5.6 開啟Apache防盜鏈功能94
7.5.7 禁止PHP程式解析指定站點
目錄95
第8章 MySQL與PHP的安裝與配置96
8.1 MySQL概述96
8.1.1 MySQL簡介96
8.1.2 MySQL版本96
8.2 MySQL的部署過程96
8.2.1 MySQL常見的安裝方式96
8.2.2 MySQL的安裝與部署97
8.3 MySQL的目錄結構與配置檔案99
8.3.1 MySQL的目錄結構99
8.3.2 MySQL的配置檔案99
8.4 PHP的安裝與配置100
8.4.1 準備安裝環境100
8.4.2 PHP的安裝過程101
8.4.3 配置Apache支持PHP程式103
8.4.4 測試配置104
8.4.5 PHP目錄105
第9章 Nginx的安裝與配置107
9.1 Nginx概述107
9.1.1 什麼是Nginx107
9.1.2 Nginx的功能107
9.1.3 Nginx的優點107
9.2 安裝Nginx108
9.2.1 準備安裝環境108
9.2.2 安裝依賴庫109
9.2.3 編譯和安裝Nginx109
9.3 配置Nginx支持PHP程式111
9.3.1 修改配置檔案111
9.3.2 啟動服務並檢查112
9.4 Nginx目錄與配置檔案114
9.4.1 Nginx目錄結構及其說明114
9.4.2 Nginx的配置檔案簡介114
9.5 配置Nginx虛擬主機115
9.5.1 配置基於域名的虛擬主機115
9.5.2 配置基於IP的虛擬主機117
9.5.3 配置基於連線埠的虛擬主機119
9.6 最佳化Nginx主配置檔案120
9.6.1 精簡主配置檔案120
9.6.2 拆分主配置檔案121
9.6.3 開啟日誌功能122
9.6.4 配置Nginx gzip壓縮功能123
9.6.5 配置expires快取功能124
9.6.6 最佳化Nginx錯誤頁面125
第 10章 使用WordPress搭建自己的部落格站點127
10.1 安裝環境127
10.1.1 系統環境127
10.1.2 軟體環境127
10.2 準備工作128
10.2.1 下載WordPress軟體128
10.2.2 配置Nginx虛擬主機128
10.2.3 創建WordPress資料庫129
10.3 搭建WordPress部落格站點129
10.3.1 複製站點檔案並授權129
10.3.2 安裝和配置WordPress130
套用服務篇
第 11章 Linux系統登錄與管理139
11.1 SSH服務概述139
11.1.1 什麼是SSH服務139
11.1.2 SSH服務的認證類型139
11.2 SSH服務的操作140
11.2.1 SSH服務的安裝與啟動140
11.2.2 SSH相關操作命令141
11.3 SSH免密登錄實戰142
11.3.1 環境配置142
11.3.2 生成密鑰對142
11.3.3 分發密鑰143
11.3.4 測試免密分發數據144
11.4 定時任務144
11.4.1 什麼是定時任務144
11.4.2 crond命令144
11.4.3 系統定時任務145
11.4.4 定時任務的書寫與配置146
11.5 伺服器許可權管理146
11.5.1 sudo介紹146
11.5.2 etc sudoers配置檔案147
11.5.3 編輯配置檔案規範149
第 12章 網路檔案系統(NFS)與數據同步151
12.1 網路檔案系統簡介151
12.1.1 什麼是網路檔案系統151
12.1.2 NFS實現過程151
12.2 NFS的安裝與部署152
12.2.1 NFS服務端的部署152
12.2.2 NFS客戶端的部署154
12.2.3 客戶端安全配置156
12.3 NFS客戶端掛載最佳化157
12.3.1 掛載參數157
12.3.2 最佳化實例測試157
12.4 rsync數據同步服務158
12.4.1 rsync服務簡介158
12.4.2 rsync服務的安裝與操作命令159
12.4.3 rsync數據同步實戰操作160
12.5 sersync數據同步服務162
12.5.1 sersync服務簡介162
12.5.2 sersync服務的工作過程163
12.5.3 sersync服務的安裝準備163
12.5.4 安裝配置sersync服務164
12.5.5 啟動sersync服務166
12.5.6 測試數據同步167
第 13章 MySQL服務常用管理169
13.1 MySQL的基礎管理操作169
13.1.1 MySQL服務的啟動與停止169
13.1.2 MySQL服務的登錄和退出169
13.1.3 MySQL服務密碼修改與找回171
13.2 MySQL資料庫常用管理操作172
13.2.1 創建、刪除資料庫173
13.2.2 連線資料庫174
13.2.3 創建與刪除用戶174
13.2.4 許可權管理176
13.3 MySQL資料庫表管理177
13.3.1 創建表177
13.3.2 表結構178
13.3.3 表主鍵178
13.3.4 表索引179
13.4 表數據操作181
13.4.1 插入數據181
13.4.2 查詢數據181
13.4.3 修改(更新)數據182
13.4.4 刪除數據183
13.4.5 表欄位的增刪184
13.4.6 表更名185
13.4.7 刪除表185
第 14章 MySQL資料庫的備份與恢復187
14.1 資料庫備份概述187
14.1.1 全量與增量備份187
14.1.2 資料庫備份方法188
14.2 MySQL資料庫備份操作188
14.2.1 庫備份188
14.2.2 資料庫表和表結構備份191
14.2.3 備份最佳化191
14.2.4 不同資料庫引擎備份的注意事項192
14.3 MySQL資料庫的恢復192
14.3.1 使用source命令193
14.3.2 使用mysql命令193
14.4 MySQL物理備份工具XtraBackup193
14.4.1 什麼是XtraBackup193
14.4.2 XtraBackup的特點194
14.4.3 XtraBackup的備份過程194
14.4.4 XtraBackup的增量備份195
14.4.5 XtraBackup的恢復195
14.4.6 XtraBackup的安裝環境195
14.4.7 安裝XtraBackup196
14.4.8 XtraBackup的命令介紹196
14.4.9 XtraBackup全量備份與數據恢復197
14.4.10 XtraBackup增量備份與數據恢復200
第 15章 無人值守批量安裝作業系統205
15.1 PXE技術概述205
15.1.1 什麼是PXE技術205
15.1.2 PXE的工作過程205
15.2 KickStart簡介206
15.3 無人值守安裝準備207
15.3.1 配置環境207
15.3.2 配置HTTP服務207
15.3.3 安裝與配置TFTP服務208
15.3.4 安裝與配置DHCP服務209
15.4 KickStart部署209
15.4.1 配置PXE引導210
15.4.2 修改客戶端配置檔案210
15.4.3 配置ks.cfg檔案211
15.4.4 客戶端無人值守安裝213
第 16章 集群架構技術216
16.1 集群概述217
16.1.1 什麼是集群217
16.1.2 集群架構的特性217
16.2 集群的分類217
16.2.1 負載均衡集群218
16.2.2 高可用集群219
16.2.3 常用集群軟硬體220
16.3 企業集群架構疊代過程220
16.3.1 初期架構220
16.3.2 中期架構222
16.3.3 終期架構223
第 17章 Nginx負載均衡226
17.1 負載均衡概述226
17.1.1 為什麼要使用負載均衡226
17.1.2 負載均衡簡介226
17.1.3 負載均衡分類226
17.2 Nginx負載均衡簡介227
17.3 Nginx實現負載均衡的方式227
17.4 Nginx負載均衡套用配置228
17.4.1 環境準備228
17.4.2 Nginx輪詢模式負載均衡配置228
17.4.3 Nginx權重模式負載均衡配置229
17.4.4 Nginx ip_hash模式負載均衡配置231
17.4.5 Nginx負載均衡模組參數232
17.5 Nginx 的7層代理負載均衡233
17.5.1 根據目錄實現動靜態分離234
17.5.2 通過匹配擴展名實現動靜態分離235
第 18章 LVS負載均衡237
18.1 LVS服務概述237
18.1.1 LVS服務簡介237
18.1.2 LVS的發展與組成237
18.1.3 LVS相關的術語237
18.1.4 為什麼需要LVS238
18.2 LVS的工作模式238
18.2.1 網路地址轉換模式238
18.2.2 隧道模式239
18.2.3 直接路由模式241
18.2.4 Full NAT模式242
18.3 LVS調度算法242
18.4 LVS負載均衡部署244
18.4.1 LVS服務DR模式部署244
18.4.2 LVS服務NAT模式部署247
18.4.3 LVS服務TUN模式部署249
18.5 ipvsadm命令及參數介紹251
第 19章 Keepalived高可用集群服務253
19.1 高可用概述253
19.1.1 什麼是高可用253
19.1.2 如何構建高可用253
19.2 Keepalived高可用服務254
19.2.1 Keepalived服務介紹254
19.2.2 Keepalived故障切換原理254
19.3 Keepalived服務的部署與配置255
19.3.1 部署環境255
19.3.2 Keepalived服務的部署256
19.3.3 Keepalived配置檔案詳解257
19.3.4 Keepalived實例配置258
第 20章 NoSQL資料庫服務的部署與管理264
20.1 NoSQL資料庫簡介264
20.1.1 什麼是NoSQL資料庫264
20.1.2 NoSQL資料庫的分類264
20.1.3 NoSQL資料庫的使用場景265
20.2 Memcached服務的部署與配置265
20.2.1 什麼是Memcached265
20.2.2 Memcached的工作流程265
20.2.3 Memcached的特性與套用場景266
20.2.4 Memcached的部署與配置267
20.2.5 Memcached操作命令268
20.3 Redis服務的部署與配置270
20.3.1 什麼是Redis270
20.3.2 Redis的套用場景270
20.3.3 Redis服務的部署271
20.3.4 Redis服務的啟動與關閉271
20.3.5 Redis的數據類型272
20.3.6 Redis的管理命令275
20.3.7 Redis事務與安全配置276
20.3.8 Redis持久化、備份與恢復277
第 21章 Java Web套用伺服器Tomcat服務280
21.1 Tomcat服務概述280
21.1.1 Tomcat服務簡介280
21.1.2 Tomcat名稱的由來280
21.1.3 Tomcat常用版本介紹280
21.2 Tomcat服務的部署281
21.2.1 環境準備281
21.2.2 安裝和啟動Tomcat282
21.3 Tomcat服務的配置283
21.3.1 Tomcat目錄結構及功能283
21.3.2 Tomcat server.xml配置檔案簡介284
21.3.3 Tomcat核心組件285
21.3.4 Tomcat日誌切割286
21.4 Tomcat性能最佳化287
21.4.1 伺服器系統最佳化287
21.4.2 網路最佳化288
21.4.3 服務自身最佳化289
21.4.4 集群化291
第 22章 Zabbix監控服務293
22.1 監控體系概述293
22.1.1 為什麼需要監控293
22.1.2 監控目標與流程293
22.1.3 監控的對象293
22.1.4 監控工具295
22.2 Zabbix簡介295
22.2.1 什麼是Zabbix295
22.2.2 Zabbix的功能296
22.2.3 Zabbix的工作原理296
22.3 Zabbix服務的部署與配置297
22.3.1 部署環境297
22.3.2 部署Zabbix297
22.3.3 配置中文支持302
22.4 Zabbix相關組件與概念303
22.4.1 Zabbix的組件303
22.4.2 Zabbix重要概念簡介303
22.5 Zabbix監控實戰操作304
22.5.1 Agent端的部署與配置304
22.5.2 Web端添加被監控主機305
22.5.3 繪製圖形展示306
22.5.4 配置郵件報警通知310
第 23章 企業級資料庫監控服務
Lepus317
23.1 Lepus概述317
23.1.1 Lepus的由來317
23.1.2 Lepus監控系統簡介317
23.1.3 Lepus的功能與特性317
23.1.4 Lepus解決的難題318
23.2 Lepus的部署319
23.2.1 安裝環境要求319
23.2.2 LAMP基礎環境安裝319
23.2.3 Python基礎模組安裝320
23.2.4 Lepus採集器安裝321
23.2.5 安裝Web管理端324
23.3 Lepus配置管理實例326
23.3.1 配置監控MySQL326
23.3.2 配置監控OS328
第 24章 企業原始碼管理工具331
24.1 常見的版本管理工具331
24.1.1 VSS331
24.1.2 CVS331
24.1.3 SVN331
24.1.4 Git331
24.2 Git的安裝332
24.2.1 安裝所需的依賴包332
24.2.2 安裝Git332
24.3 Git的工作流程與核心概念333
24.3.1 Git的工作流程333
24.3.2 Git的核心概念333
24.4 Git的常用命令與基本操作333
24.4.1 倉庫管理命令333
24.4.2 分支管理命令334
24.4.3 查看操作命令335
24.4.4 其他命令336
24.5 Git代碼伺服器的搭建336
24.5.1 Git協定336
24.5.2 環境準備337
24.5.3 搭建代碼管理伺服器337
第 25章 Docker容器技術入門340
25.1 Docker簡介340
25.1.1 什麼是Docker340
25.1.2 為什麼要使用Docker340
25.1.3 Docker名詞術語341
25.2 Docker的優點與套用場景342
25.2.1 Docker的優點342
25.2.2 Docker的套用場景342
25.3 Docker的部署344
25.3.1 Docker的部署要求344
25.3.2 Docker的部署操作344
25.4 Docker的網路模式345
25.4.1 host模式345
25.4.2 container模式345
25.4.3 none模式345
25.4.4 bridge模式346
25.5 Docker的數據存儲346
25.5.1 數據卷346
25.5.2 容器卷350
25.6 Docker容器的管理351
25.6.1 Docker容器的創建與刪除351
25.6.2 進入與退出容器352
25.6.3 Docker容器的運行353
25.6.4 Docker容器常用管理
命令353
第 26章 Docker鏡像倉庫的構建與鏡像管理365
26.1 Docker私有倉庫簡介365
26.1.1 什麼是私有倉庫365
26.1.2 為什麼需要私有倉庫365
26.2 構建Docker私有倉庫365
26.2.1 部署環境365
26.2.2 服務端部署366
26.2.3 客戶端配置367
26.3 私有鏡像倉庫測試367
26.3.1 客戶端測試環境準備367
26.3.2 上傳鏡像368
26.3.3 下載鏡像368
26.4 Dockerfile概述369
26.4.1 什麼是Dockerfile369
26.4.2 Dockerfile的組成369
26.4.3 Dockerfile的指令分類370
26.4.4 Dockerfile指令詳解370
26.5 通過Dockerfile快速構建鏡像372
26.5.1 編輯Dockerfile檔案373
26.5.2 構建過程373
26.5.3 通過構建的鏡像啟動容器374
第 27章 Docker三劍客375
27.1 Docker Machine375
27.1.1 什麼是Docker Machine375
27.1.2 Docker與Docker Machine的區別375
27.1.3 安裝Docker Machine375
27.1.4 Docker Machine命令幫助信息376
27.1.5 Docker Machine命令詳解377
27.1.6 Docker Machine命令實例操作377
27.1.7 Docker Machine配置實戰380
27.2 Docker Compose382
27.2.1 什麼是Docker Compose382
27.2.2 Docker Compose的工作流程382
27.2.3 Docker Compose的部署383
27.2.4 Docker Compose管理命令383
27.2.5 Docker Compose的配置檔案385
27.2.6 運行Docker Compose配置檔案386
27.2.7 Docker Compose配置實戰387
27.3 Docker Swarm391
27.3.1 什麼是Swarm391
27.3.2 Swarm集群版本391
27.3.3 Swarm的核心概念391
27.3.4 Swarm服務的運行部分391
27.3.5 Swarm的調度策略392
27.3.6 如何創建Swarm集群392
27.3.7 Docker Swarm常用管理命令393
27.3.8 Swarm集群的部署394
27.3.9 Docker Swarm部署服務實戰401
第 28章 自動化運維工具SaltStack服務404
28.1 SaltStack簡介404
28.1.1 什麼是SaltStack404
28.1.2 SaltStack的功能與工作方式404
28.2 SaltStack的安裝與部署405
28.2.1 部署環境405
28.2.2 SaltStack的安裝405
28.3 SaltStack認證配置407
28.3.1 salt-key命令407
28.3.2 配置認證407
28.4 SaltStack功能介紹408
28.4.1 SaltStack數據系統408
28.4.2 SaltStack檔案系統410
28.4.3 SaltStack遠程執行411
28.4.4 SaltStack配置管理414
28.5 SaltStack的Job管理416
28.5.1 Job簡介416
28.5.2 Job的基本管理417
架構運用篇
第 29章 MySQL性能最佳化及主從同步架構實踐421
29.1 資料庫最佳化421
29.1.1 硬體性能最佳化421
29.1.2 配置檔案最佳化421
29.2 MySQL主從同步概述423
29.2.1 為什麼需要主從同步架構423
29.2.2 MySQL主從同步的原理424
29.3 MySQL主從同步架構實踐424
29.3.1 環境準備424
29.3.2 配置MySQL主從同步425
29.3.3 驗證MySQL主從同步428
29.3.4 MySQL主從同步常見故障的處理429
第30章 MySQL高可用集群與讀寫分離架構實踐430
30.1 MySQL高可用架構概述430
30.1.1 主從架構430
30.1.2 MySQL DRBD架構431
30.1.3 MySQL MHA架構431
30.1.4 MySQL MMM架構432
30.1.5 MySQL Cluster架構433
30.2 MHA軟體概述433
30.2.1 MHA簡介433
30.2.2 MHA相關工具434
30.3 MHA高可用的部署與配置434
30.3.1 環境準備435
30.3.2 配置SSH免密登錄436
30.3.3 部署MHA軟體437
30.3.4 MHA高可用方案配置437
30.3.5 測試MHA故障切換440
30.3.6 解決實際生產場景問題441
30.4 MySQL讀寫分離架構實踐442
30.4.1 什麼是讀寫分離443
30.4.2 讀寫分離實現的方式443
30.4.3 讀寫分離工具Atlas簡介443
30.4.4 Atlas的部署與配置444
第31章 搭建企業日誌分析平台449
31.1 日誌概述449
31.1.1 日誌分類449
31.1.2 日誌級別449
31.2 ELK日誌系統449
31.2.1 ELK日誌系統簡介450
31.2.2 ELK日誌系統的部署450
31.2.3 收集系統日誌並展示效果453
31.3 配置Kibana登錄認證455
第32章 Linux伺服器集群架構案例實踐457
32.1 LVS+Keepalived集群實踐457
32.1.1 部署環境457
32.1.2 配置Keepalived457
32.1.3 啟動服務並測試458
32.1.4 測試故障切換460
32.2 Nginx+Keepalived集群實踐460
32.2.1 Keepalived與Nginx配置460
32.2.2 Nginx+Keepalived雙主企業架構實踐463
第33章 數據備份與運維管理467
33.1 數據備份概述467
33.2 企業常用的數據備份方法與實踐468
33.2.1 企業常用的數據備份方法468
33.2.2 數據備份實踐操作468
33.3 運維管理470
33.3.1 日常運維470
33.3.2 數據運維471
33.3.3 安全運維471