首页 > 代码库 > 编译安装apache

编译安装apache

./configure --prefix=/application/apache.2.2.27/  \      //安装时指定安装位置

--enable-deflate  \                  //对传输文件进行压缩

--enable-expires  \                  //浏览器缓存

--enable-headers  \                 //激活http头部

--enable-modules=most  \      //加载apache模块

--enable-so  \                          

--with-mpm=worker  \            //选择apache的工作模式(支持高并发worker)

--enable-rewrite                      //伪静态





apache有三种运行模式:
1, prefork MPM;

2, worker MPM;
3, perchild MPM.

 

prefork MPM
管理员应选择prefork MPM来实施基于流程的Web服务器。虽然基于流程的服务器有一些速度较慢的性能,它们通过模块来提供稳定性和兼容性,这些模块不支持线程。为了改进性能,服务器的父流程fork多个子流程并使它们能够用于应答请求。当接收到请求时,服务器把其分配给子流程。如果没有子流程可用,服务器创建新的子流程并把它添加到库中。但是,子流程的创建会导致延迟。当配置这一MPM时,管理员可以限制启动时可以创建的子流程数、最大的子流程数等。这一MPM有利于形成一个稳定的Apache服务器,但同时会影响性能和占用内存,因为单个流程的大小会占很大一部分。

The worker MPM

为了实施混合服务器,管理员可以选择worker MPM,它提供比prefork MPM更卓越的可靠性、故障恢复能力和可扩展性。启动时父流程创建规定数量的子流程,反过来每个子流程包含多个线程。每个子流程中只有一个线程聆听网络,它简化了程序代码,减少了流程之间的协作,从而提高性能。虽然这一MPM稳定且性能优于prefork,由于它是基于线程,与其一同使用的所有模块都必须是完全的线程-安全。大多数Apache 1.3模块不是线程安全,并且由于worker MPM不向后兼容,因此,使用这一MPM的管理员也不能一同使用Apache 1.3模块和Apache 2.0。但是使用prefork MPM来编译服务器允许管理员使用Apache 1.3模块。

The perchild MPM
如果遇到这样一种情况,考虑到安全性和性能,需要Apache流程基于不同的用户ID来运行,管理员可以使用perchild MPM 来编译混合服务器。互联网服务供应商(ISP)通常使用这一MPM来实现虚拟托管。当perchild启动时,它创建规定数量的流程,每个流程有规定数量的线程和专用的用户ID。如果服务器上的负载增加,它使用现有流程之一来创建新线程,而不是创建新流程。这种MPM是最可扩展,但也最不可靠。


编译安装apache