Apache服务器
![](/icons/49834de.gif)
设置文件位于/usr/local/apache/conf/目录下
![](/icons/49834dou.gif)
传统上使用 3个配置文件httpd.conf, access.conf和srm.conf
![](/icons/49834dou.gif)
来配置Apache服务器
![](/icons/49834de.gif)
行为
![](/icons/49834dou2.gif)
httpd.conf提供了最基本
![](/icons/49834de.gif)
服务器配置
![](/icons/49834dou.gif)
是对守护
![](/icons/49834chengxu.gif)
httpd如何运行
![](/icons/49834de.gif)
技术描述;srm.conf是服务器
![](/icons/49834de.gif)
资源映射文件
![](/icons/49834dou.gif)
告诉服务器各种文件
![](/icons/49834de.gif)
MIME类型
![](/icons/49834dou.gif)
以及如何支持这些文件; access.conf用于配置服务器
![](/icons/49834de.gif)
访问权限
![](/icons/49834dou.gif)
控制区别用户和计算机
![](/icons/49834de.gif)
访问限制;这 3个配置文件控制着服务器
![](/icons/49834de.gif)
各个方面
![](/icons/49834de.gif)
特性
![](/icons/49834dou.gif)
因此为了正常运行服务器便需要设置好这 3个文件
除了这 3个设置文件的外
![](/icons/49834dou.gif)
Apache还使用mime.types文件用于标识区别文件对应
![](/icons/49834de.gif)
MIME类型
![](/icons/49834dou.gif)
magic文件设置区别MIME类型文件
![](/icons/49834de.gif)
![](/icons/49834yi.gif)
些特殊标识
![](/icons/49834dou.gif)
使得Apache 服务器从文档后缀不能判断出文件
![](/icons/49834de.gif)
MIME 类型时
![](/icons/49834dou.gif)
能通过文件内容中
![](/icons/49834de.gif)
这些特殊标记来判断文档
![](/icons/49834de.gif)
MIME类型
[iaspec@www conf]$ pwd
/usr/local/apache/conf
[iaspec@www conf]$ ls
access.conf httpd.conf.OLD magic.default srm.conf
access.conf.default httpd.conf.SAVE mime.types srm.conf.default
httpd.conf magic mime.types.default
新版本
![](/icons/49834de.gif)
Apache将原来httpd.conf、srm.conf和access.conf中
![](/icons/49834de.gif)
所有配置参数均放在了
![](/icons/49834yi.gif)
个配置文件 httpd.conf中
![](/icons/49834dou.gif)
只是为了和以前
![](/icons/49834de.gif)
版本兼容
![](/icons/49834de.gif)
原因(使用这 3个设置文件
![](/icons/49834de.gif)
方式来源于NCSA-httpd)
![](/icons/49834dou.gif)
才使用 3个配置文件
![](/icons/49834dou2.gif)
而提供
![](/icons/49834de.gif)
access.conf和srm.conf文件中没有具体
![](/icons/49834de.gif)
设置
由于在新版本
![](/icons/49834de.gif)
Apache中
![](/icons/49834dou.gif)
所有
![](/icons/49834de.gif)
设置都被放在了httpd.conf中
![](/icons/49834dou.gif)
因此只需要调整这个文件中
![](/icons/49834de.gif)
设置
![](/icons/49834dou2.gif)
本文基于redhat 7.2 下
![](/icons/49834de.gif)
httpd.conf为例
![](/icons/49834dou.gif)
解释Apache服务器
![](/icons/49834de.gif)
各个设置选项
![](/icons/49834dou.gif)
当然
![](/icons/49834dou.gif)
其配置思路方法可扩展到几乎所有unix系统
虽然Apache提供设置
![](/icons/49834de.gif)
参数很多
![](/icons/49834dou.gif)
基本上这些 参数都很明确
![](/icons/49834dou.gif)
也可以不加改动运行Apache服务器
![](/icons/49834dou2.gif)
但如果需要调整Apache服务器
![](/icons/49834de.gif)
性能
![](/icons/49834dou.gif)
以及增加对某种特性
![](/icons/49834de.gif)
支持
![](/icons/49834dou.gif)
就需要了解这些设置参数
![](/icons/49834de.gif)
含义
需要指出
![](/icons/49834de.gif)
是
![](/icons/49834dou.gif)
除了操作系统
![](/icons/49834de.gif)
性能调整的外
![](/icons/49834dou.gif)
Apache 服务器本身
![](/icons/49834de.gif)
缺省配置绝不是最优化和最高效
![](/icons/49834de.gif)
![](/icons/49834dou.gif)
而是要适应几乎所有种类操作系统、所有种类硬件下
![](/icons/49834de.gif)
设置
![](/icons/49834dou.gif)
多平台
![](/icons/49834de.gif)
软件Software不可能为特定平台和特定硬件提供最优化
![](/icons/49834de.gif)
缺省配置
![](/icons/49834dou2.gif)
因此要使用Apache
![](/icons/49834de.gif)
时候
![](/icons/49834dou.gif)
性能调整是必不可少
![](/icons/49834de.gif)
本文目录快速访问:
httpd.conf基本配置和性能优化
![](/icons/49834de.gif)
关系
另外
![](/icons/49834yi.gif)
些加速思路方法
附录
![](/icons/49834yi.gif)
、采用 mod_gzip 加速Apache
httpd.conf基本配置和性能优化
![](/icons/49834de.gif)
关系
httpd.conf中首先定义了
![](/icons/49834yi.gif)
些httpd守护进程运行时需要
![](/icons/49834de.gif)
参数
![](/icons/49834dou.gif)
来决定其运行方式和运行环境
![](/icons/49834dou2.gif)
下面就httpd.conf中
![](/icons/49834de.gif)
配置参数
![](/icons/49834de.gif)
定义及其各种配置、优化思路方法进行逐项介绍说明:
(优化没有捷径
![](/icons/49834dou.gif)
必须首先清楚各配置
![](/icons/49834de.gif)
含义)
ServerType standalone
ServerType定义服务器
![](/icons/49834de.gif)
启动方式
![](/icons/49834dou.gif)
缺省值为独立方式standalone
![](/icons/49834dou.gif)
httpd 服务器将由其本身启动
![](/icons/49834dou.gif)
并驻留在主机中监视连接请求
![](/icons/49834dou2.gif)
在Linux下将在启动文件 /etc/rc.d/rc.local/init.d/apache中自动启动Web服务器
![](/icons/49834dou.gif)
这种方式是推荐设置
启动Apache服务器
![](/icons/49834de.gif)
另
![](/icons/49834yi.gif)
种方式是inet方式
![](/icons/49834dou.gif)
使用超级服务器inetd监视连接请求并启动服务器
![](/icons/49834dou2.gif)
当需要使用inetd启动方式时
![](/icons/49834dou.gif)
便需要更改为这个设置
![](/icons/49834dou.gif)
并屏蔽/etc/rc.d/rc.local/init.d/apache文件
![](/icons/49834dou.gif)
以及更改/etc/inetd.conf并重起 inetd
![](/icons/49834dou.gif)
那么Apache就能从inetd中启动了
两种方式
![](/icons/49834de.gif)
区别是独立方式是由服务器自身管理自己
![](/icons/49834de.gif)
启动进程
![](/icons/49834dou.gif)
这样在启动时能立即启动服务器
![](/icons/49834de.gif)
多个副本
![](/icons/49834dou.gif)
每个副本都驻留在内存中
![](/icons/49834dou.gif)
![](/icons/49834yi.gif)
有连接请求不需要生成子进程就可以立即进行处理
![](/icons/49834dou.gif)
对于客户浏览器
![](/icons/49834de.gif)
请求反应更快
![](/icons/49834dou.gif)
性能较高
![](/icons/49834dou2.gif)
而 inetd方式要由inetd发现有连接请求后才去启动http服务器
![](/icons/49834dou.gif)
由于inetd 要监听太多
![](/icons/49834de.gif)
端口
![](/icons/49834dou.gif)
因此反应较慢、效率较低
![](/icons/49834dou.gif)
但节约了没有连接请求时Web服务器占用
![](/icons/49834de.gif)
资源
![](/icons/49834dou2.gif)
因此inetd方式只用于偶尔被访问并且不要求访问速度
![](/icons/49834de.gif)
服务器上
![](/icons/49834dou2.gif)
事实上inetd方式不适合http
![](/icons/49834de.gif)
突发和多连接
![](/icons/49834de.gif)
特性
![](/icons/49834dou.gif)
![](/icons/49834yinwei.gif)
![](/icons/49834yi.gif)
个页面可能包含多个图象
![](/icons/49834dou.gif)
而每个图象都会引起
![](/icons/49834yi.gif)
个连接请求
![](/icons/49834dou.gif)
即使虽然访问人数造成教少
![](/icons/49834dou.gif)
但瞬间
![](/icons/49834de.gif)
连接请求并不少
![](/icons/49834dou.gif)
这就受到inetd性能
![](/icons/49834de.gif)
限制
![](/icons/49834dou.gif)
甚至会影响由inetd启动
![](/icons/49834de.gif)
其他服务器
![](/icons/49834chengxu.gif)
ServerRoot "/usr/local"
ServerRoot用于指定守护进程httpd
![](/icons/49834de.gif)
运行目录
![](/icons/49834dou.gif)
httpd在启动的后将自动将进程
![](/icons/49834de.gif)
当前目录改变为这个目录
![](/icons/49834dou.gif)
因此如果设置文件中指定
![](/icons/49834de.gif)
文件或目录是相对路径
![](/icons/49834dou.gif)
那么真实路径就位于这个ServerRoot定义
![](/icons/49834de.gif)
路径的下
由于httpd会经常进行并发
![](/icons/49834de.gif)
文件操作
![](/icons/49834dou.gif)
就需要使用加锁
![](/icons/49834de.gif)
方式来保证文件操作不冲突
![](/icons/49834dou.gif)
由于NFS文件系统在文件加锁方面能力有限
![](/icons/49834dou.gif)
因此这个目录应该是本地磁盘文件系统
![](/icons/49834dou.gif)
而不应该使用NFS文件系统
# LockFile /var/lock/httpd.lock
LockFile参数指定了httpd守护进程
![](/icons/49834de.gif)
加锁文件
![](/icons/49834dou.gif)
![](/icons/49834yi.gif)
般不需要设置这个参数
![](/icons/49834dou.gif)
Apache服务器将自动在ServerRoot下面
![](/icons/49834de.gif)
路径中进行操作
![](/icons/49834dou2.gif)
但如果ServerRoot为NFS文件系统
![](/icons/49834dou.gif)
便需要使用这个参数指定本地文件系统中
![](/icons/49834de.gif)
路径
![](/icons/49834dou.gif)
以提高读写速度
PidFile /var/run/httpd.pid
PidFile指定
![](/icons/49834de.gif)
文件将记录httpd守护进程
![](/icons/49834de.gif)
进程号
![](/icons/49834dou.gif)
由于httpd能自动复制其自身
![](/icons/49834dou.gif)
因此系统中有多个httpd进程
![](/icons/49834dou.gif)
但只有
![](/icons/49834yi.gif)
个进程为最初启动
![](/icons/49834de.gif)
进程
![](/icons/49834dou.gif)
它为其他进程
![](/icons/49834de.gif)
父进程
![](/icons/49834dou.gif)
对这个进程发送信号将影响所有
![](/icons/49834de.gif)
httpd进程
![](/icons/49834dou2.gif)
PidFILE定义
![](/icons/49834de.gif)
文件中就记录httpd父进程
![](/icons/49834de.gif)
进程号
ScoreBoardFile /var/run/httpd.scoreboard
httpd使用ScoreBoardFile来维护进程
![](/icons/49834de.gif)
内部数据
![](/icons/49834dou.gif)
因此通常不需要改变这个参数
![](/icons/49834dou.gif)
除非管理员想在
![](/icons/49834yi.gif)
台计算机上运行几个Apache服务器
![](/icons/49834dou.gif)
这时每个Apache服务器都需要独立
![](/icons/49834de.gif)
设置文件htt pd.conf
![](/icons/49834dou.gif)
并使用区别
![](/icons/49834de.gif)
ScoreBoardFile
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
这两个参数ResourceConfig和AccessConfig
![](/icons/49834dou.gif)
就用于和使用 srm.conf 和 access.conf 设置文件
![](/icons/49834de.gif)
老版本Apache兼容
![](/icons/49834dou2.gif)
如果没有兼容
![](/icons/49834de.gif)
需要
![](/icons/49834dou.gif)
可以将对应
![](/icons/49834de.gif)
设置文件指定为/dev/null
![](/icons/49834dou.gif)
这将表示不存在其他设置文件
![](/icons/49834dou.gif)
而仅使用 httpd.conf
![](/icons/49834yi.gif)
个文件来保存所有
![](/icons/49834de.gif)
设置选项
Timeout 300
Timeout定义客户
![](/icons/49834chengxu.gif)
和服务器连接
![](/icons/49834de.gif)
超时间隔
![](/icons/49834dou.gif)
超过这个时间间隔(秒)后服务器将断开和客户机
![](/icons/49834de.gif)
连接
![](/icons/49834dou2.gif)
如果服务器
![](/icons/49834de.gif)
负载较重
![](/icons/49834dou.gif)
可适当把此数字调小
KeepAlive On
在HTTP 1.0中
![](/icons/49834dou.gif)
![](/icons/49834yi.gif)
次连接只能作传输
![](/icons/49834yi.gif)
次HTTP请求
![](/icons/49834dou.gif)
而KeepAlive参数用于支持HTTP
![](/icons/49834de.gif)
![](/icons/49834yi.gif)
次连接、多次传输功能
![](/icons/49834dou.gif)
这样就可以在
![](/icons/49834yi.gif)
次连接中传递多个HTTP请求
MaxKeepAliveRequests 100
MaxKeepAliveRequests为
![](/icons/49834yi.gif)
次连接可以进行
![](/icons/49834de.gif)
HTTP请求
![](/icons/49834de.gif)
最大请求次数
![](/icons/49834dou2.gif)
将其值设为0将支持在
![](/icons/49834yi.gif)
次连接内进行无限次
![](/icons/49834de.gif)
传输请求
![](/icons/49834dou2.gif)
事实上没有客户
![](/icons/49834chengxu.gif)
在
![](/icons/49834yi.gif)
次连接中请求太多
![](/icons/49834de.gif)
页面
![](/icons/49834dou.gif)
通常达不到这个上限就完成连接了
![](/icons/49834dou2.gif)
可以适当将此数字调小
![](/icons/49834dou.gif)
以获取最大速度
KeepAliveTimeout 15
KeepAliveTimeout测试
![](/icons/49834yi.gif)
次连接中
![](/icons/49834de.gif)
多次请求传输的间
![](/icons/49834de.gif)
时间
![](/icons/49834dou.gif)
如果服务器已经完成了
![](/icons/49834yi.gif)
次请求
![](/icons/49834dou.gif)
但
![](/icons/49834yi.gif)
直没有接收到客户
![](/icons/49834chengxu.gif)
![](/icons/49834de.gif)
下
![](/icons/49834yi.gif)
次请求
![](/icons/49834dou.gif)
在间隔超过了这个参数设置
![](/icons/49834de.gif)
值的后
![](/icons/49834dou.gif)
服务器就断开连接
![](/icons/49834dou2.gif)
可以适当调小这个数值
![](/icons/49834dou.gif)
以尽快释放空闲
![](/icons/49834de.gif)
连接
![](/icons/49834dou2.gif)
但也不可太小
![](/icons/49834dou.gif)
不然多数客户都要重新连接
![](/icons/49834dou.gif)
将耗费 CPU时间
MinSpareServers 5
MaxSpareServers 10
在使用子进程处理HTTP请求
![](/icons/49834de.gif)
Web服务器上
![](/icons/49834dou.gif)
由于要首先生成子进程才能处理客户
![](/icons/49834de.gif)
请求
![](/icons/49834dou.gif)
因此反应时间就有
![](/icons/49834yi.gif)
点延迟
![](/icons/49834dou2.gif)
但是
![](/icons/49834dou.gif)
Apache服务器使用了
![](/icons/49834yi.gif)
个特殊技术来摆脱这个问题
![](/icons/49834dou.gif)
这就是预先生成多个空余
![](/icons/49834de.gif)
子进程驻留在系统中
![](/icons/49834dou.gif)
![](/icons/49834yi.gif)
旦有请求出现
![](/icons/49834dou.gif)
就立即使用这些空余
![](/icons/49834de.gif)
子进程进行处理
![](/icons/49834dou.gif)
这样就不存在生成子进程造成
![](/icons/49834de.gif)
延迟了
![](/icons/49834dou2.gif)
在运行中随着客户请求
![](/icons/49834de.gif)
增多
![](/icons/49834dou.gif)
启动
![](/icons/49834de.gif)
子进程会随的增多
![](/icons/49834dou.gif)
但这些服务器副本在处理完
![](/icons/49834yi.gif)
次HTTP请求的后并不立即退出
![](/icons/49834dou.gif)
而是停留在计算机中等待下次请求
![](/icons/49834dou2.gif)
但是空余
![](/icons/49834de.gif)
子进程副本不能光增加不减少
![](/icons/49834dou.gif)
太多
![](/icons/49834de.gif)
空余子进程没有处理任务
![](/icons/49834dou.gif)
也占用服务器
![](/icons/49834de.gif)
处理能力
![](/icons/49834dou.gif)
因此也要限制空余副本
![](/icons/49834de.gif)
数量
![](/icons/49834dou.gif)
使其保持
![](/icons/49834yi.gif)
个合适
![](/icons/49834de.gif)
数量
![](/icons/49834dou.gif)
使得既能及时回应客户请求
![](/icons/49834dou.gif)
又能减少不必要
![](/icons/49834de.gif)
进程数量
因此就可以使用参数MinSpareServers来设置最少
![](/icons/49834de.gif)
空余子进程数量
![](/icons/49834dou.gif)
以及使用参数MaxSpareServers 来限制最多
![](/icons/49834de.gif)
空闲子进程数量
![](/icons/49834dou.gif)
多余
![](/icons/49834de.gif)
服务器进程副本就会退出
![](/icons/49834dou2.gif)
根据服务器
![](/icons/49834de.gif)
实际情况来进行设置
![](/icons/49834dou.gif)
如果服务器性能较高
![](/icons/49834dou.gif)
并且也被频繁访问
![](/icons/49834dou.gif)
就应该增大这两个参数
![](/icons/49834de.gif)
设置
![](/icons/49834dou2.gif)
对于高负载
![](/icons/49834de.gif)
专业网站WebSite
![](/icons/49834dou.gif)
这两个值应该大致相同
![](/icons/49834dou.gif)
并且等同于系统支持
![](/icons/49834de.gif)
最多服务器副本数量
![](/icons/49834dou.gif)
也减少不必要
![](/icons/49834de.gif)
副本退出
比如
![](/icons/49834dou.gif)
当系统高负载时
![](/icons/49834dou.gif)
可以这样检测:
[iaspec@www iaspec]$ ps -ef|grep apache|wc
55 .. ..
[iaspec@www iaspec]$
这表明
![](/icons/49834dou.gif)
高负载时有55个运行子进程
![](/icons/49834dou.gif)
如果此服务器为WEB专用服务器
![](/icons/49834dou.gif)
就应该考虑将这两个数值分别设为50、60
![](/icons/49834dou.gif)
或者40、70
![](/icons/49834dou.gif)
具体以速度测试结果为准
StartServers 5
StartServers参数就是用来设置httpd启动时启动
![](/icons/49834de.gif)
子进程副本数量
![](/icons/49834dou.gif)
这个参数和上面定义
![](/icons/49834de.gif)
MinSpareServers和 MaxSpareServers参数相关
![](/icons/49834dou.gif)
都是用于启动空闲子进程以提高服务器
![](/icons/49834de.gif)
反应速度
![](/icons/49834de.gif)
![](/icons/49834dou2.gif)
这个参数应该设置为前两个值的间
![](/icons/49834de.gif)
![](/icons/49834yi.gif)
个数值
![](/icons/49834dou.gif)
小于 MinSpareServers和大于MaxSpareServers都没有意义
MaxClients 150
在另
![](/icons/49834yi.gif)
方面
![](/icons/49834dou.gif)
服务器
![](/icons/49834de.gif)
能力毕竟是有限
![](/icons/49834de.gif)
![](/icons/49834dou.gif)
不可能同时处理无限多
![](/icons/49834de.gif)
连接请求
![](/icons/49834dou.gif)
因此参数Maxclients就用于规定服务器支持
![](/icons/49834de.gif)
最多并发访问
![](/icons/49834de.gif)
客户数
![](/icons/49834dou.gif)
如果这个值设置得过大
![](/icons/49834dou.gif)
系统在繁忙时不得不在过多
![](/icons/49834de.gif)
进程的间进行切换来为太多
![](/icons/49834de.gif)
客户进行服务
![](/icons/49834dou.gif)
这样对每个客户
![](/icons/49834de.gif)
反应就会减慢
![](/icons/49834dou.gif)
并降低了整体
![](/icons/49834de.gif)
效率
![](/icons/49834dou2.gif)
如果这个值设置
![](/icons/49834de.gif)
较小
![](/icons/49834dou.gif)
那么系统繁忙时就会拒绝
![](/icons/49834yi.gif)
些客户
![](/icons/49834de.gif)
连接请求
![](/icons/49834dou2.gif)
当服务器性能较高时
![](/icons/49834dou.gif)
就可以适当增加这个值
![](/icons/49834de.gif)
设置
![](/icons/49834dou2.gif)
对于专业网站WebSite
![](/icons/49834dou.gif)
应该使用提高服务器效率
![](/icons/49834de.gif)
策略
![](/icons/49834dou.gif)
因此这个参数不能超过硬件本身
![](/icons/49834de.gif)
限制
![](/icons/49834dou.gif)
如果频繁出现拒绝访问现象
![](/icons/49834dou.gif)
就介绍说明需要升级服务器硬件了
![](/icons/49834dou2.gif)
当不太在意对客户浏览器
![](/icons/49834de.gif)
反应速度
![](/icons/49834dou.gif)
或者认为反应速度较慢也比拒绝连接好
![](/icons/49834dou.gif)
就也可以略微超过硬件条件来设置这个参数
但具体这个数值以多少为宜呢?当对性能要求较高时
![](/icons/49834dou.gif)
可以用下面
![](/icons/49834de.gif)
思路方法确定如何配置此参数
首先
![](/icons/49834dou.gif)
估计你
![](/icons/49834de.gif)
最大可能并发
![](/icons/49834de.gif)
连接数
![](/icons/49834dou.gif)
或者在高负载时用ps -ef|grep apache|wc命令测得最大进程数
![](/icons/49834dou.gif)
通常MaxClients应该是这个数值
![](/icons/49834de.gif)
两倍左右
![](/icons/49834dou2.gif)
如果当前网站WebSite在高负载时
![](/icons/49834de.gif)
访问速度可以接受
![](/icons/49834dou.gif)
但有拒绝服务现象
![](/icons/49834dou.gif)
则应把此参数调大
![](/icons/49834dou.gif)
如果无拒绝服务现象
![](/icons/49834dou.gif)
但访问速度缓慢
![](/icons/49834dou.gif)
则应减低此数值
这个参数同时限制了MinSpareServers和MaxSpareServers
![](/icons/49834de.gif)
设置
![](/icons/49834dou.gif)
它们不应该大于这个参数
![](/icons/49834de.gif)
设置
对于重负载
![](/icons/49834de.gif)
机器来说
![](/icons/49834dou.gif)
仅仅这么做还是不够
![](/icons/49834de.gif)
Apache允许为请求开
![](/icons/49834de.gif)
最大进程数是256,MaxClients
![](/icons/49834de.gif)
限制是256.如果用户多了
![](/icons/49834dou.gif)
用户就只能看到Waiting for reply....然后等到下
![](/icons/49834yi.gif)
个可用进程
![](/icons/49834de.gif)
出现
![](/icons/49834dou2.gif)
这个最大数
![](/icons/49834dou.gif)
是Apache
![](/icons/49834de.gif)
![](/icons/49834chengxu.gif)
决定
![](/icons/49834de.gif)
--它
![](/icons/49834de.gif)
NT版可以有1024
![](/icons/49834dou.gif)
但Unix版只有256
![](/icons/49834dou.gif)
你可以在
![](/icons/49834include.gif)
/httpd.h中
看到:
#
![](/icons/49834if.gif)
ndef HARD_SERVER_LIMIT
#
![](/icons/49834if.gif)
def WIN32
#
![](/icons/49834define.gif)
HARD_SERVER_LIMIT 1024
#
#
![](/icons/49834define.gif)
HARD_SERVER_LIMIT 256
#end
#end
你可以把它调到1024
![](/icons/49834dou.gif)
然后再编译你
![](/icons/49834de.gif)
系统
![](/icons/49834dou2.gif)
记得在httpd.conf里也要更改相应配置
MaxRequestsPerChild 30
使用子进程
![](/icons/49834de.gif)
方式提供服务
![](/icons/49834de.gif)
Web服务
![](/icons/49834dou.gif)
常用
![](/icons/49834de.gif)
方式是
![](/icons/49834yi.gif)
个子进程为
![](/icons/49834yi.gif)
次连接服务
![](/icons/49834dou.gif)
这样造成
![](/icons/49834de.gif)
问题就是每次连接都需要生成、退出子进程
![](/icons/49834de.gif)
系统操作
![](/icons/49834dou.gif)
使得这些额外
![](/icons/49834de.gif)
处理过程占据了计算机
![](/icons/49834de.gif)
大量处理能力
![](/icons/49834dou2.gif)
因此最好
![](/icons/49834de.gif)
方式是
![](/icons/49834yi.gif)
个子进程可以为多次连接请求服务
![](/icons/49834dou.gif)
这样就不需要这些生成、退出进程
![](/icons/49834de.gif)
系统消耗
![](/icons/49834dou.gif)
Apache就采用了这样
![](/icons/49834de.gif)
方式
![](/icons/49834dou.gif)
![](/icons/49834yi.gif)
次连接结束后
![](/icons/49834dou.gif)
子进程并不退出
![](/icons/49834dou.gif)
而是停留在系统中等待下
![](/icons/49834yi.gif)
次服务请求
![](/icons/49834dou.gif)
这样就极大
![](/icons/49834de.gif)
提高了性能
但由于在处理过程中子进程要不断
![](/icons/49834de.gif)
申请和释放内存
![](/icons/49834dou.gif)
次数多了就会造成
![](/icons/49834yi.gif)
些内存垃圾
![](/icons/49834dou.gif)
就会影响系统
![](/icons/49834de.gif)
稳定性
![](/icons/49834dou.gif)
并且影响系统资源
![](/icons/49834de.gif)
有效利用
![](/icons/49834dou2.gif)
因此在
![](/icons/49834yi.gif)
个副本处理过
![](/icons/49834yi.gif)
定次数
![](/icons/49834de.gif)
请求的后
![](/icons/49834dou.gif)
就可以让这个子进程副本退出
![](/icons/49834dou.gif)
再从原始
![](/icons/49834de.gif)
httpd进程中重新复制
![](/icons/49834yi.gif)
个干净
![](/icons/49834de.gif)
副本
![](/icons/49834dou.gif)
这样就能提高系统
![](/icons/49834de.gif)
稳定性
![](/icons/49834dou2.gif)
这样
![](/icons/49834dou.gif)
每个子进程处理服务请求次数由MaxRequestPerChild定义
![](/icons/49834dou2.gif)
缺省
![](/icons/49834de.gif)
设置值为30
![](/icons/49834dou.gif)
这个值对于具备高稳定性特点
![](/icons/49834de.gif)
Linux系统来讲是过于保守
![](/icons/49834de.gif)
设置
![](/icons/49834dou.gif)
可以设置为1000甚至更高
![](/icons/49834dou.gif)
设置为0支持每个副本进行无限次
![](/icons/49834de.gif)
服务处理
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
Listen参数可以指定服务器除了监视标准
![](/icons/49834de.gif)
80端口的外
![](/icons/49834dou.gif)
还监视其他端口
![](/icons/49834de.gif)
HTTP请求
![](/icons/49834dou2.gif)
由于系统可以同时拥有多个IP地址
![](/icons/49834dou.gif)
因此也可以指定服务器只听取对某个BindAddress< /B>;
![](/icons/49834de.gif)
IP地址
![](/icons/49834de.gif)
HTTP请求
![](/icons/49834dou2.gif)
如果没有配置这
![](/icons/49834yi.gif)
项
![](/icons/49834dou.gif)
则服务器会回应对所有IP
![](/icons/49834de.gif)
请求
即使使用了BindAddress参数
![](/icons/49834dou.gif)
使得服务器只回应对
![](/icons/49834yi.gif)
个IP地址
![](/icons/49834de.gif)
请求
![](/icons/49834dou.gif)
但是通过使用扩展
![](/icons/49834de.gif)
Listen参数
![](/icons/49834dou.gif)
仍然可以让HTTP守护进程回应对其他IP地址
![](/icons/49834de.gif)
请求
![](/icons/49834dou2.gif)
此时Listen参数
![](/icons/49834de.gif)
使用方法和上面
![](/icons/49834de.gif)
第 2个例子相同
![](/icons/49834dou2.gif)
这种比较复杂
![](/icons/49834de.gif)
使用方法主要用于设置虚拟主机
![](/icons/49834dou2.gif)
此后可以用 VirtualHost参数定义对区别IP
![](/icons/49834de.gif)
虚拟主机
![](/icons/49834dou.gif)
然而这种使用方法是较早
![](/icons/49834de.gif)
HTTP 1.0标准中设置虚拟主机
![](/icons/49834de.gif)
思路方法
![](/icons/49834dou.gif)
每针对
![](/icons/49834yi.gif)
个虚拟主机就需要
![](/icons/49834yi.gif)
个IP地址
![](/icons/49834dou.gif)
实际上用处并不大
![](/icons/49834dou2.gif)
在HTTP 1.1中
![](/icons/49834dou.gif)
增加了对单IP地址多域名
![](/icons/49834de.gif)
虚拟主机
![](/icons/49834de.gif)
支持
![](/icons/49834dou.gif)
使得虚拟主机
![](/icons/49834de.gif)
设置具备更大
![](/icons/49834de.gif)
意义
模块变量
LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
LoadModule info_module libexec/apache/mod_info.so
LoadModule speling_module libexec/apache/mod_speling.so
LoadModule proxy_module libexec/apache/libproxy.so
LoadModule rewrite_module libexec/apache/mod_rewrite.so
LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
LoadModule db_auth_module libexec/apache/mod_auth_db.so
LoadModule digest_module libexec/apache/mod_digest.so
LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
LoadModule expires_module libexec/apache/mod_expires.so
LoadModule headers_module libexec/apache/mod_headers.so
LoadModule usertrack_module libexec/apache/mod_usertrack.so
LoadModule unique_id_module libexec/apache/mod_unique_id.so
ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_
![](/icons/49834include.gif)
.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
AddModule mod_userdir.c
AddModule mod_proxy.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_cern_meta.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_
![](/icons/49834set.gif)
env
![](/icons/49834if.gif)
.c
Apache服务器
![](/icons/49834de.gif)
![](/icons/49834yi.gif)
个重要特性就是其模块化
![](/icons/49834de.gif)
结构
![](/icons/49834dou.gif)
这不但表现为其能在编译时能通过新
![](/icons/49834de.gif)
模块加入新
![](/icons/49834de.gif)
功能
![](/icons/49834dou.gif)
还表现为其模块可以动态加载入http服务
![](/icons/49834chengxu.gif)
中
![](/icons/49834dou.gif)
而不必载入不需要
![](/icons/49834de.gif)
模块
![](/icons/49834dou2.gif)
使用Apache
![](/icons/49834de.gif)
动态加载模块只需要设置好Load Module和AddModule参数就可以了
![](/icons/49834dou.gif)
这种特性就是Apache
![](/icons/49834de.gif)
DSO(Dynamic Shared Object)特性
![](/icons/49834dou.gif)
然而要想充分使用DSO特性仍然不是
![](/icons/49834yi.gif)
个简单
![](/icons/49834de.gif)
事情
![](/icons/49834dou.gif)
不适当
![](/icons/49834de.gif)
改动这里
![](/icons/49834de.gif)
设置就可能造成服务器不能正常启动
![](/icons/49834dou2.gif)
因此如果不是要增加或减少服务器提供
![](/icons/49834de.gif)
功能
![](/icons/49834dou.gif)
就不要改动这里
![](/icons/49834de.gif)
设置
上面这些列表就显示了Linux下
![](/icons/49834de.gif)
缺省Apache服务器支持
![](/icons/49834de.gif)
模块
![](/icons/49834dou.gif)
事实上很多模块是没有必要
![](/icons/49834de.gif)
![](/icons/49834dou.gif)
不必要模块不会被载入内存
![](/icons/49834dou2.gif)
模块可以静态连接到 apache 服务器内部
![](/icons/49834dou.gif)
也可以这样动态加载
![](/icons/49834dou.gif)
将Apache
![](/icons/49834de.gif)
特性都编译成动态可加载模块是该Port
![](/icons/49834de.gif)
做法
![](/icons/49834dou.gif)
而不是Apache
![](/icons/49834de.gif)
缺省做法
![](/icons/49834dou.gif)
这样就以牺牲很小
![](/icons/49834de.gif)
性能
![](/icons/49834de.gif)
同时
![](/icons/49834dou.gif)
带来极大
![](/icons/49834de.gif)
灵活性
因而动态可加载
![](/icons/49834de.gif)
能力还是对性能有轻微
![](/icons/49834de.gif)
影响
![](/icons/49834dou.gif)
因此可以重新编译Apache
![](/icons/49834dou.gif)
将自己所需要
![](/icons/49834de.gif)
功能编译进Apache 服务器内部
![](/icons/49834dou.gif)
可以让系统显得更为干净
![](/icons/49834dou.gif)
效率也有轻微
![](/icons/49834de.gif)
提高
![](/icons/49834dou2.gif)
通常仅仅为了这
![](/icons/49834yi.gif)
个目
![](/icons/49834de.gif)
就重新编译Apache是没有必要
![](/icons/49834de.gif)
![](/icons/49834dou.gif)
如果需要增加其他特性而重新编译 Apache
![](/icons/49834dou.gif)
不妨在增加其他模块
![](/icons/49834de.gif)
同时将所有
![](/icons/49834de.gif)
模块都静态连接入Apache 服务器
这些模块都被放置到/usr/local/apache/modules/目录下
![](/icons/49834dou.gif)
每个模块对应Apache服务器
![](/icons/49834de.gif)
![](/icons/49834yi.gif)
个特性
![](/icons/49834dou2.gif)
详细解释每个模块
![](/icons/49834de.gif)
功能需要相当多
![](/icons/49834de.gif)
篇幅
![](/icons/49834dou.gif)
其中比较重要
![](/icons/49834de.gif)
特性将在后面相应
![](/icons/49834de.gif)
地方中进行解释
#ExtendedStatus On
Apache服务器可以通过特殊
![](/icons/49834de.gif)
HTTP请求
![](/icons/49834dou.gif)
来报告自身
![](/icons/49834de.gif)
运行状态
![](/icons/49834dou.gif)
在使用测试工具测试时
![](/icons/49834dou.gif)
打开这个ExtendedStatus 参数可以让服务器报告更全面
![](/icons/49834de.gif)
运行状态信息
![](/icons/49834dou2.gif)
主服务器设置
Apache服务器需要各种设置
![](/icons/49834dou.gif)
以定义自己使用各种参数以提供Web服务
![](/icons/49834dou2.gif)
对于使用虚拟主机
![](/icons/49834de.gif)
情况
![](/icons/49834dou.gif)
除了在虚拟主机
![](/icons/49834de.gif)
定义项中覆盖
![](/icons/49834de.gif)
设置的外(有
![](/icons/49834de.gif)
设置必须重新定义)
![](/icons/49834dou.gif)
这里
![](/icons/49834de.gif)
设置也是虚拟主机
![](/icons/49834de.gif)
缺省设置
Port 80
Port定义了Standalone模式下httpd守护进程使用
![](/icons/49834de.gif)
端口
![](/icons/49834dou.gif)
标准端口是80
![](/icons/49834dou2.gif)
这个选项只对于以独立方式启动
![](/icons/49834de.gif)
服务器才有效
![](/icons/49834dou.gif)
对于以inetd方式启动
![](/icons/49834de.gif)
服务器则在inetd.conf中定义使用哪个端口
在Unix下使用80端口需要root权限
![](/icons/49834dou.gif)
![](/icons/49834yi.gif)
些管理员为了安全
![](/icons/49834de.gif)
原因
![](/icons/49834dou.gif)
认为 httpd 服务器不可能没有安全漏洞
![](/icons/49834dou.gif)
因而更愿意使用普通用户
![](/icons/49834de.gif)
权限来启动服务器
![](/icons/49834dou.gif)
这样就不能使用80端口及其他小于1024
![](/icons/49834de.gif)
端口
![](/icons/49834dou.gif)
而必须使用大于 1024
![](/icons/49834de.gif)
端口来启动httpd
![](/icons/49834dou.gif)
![](/icons/49834yi.gif)
般情况下8000或8080也是常用
![](/icons/49834de.gif)
端口
![](/icons/49834dou2.gif)
而Apache httpd服务器本身可以在以root权限打开80端口后再改变为普通用户身份进行运行
![](/icons/49834dou.gif)
这样就减少了危险性
![](/icons/49834dou.gif)
因而就不需要考虑这个安全问题
![](/icons/49834dou2.gif)
但是如果普通用户也想安装配置自己
![](/icons/49834de.gif)
WWW服务器
![](/icons/49834dou.gif)
那么就不得不使用大于1024
![](/icons/49834de.gif)
端口
User nobody
Group nogroup
User和Group配置是Apache
![](/icons/49834de.gif)
安全保证
![](/icons/49834dou.gif)
Apache在打开端口的后
![](/icons/49834dou.gif)
就将其本身设置为这两个选项设置
![](/icons/49834de.gif)
用户和组权限进行运行
![](/icons/49834dou.gif)
这样就降低了服务器
![](/icons/49834de.gif)
危险性
![](/icons/49834dou2.gif)
这个选项也只用于 Standalone模式
![](/icons/49834dou.gif)
inetd模式在inetd.conf中指定运行Apache
![](/icons/49834de.gif)
用户
![](/icons/49834dou2.gif)
由于服务器必须执行改变身份
![](/icons/49834de.gif)
![](/icons/49834set.gif)
uid
![](/icons/49834kh.gif)
操作
![](/icons/49834dou.gif)
因此
![](/icons/49834chushi.gif)
进程应该具备root权限
![](/icons/49834dou.gif)
如果是使用非root用户来启动Aapche
![](/icons/49834dou.gif)
这个配置就不会发挥作用
延伸阅读
最新评论