IBM HTTP Server 基于由 Apache Software Foundation 开发的 Apache HTTP Server。因此对IBM HTTP Server进行模块扩展时,可以采用与Apache类似的方式。
扩展IBM HTTP Server可以使用两种常见方法来构建动态模块:Apache 扩展工具(APXS)和随模块提供的配置脚本。
以下是用于构建动态模块的两种常见方法如下:
IBM HTTP Server 提供 apxs 工具用于构建动态模块。可以使用 apxs 来构建和安装大多数模块。
以下是一个示例:
# /usr/IBMIHS/bin/apxs -ci mod_example.c
要使用 apxs 工具,请验证是否已安装 Perl V5.003 或更高版本,并验证 apxs 第一行上指向 Perl 可执行文件的路径是否正确。请参阅 Apache APXS 以了解更多信息。
某些复杂模块不能直接使用 apxs 来构建,但提供其自己的配置脚本来构建模块。请参阅随模块提供的文档以了解详细的指示信息。检查是否有必须指向 IBM HTTP Server 安装目录的专门配置选项,或是否有随 IBM HTTP Server 安装的 apxs 程序。
某些模块的配置脚本专门检查是否使用了 Apache HTTP Server,但无法检查是否使用了 IBM HTTP Server。在这种情况下,请安装 Apache V2.0.47 并对 Apache V2.0.47 构建该模块,然后将生成的动态模块(mod_example.so)与 IBM HTTP Server 配合使用。
通常我们会使用APXS来进行扩展,IBM HTTP Serve安装后自带了这个扩展工具。路径为:/opt/IBM/HTTPServer/bin/apxs。使用该扩展工具进行扩展模块的编译时请参照具体模块的说明,因为参数可能不同。这里以BandWidth为例,该扩展模块用于对IBM HTTP Server
进行限速,编译命令为:
apxs -i -a -c mod_bw.c
该扩展工具主要执行以下操作:
1、 编译扩展模块
2、 将编译后的动态链接库(linux下为so文件)复制到/opt/IBM/HTTPServer/modules目录下
3、 在httpd文件中添加该模块使IBM HTTP Server启动时加载该模块
因此,如果插件官方已给出编译好的动态库或者我们自己已编译过该扩展组件,则无需次次编译,可以手动完成除编译外的工作,当然更好的办法是写一个简单的shell脚本替我们完成该工作。组件的编译通常需要编译环境,如gcc,这样就可以免去安装环境的繁琐工作。
值得注意的是,如果使用官方编译好的组件一定要使用与系统匹配的版本,否则将无法运行。例如:SUSE系统官方就没有提供相应的动态库的。
如果在IBM HTTP Server上构建扩展模块遇到问题,可以在同一台机器上验证是否可以使用 Apache HTTP Server 来正确构建和操作。如果在使用 Apache HTTP Server 也遇到问题,那么意味着这个扩展模块不能和 IBM HTTP Server 配合使用。 |