第一部分 Linux基础 1
第1章 Linux背景介绍 1
1.1那究竟什么是Linux? 1
1.2 Linux的起源 2
1.3为什么使用Linux 4
1.4 Linux主要发行版的特色和特点 5
1.4.1以用户群分类的Linux发行版 5
1.4.2以包管理方式分类的Linux发行版 6
1.5怎样选择适合我的Linux发行版? 7
1.6参考资料 8
第2章 部署Linux 9
2.1 RedHat和CentOS的区别与联系 9
2.2安装前我应该做好哪些工作? 9
2.2.1先搞清楚我都有哪些硬件 9
2.2.2安装前要了解的重点——Linux的磁盘管理方式 10
2.3 CentOS的安装 11
2.3.1获取CentOS的安装光盘 12
2.3.2启动我的计算机 13
2.3.3确定CentOS的安装模式 13
2.3.4选择安装过程中的语言 14
2.3.5选择我的键盘布局 15
2.3.6这台CentOS是拿来做什么的——配置系统安装类型 16
2.3.7注意!开始对硬盘进行分区 17
2.3.8配置启动管理器——由它来接管系统的启动 19
2.3.9重要的一步——配置网卡和网络 20
2.3.10系统安全配置 21
2.3.11选择系统语言 22
2.3.12设置Linux时区 23
2.3.13设置系统超级用户、初始账号和密码 23
2.3.14我们需要安装哪些软件包 24
2.3.15终于开始安装CentOS了 25
2.4 Debian GNU/Linux的安装 25
2.4.1为什么这么多人推荐使用Debian GNU/Linux? 25
2.4.2去哪里能搞到Debian Linux安装系统? 26
2.4.3启动计算机 26
2.4.4确定Debian 4.0的安装模式 26
2.4.5选择安装过程中的语言 27
2.4.6选择我的键盘布局 28
2.4.7配置网卡网络 29
2.4.8对硬盘进行分区 29
2.4.9设置超级用户、初始账号和密码 29
2.4.10选择从哪里获取和安装Debian的软件包 29
2.4.11这台Debian GNU/Linux拿来做什么——配置系统安装类型 31
2.4.12完成软件安装,设置如何启动我们的系统 31
第3章 Linux的管理思路和系统结构 33
3.1如何有效的对Linux进行管理?以Linux的思路去思考问题! 33
3.2出现问题时,如何获得帮助? 34
3.3关文件,一切都是文件! 35
3.4关于Linux目录结构的介绍 36
3.4.1 Linux目录的部署方式 36
3.4.2 /根目录介绍 37
3.4.3 /etc目录介绍——注册表是多么愚蠢的配置方式 37
3.4.3.1管理我的磁盘和硬件驱动 38
3.4.3.2让Linux按照我的要求启动 40
3.4.3.3保证用户和系统的安全 40
3.4.3.4控制用户的登录行为 41
3.4.3.5如何突破系统默认限制? 42
3.4.4 /proc目录介绍——随时了解我的系统状况 44
第二部分 Linux配置与管理 47
第4章 Linux基本配置 47
4.1网络就是计算机——Linux网络设置 47
4.1.1 Linux如何识别我的网卡? 47
4.1.2让Linux连上网——设置IP地址、子网掩码和默认路由 48
4.1.3让Linux与Internet在一起——设置Linux主机名和DNS服务器 49
4.1.4我习惯使用图形化网络工具配置网络 50
4.1.5听说高手都使用命令行工具配置网络 51
4.2 Linux启动时都运行了什么,我可以控制吗? 53
4.3 Linux的一些基本管理方法 55
4.3.1我有哪些硬件?Linux都支持吗? 55
4.3.1.1检查我的计算机里都有哪些设备——lspci命令 55
4.3.1.2我的Linux是如何识别这些设备的——dmesg命令 57
4.3.2我安装了哪些软件?都装在什么地方了? 57
4.3.2.1通过包管理系统管理软件 58
4.3.2.2通过源代码方式管理软件 61
4.3.2.3非包管理体系的二进制软件 61
4.3.3如何有效的规划和管理存储? 61
4.3.4 Linux的交换分区是干嘛的——兼谈内存管理 62
4.3.5如何查看和管理CPU 63
4.3.5.1先把系统中的CPU找出来 63
4.3.5.2 Linux碰到超线程与多核CPU怎么办? 64
4.3.5.3如果系统显示的CPU数量不对是怎么回事? 65
4.3.5.4了解系统中的CPU工作状态 66
4.3.6系统感觉很慢,怎样才能知道系统负载是否正常? 66
4.3.6.1如何检查系统的平均负载? 66
4.3.6.2如何检查网络负载 67
4.3.6.3如何检查磁盘负载? 68
4.3.7配置我自己的Linux——Linux管理中的常见问题和窍门 69
4.3.7.1什么是管道和重定向?它们有用吗 69
4.3.7.2如何定义自己的Shell? 71
4.3.7.3如何把MAN手册页转化为纯文本? 73
4.3.7.4现在都有哪些程序在运行?可以关闭一些程序吗? 74
4.3.7.5如何知道系统打开了哪些文件?是谁打开的?为什么打开? 74
第5章 Linux高级配置和管理 76
5.1编译系统——一切软件的运行基础 76
5.1.1了解编译器与操作系统的关系 76
5.1.2配置如何去编译软件 77
5.1.3补丁是什么?如何使用它? 78
5.2内核配置、编译和部署——怎样定制自己的内核 79
5.2.1先把内核从Internet上弄下来 80
5.2.2编译内核前的准备工作 80
5.2.3常见的内核配置选项 81
5.2.4针对不同环境的内核配置 83
5.2.5如何编译和安装新的内核 84
5.3 Java环境和JDK的部署与配置 85
5.3.1 JDK的下载和安装 86
5.3.2 JDK的环境设置 86
5.3.3如何保证Java环境处于最佳状态——进程与线程 87
5.4应用广泛的网络安全加密协议——SSL和TLS 89
5.4.1什么是非对称密码算法? 89
5.4.2那什么又是PKI和RSA? 90
5.4.3 SSL和TLS简介 90
5.4.4在Linux上实施SSL 91
5.5 PAM——可植入认证模块 94
5.5.1 PAM是个好东西 95
5.5.2 PAM的认证流程 95
5.5.3常见的PAM模块 96
5.5.4 PAM模块的参数使用 97
5.5.5 NSS——重要的名称服务切换 98
第三部分 传统的Internet服务器 101
第6章 DNS服务器——BIND 101
6.1我们每天都在用DNS 101
6.2 DNS的基础概念 102
6.3 Linux上的DNS系统——BIND 104
6.4安装BIND 9 DNS服务器 106
6.5我不负责任何域名的解析,只想让我的用户查询域名更快——缓存DNS服务 108
6.6我是这个域名的管理员,我要域名指向哪儿就指向哪儿——主DNS服务 111
6.7一个DNS服务器看来不够,需要多台服务器都提供解析服务——辅助DNS服务 113
6.8我需要协助他人进行域名解析——转发DNS服务 114
6.9如何解析域名,以便让别人可以方便的发邮件给我? 115
6.10 DNS服务器设置好了,让大家的Linux也用我的DNS服务吧 115
6.10.1让Linux按照我要求的顺序查询名字——配置/etc/host.conf 116
6.10.2指定Linux使用哪里的DNS服务器——配置/etc/resolv.conf 116
6.11如何检查我的域名解析是否正确?出现问题如何解决? 117
6.12如何构建安全的BIND DNS服务 119
6.13大型DNS系统技术——域名解析的动态加载DLZ 122
6.13.1要使用DLZ,在编译BIND时就要让它支持 123
6.13.2准备DLZ的数据来源 124
6.13.3配置BIND使用DLZ 124
6.13.4进行DLZ形式的DNS解析 124
第7章 电子邮件服务器——qmail 126
7.1什么是电子邮件? 126
7.2 Linux下有哪些电子邮件服务器?它们都有哪些优缺点? 127
7.3电子邮件服务工作细节——POP3.SMTP命令简介 128
7.3.1 SMTP协议的工作流程和命令 129
7.3.2 POP3协议的工作流程和命令 131
7.3.3 UNIX下的邮件格式 132
7.4为什么选择qmail? 133
7.5获取和安装qmail 134
7.5.1获取qmail 134
7.5.2获取qmail补丁 134
7.5.3准备安装qmail 135
7.5.4安装qmail 136
7.5.5如果要让qmail支持认证,得有一个认证程序——checkpassword 137
7.5.6协助qmail运行的守护程序——tcpserver 137
7.5.7另一个qmail守护程序——daemontools 138
7.5.8可以让用户和域管理变得更强大、更方便的程序——vpopmail 140
7.6 qmail是如何配置的 141
7.7先让qmail运行起来看看 143
7.8让qmail良好运行——使用daemontools控制qmail的运行 149
7.8.1把qmail设置为daemontools的一个服务 149
7.8.2为qmail设置附加的日志服务 150
7.8.3控制daemontools服务的启动、停止和状态 152
7.8.4一个完整的daemontoois控制脚本 152
7.9我现有的认证方式五花八门,怎样让qmail支持我的认证方式? 155
7.10管理qmail域、虚拟域、用户和别名 157
7.10.1用户管理 157
7.10.2邮件别名管理 157
7.10.3虚拟域管理 158
7.11 如果我使用vpopmail,那要如何管理qmail的虚拟域和用户 158
7.11.1当vpopmail使用文件系统存放用户信息时 158
7.11.2当vpopmail使用MySQL数据库存放用户信息时 159
7.11.3使用vpopmail时管理qmail的域 160
7.11.3.1使用vadddomain添加域 160
7.11.3.2使用vdeldomain删除域 161
7.11.3.3使用vmoddomain修改域 161
7.11.4使用vpopmail时管理qmail的用户 164
7.11.4.1使用vadduser添加用户 165
7.11.4.2使用vdeluser删除用户 165
7.11.4.3使用vmoduser修改用户 165
7.11.5使用vpopmail时管理qmail的别名 165
7.12我不欢迎有的人给我发邮件,怎样在服务器上直接过滤掉——maildrop上场 166
7.12.1获取和安装maildrop 166
7.12.2整合qmail和maildrop,让maildrop帮我们过滤不想要的邮件 168
7.13有了邮件过滤,还要反垃圾邮件吗? 168
7.13.1专业的反垃圾邮件系统——Spam-Assassin 169
7.13.2唯一比垃圾邮件更讨厌的,就是带病毒的垃圾邮件——Qmail病毒扫描方案 170
7.13.3让这些专业系统为qmail服务——安装qmail-scanner 171
7.13.4使用qmail-scanner 174
第8章 Mail服务器——Postfix 175
8.1我们还需要另一套邮件服务器系统吗? 175
8.2 Postfix简介 175
8.3 Postfix架构与工作流程 176
8.3.1 Postfix如何接收邮件 176
8.3.2 Postfix如何转发邮件 177
8.3.3 Postfix主要的配置文件和命令 179
8.4获取和安装Postfix 180
8.4.1从源代码开始安装Postfix 180
8.4.2以二进制方式安装Postfix 182
8.5配置Postfix 183
8.5.1让Postfix跑起来 183
8.5.2让Postfix支持SMTP认证 185
8.6控制我的Postfix服务器,让它按我的要求工作 187
8.6.1控制客户端如何访问我的Postfix 187
8.6.2利用Postfix自身的能力防范垃圾邮件 188
8.6.3调整Postfix的性能跟稳定性 190
8.7 Postfix也需要邮件过滤 191
8.7.1再次见到强大的maildrop邮件过滤系统 191
8.7.2让maildrop帮助Postfix过滤邮件 193
8.7.3还是专业的反垃圾邮件——Spam-Assassin 194
8.7.4让Postfix、maildrop和Spam-Assassin一起工作 194
8.7.5为客户提供杀毒服务——Postfix病毒扫描方案 194
8.7.6整合Postfix、maildrop和CIamAV 195
第9章 POP3与IMAP邮件服务器 196
9.1邮件访问协议——AP简介 196
9.2强大而复杂的IMAP命令 196
9.3另一个邮件领域的强者——Courier邮件服务器 202
9.3.1灵活、独立的基础认证服务——Courier authlib 202
9.3.2安装Courier authlib 202
9.3.3让Courier authlib为我们提供认证服务 203
9.4构建Courier POP3与IMAP服务 206
9.4.1安装Courier POP3/IMAP服务器 206
9.4.2配置Courier POP3服务 207
9.4.3启动Courier POP3服务并进行测试 208
9.4.4配置Courier IMAP服务 209
9.4.5启动Courier IMAP服务并测试一下 212
9.4.6构建安全的Courier POP3与I MAP服务 213
9.5邮件系统结构与角色总结 215
第10章 WWW 服务器——Apache 217
10.1为什么WWW如此流行? 217
10.2世界第一的WWW服务器——Apache 220
10.3我应该选择什么版本……Apache 1.3、2.0和2.2 221
10.4 Apache的安装 221
10.5在Apache中整合PHP——最流行的Web动态语言 223
10.6在Apache中整合Perl——曾经的cGI王者 226
10.7在Apache中整合Tomcat——新兴的Java容器组合 227
10.8在Apache中整合SSL——必要的安全措施 228
10.9让我们来了解一下Apache的配置文件 228
10.9.1配置Apache服务器的工作方式 229
10.9.2如何控制Apache的日志输出 231
10.9.3我要如何添加、配置Apache的模块? 233
10.9.4如何配置Apache以支持多个网站? 233
10.10 Internet很危险滴——使用SSL加密我们的WWW服务 234
10.10.1向用户证明自己是真正的服务提供者——基本的SSL认证配置 235
10.10.2让用户证明自己是合法的——双向的SSL认证配置 236
10.11 为不同用户提供不同的访问权限——Apache认证与授权 238
10.11.1最简单、易用的认证——纯文本用户认证 238
10.11.2和其他通用认证方式结合——使用LDAP目录作为数据来源的用户认证 240
第11章 FTP服务器——wu-ftpd、vsftpd和ProFTPD 242
11.1 FTP服务器的比较和选择 242
11.2强大的FTP服务器——wu-ftpd 243
11.2.1 wu-ftpd的获取和安装 243
11.2.2配置wu-ftpd 246
11.2.3控制用户访问 246
11.2.3.1显示不同的提示信息 247
11.2.3.2记录日志 248
11.3安全的FTP服务器——Vsftpd 249
11.3.1 vsftpd的获取和安装 249
11.3.2启动和停止vsftpd 250
11.4 vsftpd的基本配置 251
11.4.1让FTp服务器也使用SSL加密 252
11.4.2配置vsftpd日志 252
11.4.3如何控制用户对FTP服务器的访问 253
11.4.4定制我的vsftpd 255
11.4.5 vsftpd对不同FTP工作模式的支持 255
11.4.6节省网络资源——控制用户超时 256
11.4.7调整vsftpd的性能 256
11.5 vsftpd用户的管理 257
11.5.1为公众提供服务——那就使用匿名用户吧 257
11.5.2为已经存在的用户提供服务——只能使用本地用户了 258
11.5.3控制用户登录到我的vsftpd服务器 258
11.6获取和安装灵活的FTP服务器——ProFTPD 259
11.7 ProFTPD的基本配置 260
11.7.1配置一台最简单的ProFTPD 260
11.7.2配置允许匿名访问的ProFTPD 262
11.7.3在一台服务器上提供多个FTP服务——ProFTPD虚拟主机 263
11.8 ProFTPD权限指令解析 265
11.9相关资源 266
第12章 时间服务器——NTPD 267
12.1先了解一下Linux时间和时区 267
12.2在Linux下架设NTP服务器 269
12.2.1获取和安装NTP服务器 270
12.2.2 NTP服务器进程ntpd的基本配置 270
12.2.3 NTP服务器OK了,现在可以让客户端使用我的NTP服务了 272
12.3配置我的NTP服务器 273
12.3.1告诉我的NTP服务器如何去同步时间 273
12.3.2我只想为特定网络中的用户提供NTP服务 274
12.4怎样确保只有经过认证的用户,才能访问我的NTP服务? 275
12.5一个基本的NTP配置实例 275
第四部分 办公环境中的Linux服务器 278
第13章 目录服务器——OpenLDAP存在的意义 278
13.1什么是LDAP目录? 278
13.1.1 LDAP目录服务发展简史 278
13.1.2 LDAP目录服务的特点 279
13.1.3什么是LDAP目录树? 279
13.2 LDAP服务器介绍 280
13.2.1 OpenLDAP的获取 281
13.2.2怎样编译OpenLDAP 281
13.2.3启动和关闭OpenLDAP 284
13.3配置我的第一台OpenLDAP,让它run起来再说 286
13.4 管理OpenLDAP数据 289
13.4.1从头开始添加LDAP数据到OpenLDAP服务器 289
13.4.2从现有的OpenLDAP服务器中检索和获取数据 293
13.4.3添加、修改和删除现有的LDAP数据 295
13.5 OpenLDAP如何组织和管理数据——OpenLDAP模型管理 296
13.5.1什么是LDAP模型? 296
13.5.2 OpenLDAP模型的存储和组织 297
13.5.3 OpenLDAP模型的定义 298
13.5.4我的需求比较特殊,能否定义自己的LDAP模型? 300
13.6为不同用户提供不同的访问权限 301
13.6.1什么是访问控制列表?——LDAP ACL介绍 301
13.6.2用ACL来控制用户的访问权限 302
13.7 LDAP数据很重要,所以要特别注意安全管理 304
13.7.1使用ACL机制来提高OpenLDAP的安全性 304
13.7.2使用SSL来提高OpenLDAP的安全性 305
13.7.3使用SASL进行用户认证 308
13.8为用户提供分布式、高效的目录服务——OpenLDAP目录集群 308
13.8.1 OpenLDAP是如何实现集群的——slurpd复制简介 308
13.8.2配置我的OpenLDAP集群 309
13.8.3让LDAP为Linux主机提供认证 311
第14章 Windows文件服务器——Samba 313
14.1一般办公环境需要Windows服务器吗——Samba的起源 313
14.2微软网络共享协议的发展 314
14.3获取和安装Samba 315
14.4 Samba是如何工作的——Samba工作方式和体系介绍 317
14.5 Samba的基本配置 321
14.6 Samba认证和安全机制 324
14.6.1 Windows与Linux用户映射 324
14.6.2灵活的Samba用户权限 326
14.6.2.1一些常见的Samba权限配置 326
14.6.2.2配置一个大家都能写、但不能删除别人文件的目录 328
14.7有趣的Samba变量 329
14.8无限制扩展Samba的能力——虚拟文件系统 330
第15章 动态计算机配置服务器——dhcpd 335
15.1什么是动态计算机配置? 335
15.2简化网络管理员的工作——DHCP与BOOTP工作原理 335
15.3几种常见的DHCP地址管理方式 336
15.4 Linux下的DHCP服务器 337
15.4.1获取和安装dhcp 337
15.4.2配置我的第一台dhcp服务器 338
15.5 DHCP协议是如何工作的——DHCP服务器与客户端指令详解 340
15.5.1 DHCP服务器如何告诉别人自己可以提供IP地址? 340
15.5.2 dhcp客户端怎样找到网络中的DHCP服务器? 341
15.6 DHCP服务器配置详解 341
15.6.1让dhcpd按照我的要求运行——全局配置 341
15.6.2让dhcpd为指定的网络提供服务——子网配置 342
15.6.3有一些特殊用户需要特殊对待——单个客户配置 343
第16章 防火墙和IP伪装 344
16.1路由器是如何工作的?我们也能DIY专业的路由器吗? 344
16.2用LInux实现一个基本的路由器 346
16.3什么是包过滤——Linux Netfilter基础 346
16.4怎样让内部用户访问外部网络——NetFilter之伪装 349
16.5怎样让外部用户访问内部网络——NetFilter之重定向 350
16.6开始强大的Iptables之旅吧 352
16.6.1 iptables为何如此强大——它使用模块扩展自己的能力 352
16.6.2什么是iptables的表、链和规则? 352
16.6.3如何让iptables显示我们需要的信息? 354
16.6.4如何让iptables区分对待不同的服务、行为和数据? 355
16.6.5如何更精密的控制iptables匹配? 356
16.6.6最后,如何处理这些服务、行为和数据? 358
第17章 代理服务器——Squid和Socks5 361
17.1理服务器的原理和机制 361
17.1.1如果用户需要通过我们的代理访问Internet 362
17.1.2如果用户需要通过我们的代理访问我们内部的Web服务器 364
17.2 Linux下常用代理服务器软件介绍 365
17.2.1 Squid 365
17.2.2 Socks5 365
17.2.3 mod_proxy 366
17.3获取和安装Squid 366
17.3.1获取Squid 366
17.3.2编译和安装Squid 367
17.4 Squid基本配置 369
17.4.1让Squid为用户提供访问Internet的代理服务 369
17.4.2让用户感觉不到自己在使用代理上网——把Squid与网关结合起来提供透明代理服务 375
17.4.3用Squid为外部用户提供访问我们自己的Web服务器的代理服务 375
17.5控制哪些用户、如何访问我们的Squid 376
17.6要求用户证明自己的身份后才能访问我们的Squid代理 379
17.6.1使用最简单的NCSA方式验证用户 379
17.6.2使用常见的Windows NTLM方式验证用户 380
17.6.3使用MySQL数据库验证用户 381
17.6.4使用LDAP验证用户 383
17.7调整Squid性能 383
17.7.1优化Squid的网络 384
17.7.2配置Squid的缓存 384
17.7.3调整Squid的缓存对象 385
17.7.4扩展Squid的功能 387
17.7.5控制代理用户超时与网络超时 388
17.7.6让Squid配合我们进行管理 390
17.7.7 Squid的一些其他配置 390
17.8管理Squid的日志 392
17.9 Squid日志的分析 393
17.10强大的代理服务网络——Squid代理服务器集群 394
17.10.1什么是Squid代理服务器集群 394
17.10.2在Squid中配置代理服务器集群 395
17.11 socks5代理服务器 396
17.11.1获取和安装socks5代理服务器 396
17.11.2配置一台基本的socks5代理服务器 396
17.11.3更多的socks5配置选项 398
17.12参考资料 398
第18章 拨号和VPN服务器 399
18.1公共网络上的私有网络——什么是虚拟专网VPN? 399
18.2基于SSL的安全虚拟专网——SSL VPN 399
18.3 Linux下的VPN和SSL VPN介绍 400
18.4搭建Linux下的VPN服务器 400
18.4.1获取和安装PPTP服务器 400
18.4.2配置PPTP服务器 401
18.4.3启动和管理PPTP VPN服务 403
18.5搭建Linux下的SSL VPN服务器 406
18.5.1获取和安装OpenVPN 406
18.5.2配置SSL VPN服务 407
18.5.3使用SSL VPN服务 409
第19章 入侵检测服务器——Snort 412
19.1什么是入侵检测,什么是Snort 412
19.1.1网络中的便衣——什么是入侵检测 412
19.1.2什么是Snort 413
19.2部署Snort 414
19.2.1网络入侵检测系统的关键——设计IDS网络部署 414
19.2.2获取和安装Snort 416
19.3用作网络嗅探器的Snort 418
19.4 另一种常见嗅探器——tcpdump 421
19.5用作IDS节点的Snort 422
19.6让Snort按照我们的要求工作 423
19.6.1 Snort规则基础 424
19.6.2当检测到可能的风险时,Snort如何处理 424
19.6.3如何检测不同的协议 425
19.6.4如何匹配IP地址与端口号 425
19.6.5如何按照数据的流动方向检测风险 425
19.6.6对数据包进行分析检测——Snort核心 425
19.6.7最基本的分析检测规则 425
19.6.8分析检测数据包中的网络信息 426
19.6.9分析检测数据包中的内容信息 427
19.6.10在分析检测完成后做更多的事情 427
19.7保证Snort的正常运行 428
19.8参考资料 428
第20章 远程登录服务器——OpenSSH 429
20.1什么是安全的远程登录服务? 429
20.2获取与安装OpenSSH 430
20.3配置OpenSSH 431
20.4配置OpenSSH使用Public Key (RSA/DSA)证书认证 432
20.4.1在OpenSSH服务器上配置Public Key认证 432
20.4.2在Linux客户端上配置Public Key认证 432
20.4.3在Windows客户端上配置Public Key认证之SSH Secure Shell 433
20.4.4在Windows客户端上配置Public Key认证之SecureCRT 436
20.5让SSH为我们转接服务 438
20.6安全工具的安全措施 439
第21章 版本控制服务器——CVS 441
21.1版本控制工具的发展简史 441
21.2 CVS简介 442
21.3获取和安装CVS 442
21.4 CVS服务器结构 445
21.4.1什么是CVS仓库(Repository) 446
21.4.2那什么又是CVS模块(Module) 447
21.4.3 CVS如何组织、管理文件和目录 447
21.5使用CVS管理我们的源代码 447
21.5.1使用用户名、密码登录到CVS服务器 448
21.5.2创建第一个新项目 449
21.5.3从项目中提取源代码文件 450
21.5.4把本地的文件更新到远程CVS服务器中 451
21.5.5把远程CVS服务器的文件更新到本地 451
21.5.6添加本地文件到远程CVS服务器 452
21.5.7同时从本地和远程删除文件 452
21.5.8同时从本地和远程添加与删除目录 453
21.5.9从本地和远程移动文件与目录 453
21.5.10怎样检查一个文件在本地跟远程之间的区别 454
21.6 CVS权限管理 455
21.6.1使用CVS专用的用户名/密码文件管理认证 455
21.6.2使用系统用户管理CVS认证 456
第22章 源代码管理服务器——Subversion 458
22.1什么是Subversion? 458
22.2 Subversion的发展 458
22.3 Subversion与CVS的主要特性比较 458
22.4获取和安装Subversion 459
22.5 Subversion版本仓库规划 460
22.6创建Subversion版本仓库 461
22.7 Subversion认证与权限 463
22.7.1建立基于svnserve的Subversion网络服务 464
22.7.2 svnserve模式下的用户认证 465
22.7.3 svnserve模式下的权限控制 466
22.7.4控制每个目录的访问权限 467
22.7.5建立基于Apache的Subversion网络服务 468
22.7.6 Apache模式下的用户认证 469
22.8 Subversion版本仓库管理 470
22.8.1 Subversion版本仓库与事务树概念 470
22.8.2 Subversion如何存储和组织数据 470
22.8.3什么是Subversion钩子? 471
22.9 Subversion源代码管理 474
22.10常用的Subversion管理命令 474
22.10.1在服务器上查看当前的版本仓库内容——svnlook 474
22.10.2在服务器上管理版本库——svnadmin 476
22.10.3在服务器上直接导出、导入Subversion数据——svndumpfilter 476
第23章 备份与同步服务 479
23.1数据备份方式概述及Linux上的数据备份工具 479
23.2何时备份?备份什么?备份到哪儿?——浅谈备份策略 480
23.2.1如何定义自己的备份级别 480
23.2.2我应该把数据备份到哪里? 480
23.2.3我应该什么时候备份? 481
23.2.4多长时间备份一次合适? 481
23.2.5把这些备份因素综合起来 481
23.3本地文件备份 481
23.3.1 tar基本用法 482
23.3.2使用tar备份 486
23.4本地磁盘备份 487
23.5远程文件备份 488
23.5.1获取和安装rsync 489
23.5.2配置rsync服务器 489
23.5.3启动与检查rsync服务器 490
23.5.4配置需要验证的rsync服务器 491
23.5.5 rsync应用示例——日志的备份处理 493
第五部分 Linux高级应用服务器 495
第24章 Java容器——Tomcat 495
24.1 Serviet简介 495
24.2 Tomcat简介 496
24.3 Tomcat如何工作 496
24.4获取和安装TOmcat 497
24.5让Tomcat运行起来 499
24.6 Tomcat是如何组织它的目录的 500
24.7配置Tomcat 500
24.8管理和配置Tomcat用户及权限 504
24.9怎样通过浏览器管理Tomcat 505
24.10在Tomcat上部署Java Web应用 507
第25章 Java容器——Resin 509
25.1 Resin简介 509
25.2获取和安装Resin 509
25.3运行Resin 510
25.3.1独立的Resin 510
25.3.2与Apache结合的Resin 511
25.4管理Resin 513
25.4.1以浏览器方式管理Resin 513
25.4.2以配置文件方式管理Resin 514
25.4.3在Resin部署我们的应用 515
第26章 数据库服务器——MySQL 517
26.1什么是SQL? 517
26.2什么是MySQL? 518
26.3 MySQL的获取和安装 519
26.4让MySQL跑起来 520
26.5 什么是MySQL数据存储引擎?我应该用哪种存储引擎? 523
26.5.1 MySQL中的数据存储引擎 523
26.5.2如何在MySQL中使用不同的数据存储引擎 524
26.6使用MySQL 525
26.6.1从终端访问MySQL 525
26.6.2对MySQL进行一些基本的操作 526
26.6.3从外部导入数据到MySQL 529
26.7配置MySQL 531
26.8优化MySQL的性能 532
26.9建立强大的数据库集群——MySQL集群介绍 534
26.9.1 MySQL集群的结构 534
26.9.2安装集群中的所有MySQL服务器 535
26.9.3配置MySQL集群 535
26.9.4启动MySQL集群 537
26.9.5检查MySQL集群是否正常工作 538
第27章 数据库服务器——Oracle 540
27.1 Oracle的发展历程 540
27.2在Linux上安装Oracle 9i 541
27.2.1安装Oracle前的准备工作 541
27.2.2小心翼翼的安装Oracle 9i 543
27.2.2.1启动Oracle安装管理器 543
27.2.2.2确认Oracle安装的基本目录 545
27.2.2.3确定Oracle UNIX权限组 546
27.2.2.4安装过程中执行第一次root脚本 547
27.2.2.5确定Oracle安装文件位置和目标目录 547
27.2.2.6安装哪些Oracle产品 548
27.2.2.7确认Oracle数据库安装类型 548
27.2.2.8自定义安装Oracle 549
27.2.2.9确认Oracle其他组件的安装位置 549
27.2.2.10确认Oracle安装程序的权限 550
27.2.2.11安装完成后,是否创建Oracle数据库 550
27.2.2.12确认安装细节并开始Oracle的安装 551
27.2.2.13完成安装并执行第二次root脚本 552
27.2.3 Oracle 9i安装后的管理 552
27.3管理Oracle 9i 557
27.3.1增强Oracle终端界面的友好程度 557
27.3.2 Oracle的启动过程 558
27.3.3怎样安全的关闭Oracle 560
27.3.4配置Oracle的网络接口 561
27.3.5配置Oracle TNS网络 562
第28章 集群服务器——LVS 564
28.1什么是计算机集群? 564
28.2那什么又是LVS? 564
28.3 LVS的工作原理 565
28.4 LVS的工作模式 565
28.5如何部署LVS? 566
28.6 LVS的算法解析 567
28.7如何管理LVS? 568
28.7.1管理LVS的虚拟服务 568
28.7.2管理LVS的真实服务器 569
28.7.3查看和管理当前的LVS配置 570
第29章 Linux双机 571
29.1什么是双机? 571
29.2如何用Linux实现双机? 571
29.3 Heartbeat出场基于Linux的高可用性集群 571
29.4获取和安装Heartbeat 572
29.5通过Heartbeat部署HA 573
29.5.1 ha.cf 573
29.5.2 haresources 574
29.6启动HA 575
第六部分 发展中的Linux服务器 579
第30章 配置管理服务器——GNU cfengine 579
30.1什么是配置管理?我需要配置管理吗? 579
30.2什么是cfengine? 580
30.3 cfengine系统架构和流程 582
30.4获取与安装cfengine 582
30.5建立配置管理体系 584
30.6学会与cfengine沟通 588
30.7 cfengine配置文档结构 589
30.8使用cfengine的变量 591
30.8.1在cfengine管理中心进程中使用的变量 592
30.8.2在cfengine各个模块中都可以使用的变量 593
30.9 cfengine到底能为我们做什么? 595
30.9.1控制cfengine管理过程中的变量 596
30.9.2控制cfengine管理过程中的类 597
30.10让cfengine帮助我们管理整个系统 599
30.10.1让cfengine为我们复制需要的文件 599
30.10.2让cfengine帮我们管理系统网络 600
30.10.3让cfengine替我们管理磁盘 601
30.10.4 cfengine如何操作目录与文件 602
30.10.5禁止或者恢复系统文件 603
30.10.6编辑系统文件 603
30.10.6.1添加与插入指令 604
30.10.6.2替换指令 604
30.10.6.3编组指令 605
30.10.6.4注释指令 605
30.10.6.5删除指令 606
30.10.6.6其他指令 608
30.10.7让cfengine管理系统的链接 609
30.10.8监视和管理系统中的进程 611
30.10.9自动安装、删除和升级系统中的软件包 611
30.10.10通过cfengine自动执行指定的命令 613
30.11 看看如何真正让cfengine替我们干活 614
30.11.1建立基本配置文件 614
30.11.2建立配置管理文件 615
30.11.3在被管理的服务器上自动设定crontab 616
30.11.4在被管理的服务器上自动安装软件 617
30.11.5自动监控被管理服务器上的进程 618
30.11.6保证被管理服务器的系统文件一致 618
30.12如何解决cfengine管理架构中的问题 619
第31章 流媒体服务器——Helix Server 620
31.1 Linux下的流媒体服务器 620
31.2 RealNetworks Helix DNA Server的获取和安装 621
31.3启动Helix DNA Server 622
31.4让Helix DNA Server为我们提供服务 624
31.5管理Helix DNA Server 624
31.5.1服务器设置 625
31.5.2安全设置 626
31.5.3日志与监控 627
第32章 vol p服务器——Asterisk 628
32.1用LInux实现免费电话大餐 628
32.2用Asterisk提供免费的Vo1P服务 628
32.3获取Asterisk及其相关软件 629
32.4 Asterisk及其相关软件的安装 630
32.5 Asterisk硬件及其相关配置 635
32.5.1 Asterisk硬件板卡信令 635
32.5.2 Asterisk信令协议 636
32.5.3 Asterisk板卡配置实例 636
32.6 Asterisk软件基本配置 637
32.6.1可选的数据源配置 637
32.6.2 Asterisk基本配置 638
32.7我的第一台电话交换机——基本的分机、出入路由和DIalPlan 639
32.8与其他VoIP网络互联 641
32.8.1与其他Asterisk互联 641
32.8.2与公共volp网络相连 644
32.9 Asterisk DialPlan拨号方案初探 644
32.10更多有用的DialPlan 647
32.11Asterisk Realtlme 650