《linuxapache的配置》由会员分享,可在线阅读,更多相关《linuxapache的配置(9页珍藏版)》请在金锄头文库上搜索。
1、网络技术应用网 专业和专注企业服务器应用 URL 映射类参数 l Alias 将 URL 映射到文件系统的特定区域。 【说明】 语法: Alias URL-path file-path|directory-pathAlias 参数使文件可以被存储在 DocumentRoot 以外的本地文件系统中。以 (%已解码的 )url-path 路径开头的 URL 可以被映射到以 directory-path 开头的本地文件中。 示例: Alias /image /etc/var/www/images 对 http:/ 的请求,服务器将返回 /etc/var/www/images/foo.gif 文件。
2、由于该参数是匹配完整路径,所以请求是 http:/ /imagefoo.gif 将不会被匹配。 注意:如果 url-path 中有后缀 /,则服务器要求有后缀 /以扩展此别名。也就是说 Alias /icons/ /usr/local/apache/icons/并不能对 /icons实现别名 .注意,可能需要额外指定一个 段来覆盖别名的最终对象。由于只有出现在 段之前的别名才会被检测,所以它只对最终对象生效。如果对在 DocumentRoot 之外的某个目录建立了一个 Alias ,则可能需要明确的对目标目录设定访问权限。 示例: Alias /image /ftp/pub/imageOrd
3、er allow,denyAllow from all二、多路处理模块的配置说明 Apache HTTP 服务器是一个强大的、灵活的能够在多种平台、不同环境下运行的 Web 服务器。由于不同的平台和不同的环境经常产生不同的需求,为了达到同样的最佳效果则需要采取不同的实现方法, Apache 的模块化设计就可以很好的适应大量不同的环境。使得网站管理网络技术应用网 专业和专注企业服务器应用 员能够在编译和运行时凭借载入不同的模块来决定服务器的附加功能。 Apache 的多路处理模块 (MPM) 就是用于选择处理网络端口绑定、接受请求并指派子进程处理来自客户端的请求。默认的 MPM 下表列出了不同
4、操作系统上默认的 MPM 。如果编译时没有进行选择,这将是默认选择的 MPM 。 操作系统名称 MPM 名称 BeOS beos Netware mpm_netware OS/2 mpmt_os2 Unix prefork Windows mpm_winnt 1 、 prefork.c 模块 ( 一个非线程型的、预派生的 MPM) prefork.c 模块是由一个单独的控制进程 (父进程 )负责产生子进程,这些子进程用于监听请求并作出应答。 Apache 设置了一些备用的 (spare)或者是空闲的子进程来处理即将接收的请求,这样可以避免服务器接收到请求后在创建子进程。在 Unix 系统中,父
5、进程通常以 root身份运行以便邦定 80 端口,而 Apache 产生的子进程通常以一个低特权的用户运行。 User和 Group 参数就是用于设置子进程的低特权用户。运行子进程的用户必须要对它所服务的内容有读取的权限,但是对服务内容之外的其他资源最好拥有尽可能少的权限。 【配置示例】 StartServers 8 MinSpareServers 5 网络技术应用网 专业和专注企业服务器应用 MaxSpareServers 20 ServerLimit 400 MaxClients 256 MaxRequestsPerChild 4000 【参数说明】1.ServerLimit 默认的 M
6、axClient 最大是 256 个线程 , 如果想设置更大的值,就需要修改 ServerLimit 这个参数。例子中的 400 是 ServerLimit 这个参数的最大值。如果需要更大,则必须编译 apache, 此前都是不需要重新编译 Apache 。 2StartServers 指定服务器启动时建立的子进程数量,因为子进程的数量动态的取决于负载的轻重,所以一般没有必要调整这个参数, prefork 模式默认为 5 。 3MinSpareServers 指定空闲子进程的最小数量,所谓空闲子进程是指没有正在处理请求的子进程。默认为 5 。如果当前空闲子进程数少于 MinSpareServe
7、rs ,那么 Apache 将以最大每秒一个的速度产生新的子进程,只有机器在非常繁忙的情况下才需要调整这个参数。 4MaxSpareServers 设置空闲子进程的最大数量。默认为 10 。如果当前有超过 MaxSpareServers 数量的空闲子进程,那么父进程将杀死多余的子进程。如果该参数的值设置比 MinSpareServers 小, Apache 则会自动将其修改成 MinSpareServers+1 。 5MaxClients 指可以服务于客户端请求的最大子进程数量,即限定同一时间客户端最大接入请求的数量,默认值为 256 。任何超过 MaxClients 限制的请求都将进入等候队
8、列 , 一旦一个连接被释放,队列中的请求将得到服务。 6MaxRequestsPerChild 每个子进程在其生存期内允许处理的最大请求数,默认为 10000. 到达 MaxRequestsPerChild 的限制后,子进程将会结束。如果 MaxRequestsPerChild 为 0 ,子进程将永远不会结束。这个参数也可以理解成控制服务器杀死旧进程产生新进程的频率。 注意: 从系统稳定性来考虑将 MaxRequestsPerChild 设置成非零有两个好处: 网络技术应用网 专业和专注企业服务器应用 1. 可以防止 ( 偶然的 ) 内存泄漏无限进行,从而耗尽内存。 2. 给进程一个有限寿命
9、,从而有助于当服务器负载减轻的时候减少活动进程的数量。 【工作原理介绍】 首先服务启动后会创建以 StartServers 个数的进程,然后等待来自客户端的请求。我们这里先假设从客户端来了大量的请求,这时 Apache 服务器会根据自身的负载情况自动创建新进程,如果服务器一直没有空闲进程那么它就会一直创建新进程,直到满足 MaxClients 和 ServerLimit 设置的最大值。如果来自客户端的负载没有那么大, Apache 服务器将会根据 MinSpareServers 、 MaxSpareServers 和 MaxRequestsPerChild 设置的值来杀掉多余的进程。其中每个进
10、程在某个确定的时间只能维持一个连接。 【小结】 上面叙述的这些参数中,对系统性能影响较大的有两个: MaxClients 和 ServerLimit。这个两个参数主要影响 Web 服务器处理客户端请求的能力,它们决定着服务器创建用来处理请求的进程的最大值。如果来自客户端的请求总数已经达到系统创建进程的最大值(可通过 ps -ef|grep http|wc l 来确认),那么后面来的请求就要排队,直到某个已处理请求完成。这就是应用系统资源还很富余而 HTTP 访问却很慢的主要原因。如何找出这个两个参数的最佳值需要综合很多因素,但一般情况下可以参考系统性能测试结果和 Web 服务器的系统资源。 注
11、意: prefork 模式下创建较多的进程将会占去大量系统内存,如果 MaxClients 和 ServerLimit 设置过大时可能会造成 Web 服务器崩溃。 2 、 worker.c 模块 ( 支持混合的多线程多进程的多路处理模块 ) worker 模块使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的 HTTP 服务器上, worker 模式是个比较好的选择,因为它的内存使用比 prefork 要低得多。但 worker 模式也有不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起 死掉 。由于线程共享内存空间,所以一个进
12、程在运行时必须被系统识别为 每个线程都是安全的 。 【配置示例】 StartServers 2 MaxClients 400 ServerLimit 12 MinSpareThreads 25 MaxSpareThreads 75 网络技术应用网 专业和专注企业服务器应用 ThreadsPerChild 25 ThreadLimit 75 MaxRequestsPerChild 0 【参数说明】1.ServerLimit 服务器允许配置的进程数上限。这个参数和 ThreadLimit 结合使用便决定了 MaxClients 所能设置的最大值。任何在重启期间对这个参数的改变都将被忽略,但对 M
13、axClients 的修改却会生效。 2.ThreadLimit 每个子进程可设置的线程数上限,这个参数决定了每个子进程可创建线程的数,即 ThreadsPerChild 的上限。任何在重启期间对这个参数的改变都将被忽略,但对 ThreadsPerChild 的修改却会生效。默认值是 64. 3.StartServers 服务器启动时建立的子进程数,默认值是 3 。 4.MinSpareThreads 最小空闲线程数 , 默认值是 75 。 MPM 将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。 5.MaxSpareThreads 设置最大空闲线程数
14、。默认值是 250 。 MPM 将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。 MaxSpareThreads 的取值范围是有限制的,在 Apache 的 worker 模式下是要求大于等于 MinSpareThreads 与 ThreadsPerChild 之和来自动修正你设置的值。 6.MaxClients 允许同时接收客户端最大请求的数量 ( 最大线程数量 ) 。任何超过 MaxClients 限制的请求都将进入等候队列。默认值是 400, 即 16 (ServerLimit) 乘以 25(ThreadsPerChild) 。因此需要增加 M
15、axClients 的时候,你必须同时增加 ServerLimit 的值。 7.ThreadsPerChild 每个子进程建立常驻的执行线程数。默认值是 25 。子进程在启动时建立这些线程后就不再建立新的线程了。 网络技术应用网 专业和专注企业服务器应用 8.MaxRequestsPerChild 设置每个子进程在其生存期内允许提供服务的最大请求数量。到达 MaxRequestsPerChild 的限制后,子进程将会结束。如果 MaxRequestsPerChild 为 0 ,子进程将永远不会结束。将 MaxRequestsPerChild 设置成非零值有两个好处: 1. 可以防止 ( 偶然的 ) 内存泄漏无限进行,从而耗尽内存。 2. 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。 注意 对于 KeepAlive 链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链