APACHE在LINUX上的编译安装

http://www.linux.gov.cn/netweb/mat/ApacheMenu_zh_CN/programs/configure.html

apache拥有4层结构,从核心到外层的module。而外层的module可以用通过静态和动态两种方式与apache共同工作。这也就引入下文的“动态”和“静态”两种编译安装方式:

静态编译:

编译的时候,所有的模块自己编译进httpd 这个文件中 ,启动apache的时候这些模块就已经加载进来了,可以直接来使用,而不用再httpd.conf中在LoadModule来加载,只要在 <ifmodule></ifmodule> 中来配置就可以了。

动态编译:

编译的时候,使用enable-module=shared 或者enable-modules-shared=module来动态编译。 动态显然就不编译到httpd里面去了,启动的时候根本不会加载这个模块, 而是给你一个module.so 文件。你想用,就在httpd.conf中使用 loadmodule 这个语法来加载,这个模块才有效。

区别是:

静态的模块通常在http.conf中用<ifmodule></ifmodule> 来配置,动态的要先loadmoule来加载,然后再<ifmodule></ifmodule>配置。官方说静态的比动态的在性能方面多5%左右。

相对来说,静态的效率高些,而动态方式配置方面灵活。想想如果编译进去的C这个module你想升级或者去掉,静态方式的就只能重新编译apache了。

下面这句在apache源文件夹下运行,可以查看默认情况下apache都给你装了那些module进去:

./configure –help | grep disable

让apache日后可以动态编译和加载模块:

如果想让apache日后可以支持动态编译(DSO)更多的module,需要在初次安装时把so这个模编译到核心。

如果编译中包含任何DSO模块,则mod_so会被自动包含进核心。如果希望核心能够装载DSO,但不实际编译任何DSO模块,则需明确指定:

针对apache1.x:    –enable-module=so

针对apache2.x: –enable-so=static

apache模块的类型:

基本(B)模块默认包含,必须明确禁用;

扩展(E)/实验(X)模块默认不包含,必须明确启用。

那么,针对以上这些类型的模块,有以下几种操作方式:

–disable-MODULE

禁用MODULE模块(仅用于基本模块)

–enable-MODULE=shared

将MODULE编译为DSO(可用于所有模块)

–enable-MODULE=static

将MODULE静态连接进核心(仅用于扩展和实验模块)

–enable-mods-shared=MODULE-LIST

将MODULE-LIST中的所有模块都编译成DSO(可用于所有模块)

–enable-modules=MODULE-LIST

将MODULE-LIST静态连接进核心(可用于所有模块)

针对–enable-modules和–enable-module-shared有两个懒办法就是 most参数和all参数,分别表示“很多的”和“所有”。

例如:

mod_alias是个基本模块,不想安装的话就: –disable-alias

mod_rewrite是个扩展模块,想动态加载它:–enable-rewrite=shared,想静态加载就是:–enable-rewrite=static

想静态编译mod_alias和mod_rewrite:–enable-modules=’alias rewrite’

想动态编译mod_alias和mod_rewrite:–enable-modules-shared=’alias rewrite’

针对apache2.2.x的一些例子:

最大化静态安装apache:

./configure –prefix=/path/to/local –enable-modules=all

最大化动态安装apache:

./configure –prefix=/path/to/local –enable-mod-shared=all

静态安装rewrite、动态安装deflate以及headers

./configure –prefix=/path/to/local –enable-rewrite=static –enable-deflate=shared –enable-headers=shared

不安装基本的alais,保留以后的扩展DSO能力:

./configure –prefix=/path/to/local –enable-so=static –disable-alias

相关推荐