apache模块及使用apx安装模块


apxs:apxs是一个为Apache超文本传输协议(HTTP)服务器编译安装扩展模块的工具, 用于编译一个或多个源程序或目标代码文件为动态共享对象, 使之可以用mod_so中的LoadModule指令 在运行时刻加载到Apache服务器中。
使用apxs编译安装模块
apxs(Apache eXtenSion, Apache扩展)其实是一个Perl脚本,可以用它来为Apache服务器编译和安装模块。要使用apxs提供的功能受限需要确认mod_so模块已经静态编译到Apache中,可以使用httpd的-M或-l来确认。

apxs用法:
./apxs
Usage: apxs -g [-S =] -n
apxs -q [-v] [-S =] [ ...]
apxs -c [-S =] [-o ] [-D [=]]
[-I ] [-L ] [-l ] [-Wc,]
[-Wl,] [-p] …
apxs -i [-S =] [-a] [-A] [-n ] …
apxs -e [-S =] [-a] [-A] [-n ] …

-i 键编译好的DSO模块安装到服务器的Modules目录中
-a 为安装的模块生产一个新的LoadModule行到Apache的配置文件中并启用
-A 和-a相同,但是不启用(前面加#)
-c 编译生产DSO模块

例子:
/usr/local/apache/bin/apxs -c -i -a mod_txt.c
把mod_txt.c进行编译成DSO模块(-c)然后放入到服务器的modules目录中(-i),之后往配置文件中添加一个LoadModule行并启用(-a)。

动态链接模块使用方法
如果是以DSO模块方式编译,则要使用LoadModule指令对模块进行加载。mod_so模块提供了对模块加载的支持,mod_so模块提供了两个重要指令:LoadModule和LoadFile。
LoadModule指令用来加载Apache模块或是指定的库文件,并将它添加到活动模块清单中。比如:LoadModule vhost_alias_module modules/mod_vhost_alias.so。LoadModule指令只能用来加载Apache的跟目录,也就是ServerRoot目录下的模块目录中的指定模块,如果需要记载其它位置模块或文件则需要使用LoadFile指令,它可以使用绝对路径。

Apache的模块可以分成三大类:核心模块、标准模块、第三方模块
核心模块 是无法模块化的模块,它们是Apache服务的基础模块,必须始终静态链接到Apache内核的模块,并且无法删除,同时此模块提供的指令在Apache服务中始终是可用的。
标准模块作为Apache的一部,与核心模块不同的是标准模块可以安全的删除和加载。如果要动态加载Apache的标准模块,则(mod_so.c)模块必须以静态链接的方式编译到Apache中。

Archives