当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Apache服务器配置全攻略(二)

Linux服务器
Apache2的httpd.conf翻译
全面提高Ubuntu Linux操作系统运行速度
Linux搭建Discuz论坛的方法
Linux系统下usr的目录结构
系统管理工具包: 通过 OpenSSH 设置 UNIX 远程访问
Linux系统下将CHM格式文件转换为HTML
Linux和Windows系统线程间的区别
Apache服务器实现的用户验证
Apache并发请求数及其TCP连接状态查看的方法
关闭Linux系统下不必要的服务
Linux操作系统的基本用户环境
Linux系统用Qpopper建立POP3服务器
基于Unix系统的Web服务器安全指南
全面提升Linux服务器的安全
Samba服务器的搭建与配置
Linux硬件兼容性问题将被终结?
Linux下查看内存的命令Free
优化 Apache 的几个实用技巧
linux高负载下彻底优化mysql数据库
Apache HTTP Server畸形HTTP方式413漏洞

Linux服务器 中的 Apache服务器配置全攻略(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 42 ::
收藏到网摘: n/a


MinSpareServers5
MaxSpareServers10

在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程数量。

因此就可以使用参数MinSpareServers来设置最少的空余子进程数量,以及使用参数MaxSpareServers来限制最多的空闲子进程数量,多余的服务器进程副本就会退出。根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置。对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。

StartServers5

StartServers参数就是用来设置httpd启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers和MaxSpareServers参数相关,都是用于启动空闲子进程以提高服务器的反应速度的。这个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxSpareServers都没有意义。

MaxClients150

在另一方面,服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数Maxclients就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,就可以适当增加这个值的设置。对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说明需要升级服务器硬件了。对于非专业网站,不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过硬件条件来设置这个参数。

这个参数限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于这个参数的设置。

MaxRequestsPerChild30

使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。

但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRequestPerChild定义。缺省的设置值为30,这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。

#Listen3000

#Listen12.34.56.78:80

#BindAddress*

Listen参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP请求。由于FreeBSD系统可以同时拥有多个IP地址,因此也可以指定服务器只听取对某个BindAddress的IP地址的HTTP请求。如果没有配置这一项,则服务器会回应对所有IP的请求。

即使使用了BindAddress参数,使得服务器只回应对一个IP地址的请求,但是通过使用扩展的Listen参数,仍然可以让HTTP守护进程回应对其他IP地址的请求。此时Listen参数的用法与上面的第二个例子相同。这种比较复杂的用法主要用于设置虚拟主机。此后可以用VirtualHost参数定义对不同IP的虚拟主机,然而这种用法是较早的HTTP1.0标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP地址,实际上用处并不大。在HTTP1.1中,增加了对单IP地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。

LoadModulemime_magic_modulelibexec/apache/mod_mime_magic.so

LoadModuleinfo_modulelibexec/apache/mod_info.so

LoadModulespeling_modulelibexec/apache/mod_speling.so

LoadModuleproxy_modulelibexec/apache/libproxy.so

LoadModulerewrite_modulelibexec/apache/mod_rewrite.so

LoadModuleanon_auth_modulelibexec/apache/mod_auth_anon.so

LoadModuledb_auth_modulelibexec/apache/mod_auth_db.so

LoadModuledigest_modulelibexec/apache/mod_digest.so

LoadModulecern_meta_modulelibexec/apache/mod_cern_meta.so

LoadModuleexpires_modulelibexec/apache/mod_expires.so

LoadModuleheaders_modulelibexec/apache/mod_headers.so

LoadModuleusertrack_modulelibexec/apache/mod_usertrack.so

LoadModuleunique_id_modulelibexec/apache/mod_unique_id.so

ClearmoduleList

AddModulemod_env.c

AddModulemod_log_config.c

AddModulemod_mime_magic.c

AddModulemod_mime.c

AddModulemod_negotiation.c

AddModulemod_status.c

AddModulemod_info.c

AddModulemod_include.c

AddModulemod_autoindex.c

AddModulemod_dir.c

AddModulemod_cgi.c

AddModulemod_asis.c

AddModulemod_imap.c

AddModulemod_actions.c

AddModulemod_speling.c

AddModulemod_userdir.c

AddModulemod_proxy.c

AddModulemod_alias.c

AddModulemod_rewrite.c

AddModulemod_access.c

AddModulemod_auth.c

AddModulemod_auth_anon.c

AddModulemod_auth_db.c

AddModulemod_digest.c

AddModulemod_cern_meta.c

AddModulemod_expires.c

AddModulemod_headers.c

AddModulemod_usertrack.c

AddModulemod_unique_id.c

AddModulemod_so.c

AddModulemod_setenvif.c

Apache服务器的一个重要特性就是其模块化的结构,这不但表现为其能在编译时能通过新的模块加入新的功能,还表现为其模块可以动态加载入http服务程序中,而不必载入不需要的模块。使用Apache的动态加载模块只需要设置好LoadModule和AddModule参数就可以了,这种特性就是Apache的DSO(DynamicSharedObject)特性,然而要想充分使用DSO特性仍然不是一个简单的事情,不适当的改动这里的设置就可能造成服务器不能正常启动。因此如果不是要增加或减少服务器提供的功能,就不要改动这里的设置。

上面这些列表就显示了Linux下的缺省Apache服务器支持的模块,事实上很多模块是没有必要的,不必要模块不会被载入内存。模块可以静态连接到pache服务器内部,也可以这样动态加载,将Apache的特性都编译成动态可加载模块是该Port的做法,而不是Apache的缺省做法,这样就以牺牲很小的性能的同时,带来极大的灵活性。

因而动态可加载的能力还是对性能有轻微的影响,因此可以重新编译Apache,将自己所需要的功能编译进Apache服务器内部,可以让系统显得更为干净,效率也有轻微的提高。通常仅仅为了这一个目的就重新编译Apache是没有必要的,如果需要增加其他特性而重新编译Apache,不妨在增加其他模块的同时将所有的模块都静态连接入Apache服务器。有的使用者更喜欢动态加载模块,那么也不妨全部都使用动态加载模块。

这些模块都被放置到/usr/local/apache/libexec/目录下,每个模块对应Apache服务器的一个特性。详细解释每个模块的功能需要相当多的篇幅,其中比较重要的特性将在后面相应的地方中进行解释,而具体每个模块的功能及用法就需要查看Apache的文档。

#ExtendedStatusOn

Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态,打开这个ExtendedStatus参数可以让服务器报告更全面的运行状态信息