前言 17
第一部分 Linux基础 19
第1章 Linux背景介绍 19
1.1 那究竟什么是Linux? 19
1.2 Linux起源 20
1.3 为什么使用Linux 22
1.4 Linux主要发行版的特色和特点 23
1.4.1 以用户群分类的Linux发行版 23
1.4.2 以包管理方式分类的Linux发行版 24
1.5 怎样选择适合我的Linux发行版? 25
1.6 参考资料 26
第2章 部署Linux 26
2.1 RedHat和CentOS的区别和联系 26
2.2 安装前我应该做好哪些工作? 27
2.2.1 先搞清楚我都有哪些硬件 27
2.2.2 安装前要了解的重点——Linux磁盘管理方式 28
2.3 CentOS的安装 29
2.3.1 获取CentOS安装光盘 29
2.3.2 启动我的计算机 31
2.3.3 确定CentOS的安装模式 31
2.3.4 选择安装过程中的语言 32
2.3.5 选择我的键盘布局 34
2.3.6 这台CentOS拿来做什么——配置系统安装类型 36
2.3.7 注意!开始对硬盘分区 38
2.3.8 配置启动管理器 41
2.3.9 重要的一步:配置网卡和网络 43
2.3.10 系统安全配置 43
2.3.11 选择系统语言 44
2.3.12 设置Linux时区 45
2.3.13 设置系统超级用户. 初始帐号和密码 46
2.3.14 我们需要安装哪些软件包 47
2.3.15 终于开始安装CentOS了 48
2.4 Debian GNU/Linux的安装 49
2.4.1 为什么这么多人推荐使用Debian GNU/Linux? 49
2.4.2 去哪里能搞到Debian Linux安装系统? 49
2.4.3 启动计算机 50
2.4.4 确定Debian 4.0的安装模式 51
2.4.5 选择安装过程中的语言 51
2.4.6 选择我的键盘布局 52
2.4.7 配置网卡网络 53
2.4.8 对硬盘分区 53
2.4.9 设置超级用户. 初始帐号和密码 54
2.4.10 选择从哪里获取和安装Debian的软件包 55
2.4.11 这台Debian GNU/Linux拿来做什么——配置系统安装类型 56
2.4.12 完成软件安装, 设置如何启动我们的系统 57
第3章 Linux管理思路和和系统结构 57
3.1 如何有效的对Linux进行管理?以Linux的思路去思考问题! 58
3.2 出现问题时, 如何获得帮助? 59
3.3 文件, 一切都是文件! 60
3.4 Linux目录结构介绍 61
3.4.1 Linux目录部署方式 61
3.4.2 /根目录介绍 62
3.4.3 /etc目录介绍——注册表是多么愚蠢的配置方式 62
3.4.4 /proc目录介绍——随时了解我的系统状况 69
第二部分 Linux配置与管理 70
第4章 Linux基本配置 70
4.1 网络就是计算机——Linux网络设置 70
4.1.1 Linux如何识别我的网卡? 70
4.1.2 让Linux连上网——设置IP地址. 子网掩码和默认路由 72
4.1.3 让Linux与Internet在一起——设置Linux主机名和DNS服务器 73
4.1.4 我习惯使用图形化网络工具配置网络 73
4.1.5 听说高手都使用命令行工具配置网络 74
4.2 Linux启动时都运行了什么, 我可以控制吗? 76
4.3 Linux的一些基本管理方法 79
4.3.1 我有哪些硬件?Linux都支持吗? 79
4.3.2 我安装了哪些软件?都装在什么地方了? 81
4.3.3 如何有效的规划和管理存储? 85
4.3.4 Linux的交换分区是干嘛的——兼谈内存管理 87
4.3.5 如何查看和管理CPU 87
4.3.6 系统感觉很慢, 怎样才能知道系统负载是否正常? 90
4.3.7 配置我自己的Linux——Linux管理中的常见问题和窍门 93
第5章 Linux高级配置和管理 100
5.1 编译系统——一切软件的运行基础 101
5.1.1 了解编译器与操作系统的关系 101
5.1.2 配置如何去编译软件 102
5.1.3 补丁是什么?如何使用它? 103
5.2 内核配置. 编译和部署——怎样定制自己的内核 105
5.2.1 先把内核从Internet上弄下来 105
5.2.2 编译内核前的准备工作 106
5.2.3 常见的内核配置选项 106
5.2.4 针对不同环境的内核配置 109
5.2.5 如何编译和安装新的内核 109
5.3 Java环境和JDK的部署与配置 111
5.3.1 JDK的下载和安装 111
5.3.2 JDK的环境设置 111
5.3.3 如何保证Java环境处于最佳状态——进程与线程 112
5.4 应用广泛的网络安全加密协议——SSL和TLS 114
5.4.1 什么是非对称密码算法? 114
5.4.2 那什么又是PKI和RSA? 115
5.4.3 SSL和TLS简介 116
5.4.4 在Linux上实施SSL 116
5.5 PAM——可植入认证模块 120
5.5.1 PAM是个好东西 120
5.5.2 PAM的认证流程 121
5.5.3 常见PAM模块 122
5.5.4 PAM 模块的参数使用 122
5.5.5 NSS——重要的名称服务切换 123
第三部分 传统的Internet服务器 125
第6章 DNS服务器——BIND 125
6.1 我们每天都在用DNS 125
6.2 DNS 基础概念 126
6.3 Linux上的DNS系统——BIND 128
6.4 安装BIND 9 DNS服务器 130
6.5 我不负责任何域名的解析, 只想让我的用户查询域名更快——缓存DNS服务 132
6.6 我是这个域名的管理员, 我要域名指向哪就指向哪——主DNS服务 136
6.7 一个DNS服务器看来不够, 需要多台服务器都提供解析服务——辅助DNS服务 137
6.8 我需要协助他人进行域名解析——转发DNS服务 138
6.9 如何解析域名, 以便让别人可以方便的发邮件给我? 139
6.10 DNS服务器好了, 让大家的Linux也用我的DNS服务吧 139
6.10.1 让Linux按照我要求的顺序查询名字——配置/etc/host.conf 140
6.10.2 指定Linux使用哪里的DNS服务器——配置/etc/resolv.conf 140
6.11 如何检查我的域名解析是否正确?出现问题如何解决? 141
6.12 如何构建安全的BIND DNS服务 143
6.13 大型DNS系统技术:域名解析的动态加载DLZ 146
6.13.1 要使用DLZ, 在编译BIND时就要让它支持 147
6.13.2 准备DLZ的数据来源 147
6.13.3 配置BIND使用DLZ 148
6.13.4 进行DLZ形式的DNS解析 148
第7章 电子邮件服务器——qmail 150
7.1 什么是电子邮件? 150
7.2 Linux下有哪些电子邮件服务器?它们都有哪些优缺点? 152
7.3 电子邮件服务工作细节——POP3. SMTP命令简介 153
7.3.1 SMTP协议工作流程和命令 153
7.3.2 POP3协议工作流程和命令 155
7.3.3 UNIX下的邮件格式 156
7.4 为什么选择qmail? 157
7.5 获取和安装qmail 158
7.5.1 获取qmail 158
7.5.2 获取qmail补丁 158
7.5.3 准备安装qmail 160
7.5.4 安装qmail 160
7.5.5 如果要让qmail支持认证, 得有一个认证程序——checkpassword 161
7.5.6 协助qmail运行的守护程序:tcpserver 162
7.5.7 另一个qmail守护程序:daemontools 162
7.5.8 可以让用户和域管理更强大. 更方便的程序:vpopmail 164
7.6 qmail是如何配置的 165
7.7 先让qmail运行起来看看 167
7.8 让qmail良好运行——使用daemontools控制qmail运行 172
7.8.1 把qmail设置为daemontools的一个服务 172
7.8.2 为qmail设置附加的日志服务 174
7.8.3 控制daemontools服务的启动. 停止和状态 175
7.8.4 一个完整的daemontools控制脚本 176
7.9 我现有的认证方式五花八门, 怎样让qmail支持我的认证方式? 179
7.10 管理qmail域. 虚拟域. 用户和别名 180
7.10.1 用户管理 181
7.10.2 邮件别名管理 181
7.10.3 虚拟域管理 181
7.11 如果我使用vpopmail, 那要如何管理qmail的虚拟域和用户 182
7.11.1 当vpopmail使用文件系统存放用户信息时 182
7.11.2 当vpopmail使用MySQL数据库存放用户信息时 183
7.11.3 使用vpopmail时管理qmail的域 184
7.11.4 使用vpopmail时管理qmail的用户 189
7.11.5 使用vpopmail时管理qmail的别名 190
7.12 我不欢迎有的人给我发邮件, 怎样直接在服务器上过滤掉——maildrop上场 190
7.12.1 获取和安装maildrop 191
7.12.2 整合qmail和maildrop, 让maildrop帮我们过滤不想要的邮件 192
7.13 有了邮件过滤, 还要反垃圾邮件吗? 193
7.13.1 专业的反垃圾邮件系统——Spam-Assassin 193
7.13.2 唯一比垃圾邮件更讨厌的, 就是带病毒的垃圾邮件——Qmail病毒扫描方案 194
7.13.3 让这些专业系统为qmail服务——安装qmail-scanner 195
7.13.4 使用qmail-scanner 198
第8章 Mail服务器——Postfix 198
8.1 Postfix简介 198
8.2 Postfix架构与工作流程 199
8.2.1 Postfix如何接收邮件 199
8.2.2 Postfix如何转发邮件 201
8.2.3 Postfix主要配置文件和命令 202
8.3 获取和安装Postfix 204
8.3.1 从源代码开始安装Postfix 204
8.3.2 以二进制方式安装Postfix 206
8.4 配置Postfix 207
8.4.1 让Postfix跑起来 207
8.4.2 让Postfix支持SMTP认证 209
8.5 控制我的Postfix服务器, 让它按我的要求工作 211
8.5.1 控制客户端如何访问我的Postfix 211
8.5.2 利用Postfix自身的能力防范垃圾邮件 212
8.5.3 调整Postfix的性能跟稳定性 213
8.6 Postfix也需要邮件过滤 214
8.6.1 再次见到强大的maildrop邮件过滤系统 215
8.6.2 让maildrop帮助Postfix过滤邮件 216
8.6.3 还是专业的反垃圾邮件Spam-Assassin 217
8.6.4 让Postfix. maildrop和Spam-Assassin一起工作 217
8.6.5 为客户提供杀毒服务——Postfix病毒扫描方案 218
8.6.6 整合Postfix. maildrop和ClamAV 218
第9章 POP3与IMAP邮件服务器 219
9.1 邮件访问协议IMAP简介 219
9.2 强大而复杂的IMAP命令 220
9.3 另一个邮件领域的强者——Courier 邮件服务器 225
9.3.1 灵活. 独立的基础认证服务——Courier authlib 225
9.3.2 安装Courier authlib 225
9.3.3 让Courier authlib为我们提供认证服务 227
9.4 构建Courier POP3与IMAP服务 229
9.4.1 安装Courier POP3/IMAP服务器 229
9.4.2 配置Courier POP3服务 230
9.4.3 启动Courier POP3服务并进行测试 231
9.4.4 配置Courier IMAP服务 232
9.4.5 启动Courier IMAP服务并测试一下 234
9.4.6 构建安全的Courier POP3与IMAP服务 236
9.5 邮件系统结构与角色总结 238
第10章 WWW服务器——Apache 240
10.1 为什么WWW如此流行? 241
10.2 世界第一的WWW服务器——Apache 244
10.3 我应该选择什么版本……Apache 1.3. 2.0和2.2 244
10.4 Apache的安装 245
10.5 在Apache中整合PHP——最流行的Web动态语言 246
10.6 在Apache中整合Perl——曾经的CGI王者 248
10.7 在Apache中整合Tomcat——新兴的Java容器组合 249
10.8 在Apache中整合SSL——必要的安全措施 250
10.9 让我们来了解一下Apache配置文件 250
10.9.1 配置Apache服务器的工作方式 251
10.9.2 如何控制Apache的日志输出 253
10.9.3 我要如何添加. 配置Apache的模块? 254
10.9.4 如何配置Apache以支持多个网站? 255
10.10 Internet很危险滴——使用SSL加密我们的WWW服务 256
10.10.1 向用户证明自己是真正的服务提供者——基本的SSL认证配置 257
10.10.2 让用户证明自己是合法的——双向的SSL认证配置 258
10.11 为不同用户提供不同的访问权限——Apache认证与授权 260
10.11.1 最简单. 易用的认证——纯文本用户认证 261
10.11.2 和其他通用认证方式结合——使用LDAP目录作为数据来源的用户认证 263
第11章 FTP服务器——wu-ftpd. vsftpd和ProFTPD 264
11.1 FTP服务器的比较和选择 264
11.2 强大的FTP服务器——wu-ftpd 265
11.2.1 wu-ftpd的获取和安装 265
11.2.2 配置wu-ftpd 267
11.2.3 控制用户访问 267
11.3 安全的FTP服务器——vsftpd 271
11.3.1 vsftpd的获取和安装 271
11.3.2 启动和停止vsftpd 271
11.4 vsftpd的基本配置 273
11.4.1 让FTP服务器也使用SSL加密 273
11.4.2 配置vsftpd日志 274
11.4.3 如何控制用户对FTP服务器的访问 274
11.4.4 定制我的vsftpd 276
11.4.5 vsftpd对不同FTP工作模式的支持 277
11.4.6 节省网络资源——控制用户超时 278
11.4.7 调整vsftpd的性能 278
11.5 vsftpd用户的管理 279
11.5.1 为公众提供服务——那就使用匿名用户吧 279
11.5.2 为已经存在的用户提供服务——只能使用本地用户了 280
11.5.3 控制用户登录到我的vsftpd服务器 280
11.6 灵活的FTP服务器——ProFTPD 281
11.6.1 获取和安装ProFTPD 281
11.7 ProFTPD基本配置 282
11.7.1 配置一台最简单的ProFTPD 282
11.7.2 配置允许匿名访问的ProFTPD 284
11.7.3 在一台服务器上提供多个FTP服务——ProFTPD虚拟主机 285
11.8 ProFTPD 权限指令解析 287
11.9 相关资源 288
第12章 时间服务器——NTPD 288
12.1 先了解一下Linux时间和时区 289
12.2 在Linux下架设NTP服务器 291
12.2.1 获取和安装NTP服务器 291
12.2.2 NTP服务器进程ntpd的基本配置 292
12.2.3 NTP服务器好了, 现在可以让客户端使用我的NTP服务了 293
12.3 配置我的NTP服务器 295
12.3.1 告诉我的NTP服务器如何去同步时间 295
12.3.2 我只想为特定网络中的用户提供NTP服务 296
12.4 怎样确保只有经过认证的用户, 才能访问我的NTP服务? 296
12.5 一个基本的NTP配置实例 297
第四部分 办公环境中的Linux服务器 298
第13章 目录服务器——OpenLDAP 298
13.1 什么是LDAP目录? 300
13.1.1 LDAP目录服务发展简史 300
13.1.2 LDAP目录服务的特点 300
13.1.3 什么是LDAP目录树? 301
13.2 LDAP服务器介绍 302
13.2.1 OpenLDAP的获取 303
13.2.2 怎样编译OpenLDAP 303
13.2.3 启动和关闭OpenLDAP 306
13.3 配置我的第一台OpenLDAP, 让它run起来再说 308
13.4 管理OpenLDAP数据 310
13.4.1 从头开始添加LDAP数据到OpenLDAP服务器 311
13.4.2 从现有的OpenLDAP服务器中检索和获取数据 315
13.4.3 添加. 修改和删除现有的LDAP数据 317
13.5 OpenLDAP如何组织和管理数据——OpenLDAP模型管理 318
13.5.1 什么是LDAP模型? 318
13.5.2 OpenLDAP模型的存储和组织 319
13.5.3 OpenLDAP模型的定义 320
13.5.4 我的需求比较特殊, 能否定义自己的LDAP模型? 322
13.6 为不同用户提供不同的访问权限 323
13.6.1 什么是访问控制列表?——LDAP ACL介绍 323
13.6.2 用ACL来控制用户的访问权限 324
13.7 LDAP数据很重要, 所以要特别注意安全管理 326
13.7.1 使用ACL机制来提高OpenLDAP安全性 326
13.7.2 使用SSL来提高OpenLDAP安全性 327
13.7.3 使用SASL进行用户认证 330
13.8 为用户提供分布式. 高效的目录服务——OpenLDAP目录集群.. 330
13.8.1 OpenLDAP是如何实现集群的——slurpd复制简介 330
13.8.2 配置我的OpenLDAP集群 331
13.8.3 让LDAP为Linux主机提供认证 333
第14章 Windows文件服务器——Samba 334
14.1 一般办公环境需要Windows服务器么——Samba起源 334
14.2 微软网络共享协议发展 335
14.3 获取和安装Samba 337
14.4 Samba是如何工作的——Samba工作方式和体系介绍 339
14.5 Samba的基本配置 343
14.6 Samba认证和安全机制 345
14.6.1 Windows与Linux用户映射 345
14.6.2 灵活的Samba用户权限 348
14.7 有趣的Samba变量 350
14.8 无限制扩展Samba的能力——虚拟文件系统 352
第15章 动态计算机配置服务器——dhcpd 355
15.1 什么是动态计算机配置? 356
15.2 简化网络管理员的工作——DHCP与BOOTP工作原理 356
15.3 几种常见的DHCP 地址管理方式 357
15.4 Linux下的DHCP服务器 358
15.4.1 获取和安装dhcp 358
15.4.2 配置我的第一台dhcp服务器 359
15.5 DHCP协议是如何工作的——DHCP服务器与客户端指令详解 361
15.5.1 DHCP服务器如何告诉别人自己可以提供IP地址? 361
15.5.2 dhcp客户端怎样找到网络中的DHCP服务器? 362
15.6 DHCP服务器配置详解 362
15.6.1 让dhcpd按照我的要求运行——全局配置 363
15.6.2 让dhcpd为指定的网络提供服务——子网配置 363
15.6.3 有一些特殊用户需要特殊对待——单个客户配置 364
第16章 防火墙和IP伪装 364
16.1 路由器是如何工作的?我们也能DIY专业的路由器吗? 364
16.2 用Linux实现一个基本的路由器 366
16.3 什么是包过滤——Linux NetFilter基础 367
16.4 怎样让内部用户访问外部网络——NetFilter之伪装 370
16.5 怎样让外部用户访问内部网络——NetFilter之重定向 371
16.6 开始强大的iptables之旅吧 372
16.6.1 iptables为何如此强大?它使用模块扩展自己的能力 372
16.6.2 什么是iptables的表. 链和规则 373
16.6.3 如何让iptables显示我们需要的信息? 375
16.6.4 如何让iptables区分对待不同的服务. 行为和数据? 376
16.6.5 如何更精密的控制iptables匹配? 377
16.6.6 最后, 如何处理这些服务. 行为和数据? 379
第17章 代理服务器——Squid和Socks5 381
17.1 代理服务器的原理和机制 381
17.1.1 如果用户需要通过我们的代理访问Internet 382
17.1.2 如果用户需要通过我们的代理访问我们内部的Web服务器 384
17.2 Linux下常用代理服务器软件介绍 385
17.2.1 Squid 385
17.2.2 Socks5 386
17.2.3 mod_proxy 386
17.3 获取和安装Squid 387
17.3.1 获取Squid 387
17.3.2 编译和安装Squid 387
17.4 Squid基本配置 390
17.4.1 让Squid为用户提供访问Internet的代理服务 390
17.4.2 让用户感觉不到自己在使用代理上网——把Squid与网关结合起来提供透明代理服务 396
17.4.3 用Squid为外部用户提供访问我们自己Web服务器的代理服务 396
17.5 控制哪些用户. 如何访问我们的Squid 397
17.6 要求用户证明自己的身份后才能访问我们的Squid代理 400
17.6.1 使用最简单的NCSA方式验证用户 400
17.6.2 使用常见的Windows NTLM方式验证用户 401
17.6.3 使用MySQL数据库验证用户 402
17.6.4 使用LDAP验证用户 403
17.7 调整Squid性能 404
17.7.1 优化Squid的网络 404
17.7.2 配置Squid的缓存 405
17.7.3 调整Squid的缓存对象 406
17.7.4 扩展Squid的功能 408
17.7.5 控制代理用户超时与网络超时 409
17.7.6 让Squid配合我们进行管理 410
17.7.7 Squid的一些其他配置 411
17.8 管理Squid的日志 412
17.9 Squid日志的分析 413
17.10 强大的代理服务网络——Squid代理服务器集群 415
17.10.1 什么是Squid代理服务器集群 415
17.10.2 在Squid中配置代理服务器集群 415
17.11 socks5代理服务器 416
17.11.1 获取和安装socks5代理服务器 416
17.11.2 配置一台基本的socks5代理服务器 417
17.11.3 更多的socks5配置选项 418
17.12 参考资料 419
第18章 拨号和VPN服务器 419
18.1 公共网络上的私有网络——什么是虚拟专网VPN? 419
18.2 基于SSL的安全虚拟专网——SSL VPN 420
18.3 Linux下的VPN和SSL VPN介绍 420
18.4 搭建Linux下的VPN服务器 420
18.4.1 获取和安装PPTP服务器 421
18.4.2 配置PPTP服务器 421
18.4.3 启动和管理PPTP VPN服务 423
18.5 搭建Linux下的SSL VPN服务器 427
18.5.1 获取和安装OpenVPN 428
18.5.2 配置SSL VPN服务 429
18.5.3 使用SSL VPN服务 430
第19章 入侵检测服务器——Snort 432
19.1.1 网络中的便衣——什么是入侵检测 432
19.1.2 什么是Snort 434
19.2 部署Snort 435
19.2.1 网络入侵检测系统的关键——设计IDS网络部署 435
19.2.2 获取和安装Snort 437
19.3 用作网络嗅探器的Snort 439
19.4 另一种常见嗅探器——tcpdump 442
19.5 用作IDS节点的Snort 443
19.6 让Snort按照我们的要求工作 444
19.6.1 Snort规则基础 444
19.6.2 当检测到可能的风险时, Snort如何处理? 445
19.6.3 如何检测不同的协议 445
19.6.4 如何匹配IP地址与端口号 446
19.6.5 如何按照数据流动方向检测风险 446
19.6.6 对数据包进行分析检测——Snort核心 446
19.6.7 最基本的分析检测规则 446
19.6.8 分析检测数据包中的网络信息 447
19.6.9 分析检测数据包中的内容信息 448
19.6.10 在分析检测完成后做更多的事情 448
19.7 保证Snort的正常运行 449
19.8 参考资料 449
第20章 远程登陆服务器——OpenSSH 450
20.1 什么是安全的远程登陆服务? 450
20.2 获取与安装OpenSSH 451
20.3 配置OpenSSH 452
20.4 配置OpenSSH使用Public Key(RSA/DSA)证书认证 453
20.4.1 在OpenSSH服务器上配置Public Key认证 453
20.4.2 在Linux客户端上配置Public Key认证 453
20.4.3 在Windows客户端上配置Public Key认证之SSH Secure Shell 454
20.4.4 在Windows客户端上配置Public Key认证之SecureCRT 458
20.5 让SSH为我们转接服务 462
20.6 安全工具的安全措施 462
第21章 版本控制服务器——CVS 464
21.1 版本控制工具发展简史 464
21.2 CVS简介 465
21.3 获取和安装CVS 465
21.4 CVS服务器结构 469
21.4.1 什么是CVS仓库(Repository) 469
21.4.2 那什么又是CVS模块(Module) 470
21.4.3 CVS如何组织. 管理文件和目录 471
21.5 使用CVS管理我们的源代码 471
21.5.1 使用用户名. 密码登录到CVS服务器 471
21.5.2 创建第一个新项目 472
21.5.3 从项目中提取源代码文件 474
21.5.4 把本地的文件更新到远程CVS服务器中 475
21.5.5 把远程CVS服务器的文件更新到本地 476
21.5.6 添加本地文件到远程CVS服务器 476
21.5.7 同时从本地和远程删除文件 477
21.5.8 同时从本地和远程添加与删除目录 477
21.5.9 从本地和远程移动文件与目录 478
21.5.10 怎样检查一个文件, 在本地跟远程之间的区别 478
21.6 CVS权限管理 479
21.6.1 使用CVS专用的用户名/密码文件管理认证 480
21.6.2 使用系统用户管理CVS认证 481
第22章 源代码管理服务器——Subversion 481
22.1 什么是Subversion? 481
22.2 Subversion的发展 481
22.3 Subversion与CVS主要特性比较 482
22.4 获取和安装Subversion 482
22.5 Subversion版本仓库规划 483
22.6 创建Subversion版本仓库 484
22.7 Subversion认证与权限 487
22.7.1 建立基于svnserve的Subversion网络服务 487
22.7.2 svnserve模式下的用户认证 489
22.7.3 svnserve模式下的权限控制 490
22.7.4 控制每个目录的访问权限 490
22.7.5 建立基于Apache的Subversion网络服务 491
22.7.6 Apache模式下的用户认证 492
22.8 Subversion版本仓库管理 493
22.8.1 Subversion版本仓库与事务树概念 493
22.8.2 Subversion如何存储和组织数据 494
22.8.3 什么是Subversion钩子? 495
22.9 Subversion源代码管理 497
22.10 常用的Subversion管理命令 497
22.10.1 在服务器上查看当前的版本库内容——svnlook 498
22.10.2 在服务器上管理版本库——svnadmin 499
22.10.3 在服务器上直接导出. 导入Subversion数据——svndumpfilter 500
第23章 备份与同步服务 502
23.1.1 数据备份方式概述 502
23.1.2 Linux上的数据备份工具 503
23.2 何时备份?备份什么?备份到哪?——浅谈备份策略 503
23.2.1 如何定义自己的备份级别 503
23.2.2 我应该把数据备份到哪里? 503
23.2.3 我应该什么时候备份? 504
23.2.4 多长时间备份一次合适? 504
23.2.5 把这些备份因素综合起来 505
23.3 本地文件备份 505
23.3.1 tar基本用法 505
23.3.2 使用tar备份 510
23.4 本地磁盘备份 510
23.5 远程文件备份 511
23.5.1 获取和安装rsync 512
23.5.2 配置rsync服务器 512
23.5.3 启动与检查rsync服务器 513
23.5.4 配置需要验证的rsync服务器 515
23.5.5 rsync应用示例 517
第五部分Linux高级应用服务器 518
第24章 Java 容器——Tomcat 518
24.1 Servlet简介 518
24.2 Tomcat简介 519
24.3 Tomcat如何工作 520
24.4 获取和安装Tomcat 521
24.5 让Tomcat运行起来 522
24.6 Tomcat是如何组织它的目录的 523
24.7 配置Tomcat 524
24.8 管理和配置Tomcat用户及权限 528
24.9 怎样通过浏览器管理Tomcat 529
24.10 在Tomcat上部署Java Web应用 531
第25章 Java容器——Resin 532
25.1 Resin简介 532
25.2 获取和安装Resin 533
25.3 运行Resin 534
25.3.1 独立的Resin 534
25.3.2 与Apache结合的Resin 535
25.4 管理Resin 537
25.4.1 以浏览器方式管理Resin 537
25.4.2 以配置文件方式管理Resin 538
25.4.3 在Resin部署我们的应用 539
第26章 数据库服务器——MySQL 541
26.1 什么是SQL? 541
26.2 什么是MySQL 542
26.3 MySQL的获取和安装 543
26.4 让MySQL跑起来 544
26.5 什么是MySQL数据存储引擎?我应该用哪种存储引擎? 547
26.5.1 MySQL中的数据存储引擎 547
26.5.2 如何在MySQL中使用不同的数据存储引擎 548
26.6 使用MySQL 549
26.6.1 从终端访问MySQL 549
26.6.2 对MySQL进行一些基本的操作 550
26.6.3 从外部导入数据到MySQL 553
26.7 配置MySQL 555
26.8 优化MySQL的性能 556
26.9 建立强大的数据库集群——MySQL集群介绍 558
26.9.1 MySQL集群结构 559
26.9.2 安装集群中的所有MySQL服务器 560
26.9.3 配置MySQL集群 560
26.9.4 启动MySQL集群 562
26.9.5 检查MySQL集群是否正常工作 562
第27章 数据库服务器——Oracle 564
27.1 Oracle发展历程 564
27.2 在Linux上安装Oracle 9i 565
27.2.1 安装Oracle前的准备工作 565
27.2.2 小心翼翼的安装Oracle 9i 567
27.2.3 Oracle 9i安装后的管理 582
27.3 管理Oracle 9i 591
27.3.1 增强Oracle终端界面的友好程度 591
27.3.2 Oracle的启动过程 592
27.3.3 怎样安全的关闭Oracle 594
27.3.4 配置Oracle网络接口 595
27.3.5 配置Oracle TNS网络 597
第28章 集群服务器——LVS 597
28.1 什么是计算机集群? 597
28.2 那什么又是LVS? 598
28.3 LVS的工作原理 598
28.4 LVS的工作模式 599
28.5 如何部署LVS? 600
28.6 LVS的算法解析 601
28.7 如何管理LVS? 602
28.7.1 管理LVS的虚拟服务 602
28.7.2 管理LVS的真实服务器 603
28.7.3 查看和管理当前的LVS配置 604
第29章 Linux双机 605
29.1 什么是双机? 605
29.2 如何用Linux实现双机? 605
29.3 Heartbeat出场 605
29.4 获取和安装Heartbeat 606
29.5 通过Heartbeat部署HA 607
29.5.1 ha.cf 607
29.5.2 haresources 608
29.6 启动HA 609
第六部分 发展中的Linux服务器 612
第30章 配置管理服务器——GNU cfengine 612
30.1 什么是配置管理?我需要配置管理吗? 613
30.2 什么是cfengine? 613
30.3 cfengine系统架构和流程 615
30.4 获取与安装cfengine 616
30.5 建立配置管理体系 617
30.6 学会与cfengine沟通 621
30.7 cfengine配置文档结构 622
30.8 使用cfengine的变量 625
30.8.1 在cfengine管理中心进程中使用的变量 625
30.8.2 在cfengine各个模块中都可以使用的变量 627
30.9 cfengine到底能为我们做什么? 629
30.9.1 控制cfengine管理过程中的变量 629
30.9.2 控制cfengine管理过程中的类 630
30.10 让cfengine帮助我们管理整个系统 632
30.10.1 让cfengine为我们复制需要的文件 632
30.10.2 让cfengine帮我们管理系统网络 634
30.10.3 让cfengine替我们管理磁盘 634
30.10.4 cfengine能如何操作目录与文件 635
30.10.5 禁止或者恢复系统文件 636
30.10.6 编辑系统文件 637
30.10.7 让cfengine管理系统的链接 643
30.10.8 监视和管理系统中的进程 644
30.10.9 自动安装. 删除和升级系统中的软件包 645
30.10.10 通过cfengine自动执行指定的命令 646
30.11 看看如何真正让cfengine替我们干活 647
30.11.1 建立基本配置文件 647
30.11.2 建立配置管理文件 649
30.11.3 在被管理的服务器上自动设定crontab 649
30.11.4 在被管理的服务器上自动安装软件 651
30.11.5 自动监控被管理服务器上的进程 652
30.11.6 保证被管理服务器的系统文件一致 652
30.12 如何解决cfengine管理架构中的问题 653
第31章 流媒体服务器——Helix Server 653
31.1 Linux下的流媒体服务器 654
31.2 RealNetworks Helix DNA Server的获取和安装 654
31.3 启动Helix DNA Server 656
31.4 让Helix DNA Server为我们提供服务 657
31.5 管理Helix DNA Server 658
31.5.1 服务器设置 659
31.5.2 安全设置 660
31.5.3 日志与监控 661
第32章 VoIP服务器——Asterisk 662
32.1 用Linux实现免费电话大餐 662
32.2 用Asterisk提供免费的VoIP服务 663
32.3 获取Asterisk及其相关软件 664
32.4 Asterisk及其相关软件的安装 665
32.5 Asterisk硬件及其相关配置 669
32.5.1 Asterisk硬件板卡信令 669
32.5.2 Asterisk信令协议 670
32.5.3 Asterisk板卡配置实例 670
32.6 Asterisk软件基本配置 671
32.6.1 可选的数据源配置 672
32.6.2 Asterisk基本配置 673
32.7 我的第一台电话交换机——基本的分机. 出入路由和DialPlan 674
32.8 与其他VoIP网络互联 676
32.8.1 与其他Asterisk互联 676
32.8.2 与公共VoIP网络相连 678
32.9 Asterisk DialPlan拨号方案初探 679
32.10 更多有用的DialPlan 682
32.11 Asterisk Realtime 684