Apache拥有4层结构,从核心到外层的module。而外层的module可以用通过静态和动态两种方式与Apache共同工作。这也就引入下文的“动态”和“静态”两种编译安装方式:
静态编译: 编译的时候,所有的模块自己编译进 httpd 这个文件中 ,启动Apache的时候这些模块就已经加载进来了,可以直接来使用,而不用再 httpd.conf 中在 LoadModule 来加载,只要在
动态编译:
编译的时候,使用enable-MODULE=shared 或者enable-mods-shared=MODULE来动态编译。 动态显然就不编译到httpd里面去了,启动的时候根本不会加载这个模块, 而是给你一个module.so 文件。你想用,就在httpd.conf中使用 loadmodule 这个语法来加载,这个模块才有效。
区别是: 静态的模块通常在http.conf中用
./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-mods-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-mods-shared='alias rewrite'
最大化静态安装Apache:
.
/configure
--prefix=
/usr/local/apache
--
enable
-modules=all
最大化动态安装Apache:
.
/configure
--prefix=
/usr/local/apache
--
enable
-mods-shared=all
静态安装rewrite、动态安装deflate以及headers
.
/configure
--prefix=
/usr/local/apache
--
enable
-rewrite=static --
enable
-deflate=shared --
enable
-headers=shared
不安装基本的alais,保留以后的扩展DSO能力:
.
/configure
--prefix=
/usr/local/apache
--
enable
-so=static --disable-
alias
转载http://www.cnblogs.com/52php/p/5668845.html