apache添加模块(不重新编译)

上传人:m**** 文档编号:565034361 上传时间:2023-09-20 格式:DOC 页数:5 大小:54.50KB
返回 下载 相关 举报
apache添加模块(不重新编译)_第1页
第1页 / 共5页
apache添加模块(不重新编译)_第2页
第2页 / 共5页
apache添加模块(不重新编译)_第3页
第3页 / 共5页
apache添加模块(不重新编译)_第4页
第4页 / 共5页
apache添加模块(不重新编译)_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《apache添加模块(不重新编译)》由会员分享,可在线阅读,更多相关《apache添加模块(不重新编译)(5页珍藏版)》请在金锄头文库上搜索。

1、apache添加模块(不重新编译)下面是使用apxs工具给apache添加模块添加的模块:LoadModule proxy_module libexec/mod_proxy.soLoadModule rewrite_module libexec/mod_rewrite.soLoadModule headers_module libexec/mod_headers.so添加方法:1. 进入apache1.3.33 源文件modules目录cd apache_1.3.33/src/modules/2. 安装 proxy_module cd proxy /user/local/apache/bin/

2、apxs -i -a -c *.c3. 安装 rewrite_module cd standard /user/local/apache/bin/apxs -i -a -c mod_rewrite.c4. 安装 headers_module cd standard /user/local/apache/bin/apxs -i -a -c mod_headers.c但是,用这种方法添加的proxy不可用,提示错误:/apache/httpd/bin/apachectl configtesthttpd: Syntax error on line 58 of /apache/httpd-2.2.3/

3、conf/httpd.conf: Cannot load /apache/httpd-2.2.3/modules/mod_proxy.so into server: /apache/httpd-2.2.3/modules/mod_proxy.so:undefinedsymbol:proxy_lb_workers所以,应该这样:在Linux系统下,需要给已经运行的Apache增加mod_proxy模块,编译的时候应该这样:apxs -c -i mod_proxy.c proxy_util.c否则你可能会收到这样的错误信息rootserver1 proxy# /apache/httpd/bin/a

4、pachectl configtesthttpd: Syntax error on line 58 of /apache/httpd-2.2.3/conf/httpd.conf: Cannot load /apache/httpd-2.2.3/modules/mod_proxy.so into server: /apache/httpd-2.2.3/modules/mod_proxy.so:undefinedsymbol:proxy_lb_workers如果你还加载了mod_proxy_ajp.so那应该apxs -c -i mod_proxy_ajp.c ajp*.crootserver1

5、proxy# /apache/httpd/bin/apachectl configtesthttpd: Syntax error on line 58 of /apache/httpd-2.2.3/conf/httpd.conf: Cannot load /apache/httpd-2.2.3/modules/mod_proxy_ajp.so into server: /apache/httpd-2.2.3/modules/mod_proxy_ajp.so:undefinedsymbol:ajp_msg_reset这是为什么呢?请看apxs - Apache 扩展工具apxs是一个为Apach

6、e HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apachehttpd必须内建了mod_so模块。apxs工具能自动探测是否具备这样的条件,你也可以自己用这个命令手动探测:$ httpd -l该命令的输出列表中应该有mod_so模块。如果所有这些条件均已具备,则可以很容易地借助apxs安装你自己的DSO模块以扩展Apache服务器的功能:$ apxs -i -a -c mod_foo.cgcc -f

7、pic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.cld -Bshareable -o mod_foo.so mod_foo.ocp mod_foo.so /path/to/apache/modules/mod_foo.sochmod 755 /path/to/apache/modules/mod_foo.soactivating module foo in /path/to/apache/etc/httpd.conf$ apachectl restart/path/to/apache/sbin/apachectl restart

8、: httpd not running, trying to startTue Mar 31 11:27:55 1998 debug mod_so.c(303): loaded module foo_module/path/to/apache/sbin/apachectl restart: httpd started$ _其中的参数files可以是任何C源程序文件(.c)、目标代码文件(.o)、甚至是一个库(.a)。apxs工具会根据其后缀自动编译C源程序或者连接目标代码和库。但是,使用预编译的目标代码时,必须保证它们是地址独立代码(PIC),使之能被动态地加载。如果使用GCC编译,则应该使用

9、-fpic参数;如果使用其他C编译器,则应该查阅其手册,为apxs使用相应的编译参数。有关Apache对DSO的支持的详细信息,可以阅读mod_so文档,或者直接阅读src/modules/standard/mod_so.c源程序。语法apxs-g -Sname=value -nmodnameapxs-q -Sname=valuequery.apxs-c -Sname=value -odsofile -Iincdir -Dname=value -Llibdir -llibname -Wc,compiler-flags -Wl,linker-flagsfiles.apxs-i -Sname=va

10、lue -nmodname -a -Adso-file.apxs-e -Sname=value -nmodname -a -Adso-file.选项一般选项-nmodname它明确设置了-i(安装)和-g(模板生成)选项的模块名称。对-g选项,它是必须的;对-i选项,apxs工具会根据源代码判断,或(在失败的情况下)按文件名推测出这个模块的名称。查询选项-q查询某种apxs设置的信息。该选项的query参数可以是下列一个或多个字符串:CC,CFLAGS,CFLAGS_SHLIB,INCLUDEDIR,LD_SHLIB,LDFLAGS_SHLIB,LIBEXECDIR,LIBS_SHLIB,SB

11、INDIR,SYSCONFDIR,TARGET。这个参数用于手动查询某些设置。比如,要手动处理Apache的C头文件,可以在Makefile中使用:INC=-Iapxs -q INCLUDEDIR配置选项-Sname=value此选项可以改变apxs的上述设置。模板生成选项-g此选项生成一个名为name的子目录(见选项-n)和其中的两个文件:一个是名为mod_name.c的样板模块源程序,可以用来建立你自己的模块,或是学习使用apxs机制的良好开端;另一个则是对应的Makefile,用于编译和安装此模块。DSO编译选项-c此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应

12、的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),以生成动态共享对象dsofile。如果没有指定-o选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so。-odsofile明确指定所建立的动态共享对象的文件名,它不能从files文件列表中推测得到。如果没有明确指定,则其文件名将为mod_unknown.so。-Dname=value此选项直接传递到给编译命令,用于增加自定义的编译变量。-Iincdir此选项直接传递到给编译命令,用于增加自定义的包含目录。-Llibdir此选项直接传递到给连接命令,用于增加自定义的

13、库文件目录。-llibname此选项直接传递到给连接命令,用于增加自定义的库文件。-Wc,compiler-flags此选项用于向编译命令libtool -mode=compile中附加compiler-flags,以增加编译器特有的选项。-Wl,linker-flags此选项用于向连接命令libtool -mode=link中附加linker-flags,以增加连接器特有的选项。DSO的安装和配置选项-i此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。-a此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行

14、已经存在,则启用之。-A与-a选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。-e表示需要执行编辑操作,它可以与-a和-A选项配合使用,与-i操作类似,修改Apache的httpd.conf文件,但是并不安装此模块。举例假设有一个扩展Apache功能的模块mod_foo.c,使用下列命令,可以将C源程序编译为共享模块,以在运行时加载到Apache服务器中:$ apxs -c mod_foo.c/path/to/libtool -mode=compile gcc . -c mod_foo.c/path/to/libtool -mode=link

15、 gcc . -o mod_foo.la mod_foo.slo$ _然后,必须修改Apache的配置,以确保有一个LoadModule指令来加载此共享对象。为了简化这一步骤,apxs可以自动进行该操作,以安装此共享对象到modules目录,并更新httpd.conf文件,命令如下:$ apxs -i -a mod_foo.la/path/to/instdso.sh mod_foo.la /path/to/apache/modules/path/to/libtool -mode=install cp mod_foo.la /path/to/apache/modules . chmod 755 /path/to/ap

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号