Apache配置手册Word文档格式.docx
《Apache配置手册Word文档格式.docx》由会员分享,可在线阅读,更多相关《Apache配置手册Word文档格式.docx(36页珍藏版)》请在冰点文库上搜索。
![Apache配置手册Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/3/e167ea21-f7d1-4265-9f9e-d46044ca6805/e167ea21-f7d1-4265-9f9e-d46044ca68051.gif)
PidFile/var/run/httpd.pid
PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对这个进程发送信号将影响所有的httpd进程。
PidFILE定义的文件中就记录httpd父进程的进程号。
ScoreBoardFilelogs/apache_runtime_status
httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apache服务器,这时每个Apache服务器都需要独立的设置文件httpd.conf,并使用不同的ScoreBoardFile
Timeout300
Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。
KeepAliveOff
在HTTP1.0中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。
虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。
MaxKeepAliveRequests100
MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。
将其值设为0将支持在一次连接内进行无限次的传输请求。
事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。
KeepAliveTimeout15
KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接。
MinSpareServers5
MaxSpareServers20
在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。
但是,Apache服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。
在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。
但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程数量。
因此就可以使用参数MinSpareServers来设置最少的空余子进程数量,以及使用参数MaxSpareServers来限制最多的空闲子进程数量,多余的服务器进程副本就会退出。
根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置。
对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。
StartServers8
StartServers参数就是用来设置httpd启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers和MaxSpareServers参数相关,都是用于启动空闲子进程以提高服务器的反应速度的。
这个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxSpareServers都没有意义。
MaxClients2000
在另一方面,服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数Maxclients就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。
如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。
当服务器性能较高时,就可以适当增加这个值的设置。
对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说明需要升级服务器硬件了。
对于非专业网站,不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过硬件条件来设置这个参数。
这个参数限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于这个参数的设置。
MaxRequestsPerChild1000
使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。
因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。
但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。
因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。
这样,每个子进程处理服务请求次数由MaxRequestPerChild定义。
缺省的设置值为30,这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。
LoadModulevhost_alias_modulemodules/mod_vhost_alias.so
<
IfDefineHAVE_BANDWIDTH>
LoadModulebandwidth_modulemodules/mod_bandwidth.so
/IfDefine>
IfDefineHAVE_THROTTLE>
LoadModulethrottle_modulemodules/mod_throttle.so
LoadModuleenv_modulemodules/mod_env.so
LoadModuleconfig_log_modulemodules/mod_log_config.so
LoadModuleagent_log_modulemodules/mod_log_agent.so
LoadModulereferer_log_modulemodules/mod_log_referer.so
LoadModulemime_modulemodules/mod_mime.so
LoadModulenegotiation_modulemodules/mod_negotiation.so
LoadModulestatus_modulemodules/mod_status.so
LoadModuleinfo_modulemodules/mod_info.so
LoadModuleincludes_modulemodules/mod_include.so
LoadModuleautoindex_modulemodules/mod_autoindex.so
LoadModuledir_modulemodules/mod_dir.so
LoadModulecgi_modulemodules/mod_cgi.so
LoadModuleasis_modulemodules/mod_asis.so
LoadModuleimap_modulemodules/mod_imap.so
LoadModuleaction_modulemodules/mod_actions.so
LoadModuleuserdir_modulemodules/mod_userdir.so
LoadModulealias_modulemodules/mod_alias.so
LoadModulerewrite_modulemodules/mod_rewrite.so
LoadModuleaccess_modulemodules/mod_access.so
LoadModuleauth_modulemodules/mod_auth.so
LoadModuleanon_auth_modulemodules/mod_auth_anon.so
LoadModuledb_auth_modulemodules/mod_auth_db.so
LoadModuleexpires_modulemodules/mod_expires.so
LoadModuleheaders_modulemodules/mod_headers.so
LoadModulesetenvif_modulemodules/mod_setenvif.so
IfDefineHAVE_PERL>
LoadModuleperl_modulemodules/libperl.so
IfDefineHAVE_PHP>
LoadModulephp_modulemodules/mod_php.so
IfDefineHAVE_PHP3>
LoadModulephp3_modulemodules/libphp3.so
IfDefineHAVE_PHP4>
LoadModulephp4_modulemodules/libphp4.so
IfDefineHAVE_DAV>
LoadModuledav_modulemodules/libdav.so
IfDefineHAVE_ROAMING>
LoadModuleroaming_modulemodules/mod_roaming.so
IfDefineHAVE_SSL>
LoadModulessl_modulemodules/libssl.so
IfDefineHAVE_PUT>
LoadModuleput_modulemodules/mod_put.so
IfDefineHAVE_PYTHON>
LoadModulepython_modulemodules/mod_python.so
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearModuleList
AddModulemod_vhost_alias.c
AddModulemod_bandwidth.c
AddModulemod_throttle.c
AddModulemod_env.c
AddModulemod_log_config.c
AddModulemod_log_agent.c
AddModulemod_log_referer.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_userdir.c
AddModulemod_alias.c
AddModulemod_rewrite.c
AddModulemod_access.c
AddModulemod_auth.c
AddModulemod_auth_anon.c
AddModulemod_auth_db.c
AddModulemod_expires.c
AddModulemod_headers.c
AddModulemod_so.c
AddModulemod_setenvif.c
AddModulemod_perl.c
AddModulemod_php.c
AddModulemod_php3.c
AddModulemod_php4.c
AddModulemod_dav.c
AddModulemod_roaming.c
AddModulemod_ssl.c
AddModulemod_put.c
AddModulemod_python.c
Apache服务器的一个重要特性就是其模块化的结构,这不但表现为其能在编译时能通过新的模块加入新的功能,还表现为其模块可以动态加载入http服务程序中,而不必载入不需要的模块。
使用Apache的动态加载模块只需要设置好LoadModule和AddModule参数就可以了,这种特性就是Apache的DSO(DynamicSharedObject)特性,然而要想充分使用DSO特性仍然不是一个简单的事情,不适当的改动这里的设置就可能造成服务器不能正常启动。
因此如果不是要增加或减少服务器提供的功能,就不要改动这里的设置。
上面这些列表就显示了Linux下的缺省Apache服务器支持的模块,事实上很多模块是没有必要的,不必要模块不会被载入内存。
模块可以静态连接到Apache服务器内部,也可以这样动态加载,将Apache的特性都编译成动态可加载模块是该Port的做法,而不是Apache的缺省做法,这样就以牺牲很小的性能的同时,带来极大的灵活性。
因而动态可加载的能力还是对性能有轻微的影响,因此可以重新编译Apache,将自己所需要的功能编译进Apache服务器内部,可以让系统显得更为干净,效率也有轻微的提高。
通常仅仅为了这一个目的就重新编译Apache是没有必要的,如果需要增加其他特性而重新编译Apache,不妨在增加其他模块的同时将所有的模块都静态连接入Apache服务器。
有的使用者更喜欢动态加载模块,那么也不妨全部都使用动态加载模块。
这些模块都被放置到/usr/local/apache/libexec/目录下,每个模块对应Apache服务器的一个特性。
详细解释每个模块的功能需要相当多的篇幅,其中比较重要的特性将在后面相应的地方中进行解释,而具体每个模块的功能及用法就需要查看Apache的文档。
主服务器设置
Apache服务器需要各种设置,以定义自己使用各种参数以提供Web服务。
对于使用虚拟主机的情况,除了在虚拟主机的定义项中覆盖的设置之外(有的设置必须重新定义),这里的设置也是虚拟主机的缺省设置。
Port80
Port定义了Standalone模式下httpd守护进程使用的端口,标准端口是80。
这个选项只对于以独立方式启动的服务器才有效,对于以inetd方式启动的服务器则在inetd.conf中定义使用哪个端口。
在Unix下使用80端口需要root权限,一些管理员为了安全的原因,认为httpd服务器不可能没有安全漏洞,因而更愿意使用普通用户的权限来启动服务器,这样就不能使用80端口及其他小于1024的端口,而必须使用大于1024的端口来启动httpd,一般情况下8000