一 Apache安装新模块
1.从httpd的源码中或下载的模块包中编译生成.so文件。
2.修改httpd.conf,LoadModule xxx_module modules/mod_xxx.so
3.把.so文件复制到Apache的libexec目录中。
.c文件源码安装(使用apxs工具)
apxs -i -c -a mod_xxx.c
二 apxs命令
apxs
是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule 指令在运行时加载到Apache服务器中。
要使用这个扩展机制,你的平台必须支持DSO特性,而且Apache httpd
必须内建了mod_so
模块。apxs
工具能自动探测是否具备这样的条件。
参数说明
-i 此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。
-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-A 与 -a 选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。
-c 此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so 。
-
明确指定所建立的动态共享对象的文件名,它不能从
files 文件列表中推测得到。如果没有明确指定,则其文件名将为
mod_unknown.so
。
-o dsofile
三 静态模块与动态模块
在使用./configure 编译的时候,如果不指定某个模块为动态,即没有使用:enable-mods-shared=module或者enable-module=shared 这个2个中的一个,那么所有的默认模块为静态。
静态的模块通常是<ifmodule></ifmodule> 来配置, 动态使用loadmoule来加载,然后再配置。
动态加载的模块都会显示在modules目录下。
静态加载的模块不会显示在modules目录下,静态加载模块内嵌在系统里,如果想卸载该模块,Apache需要重新进行编译安装。 静态加载的方法是配置时指定启动哪些模块。
./configure --enable-modulename
apachectl -l 会列出系统已经加载的模块,且为静态方式加载的模块。
安装Apache时 ./configure的配置选项
1.--enable-so 选项 或--enable-so=static:让 Apache 可以支持DSO模式(Apache2)。--enable-module=so(Apache1)。
2.--enable-mods-shared=all意思是动态加载所有模块,如果去掉-shared话,是静态加载所有模块。