apache 模块编写(c++)

本文介绍了如何使用C++编写Apache模块。首先通过apxs工具生成模块框架,然后编译链接生成mod_mytest.so。重点讲解了如何从request_rec参数获取URL参数、Cookie和IP,并介绍了Apache提供的各种输出函数。参考了多个资源,包括httpd.h头文件和相关博客教程。
摘要由CSDN通过智能技术生成

 

注:

路径为:/home/xxx/

工具为:apxs

框架搭建:

 

1、准备工作:安装apache对应的httpd-devel,主要是为了安装apxs。

 

2、生成一个apache的模块框架:cd /home/xxx/; apache module:apxs -g -n mytest

这里的mytest就是apache模块的名字,但是实际生成的so名为:mod_mytest.so

 

 

 

3、编译apache模块:使用c++语言编写apache模块,网上有说使用extern"C"的方法(见http://hi.baidu.com/zhangsilly/blog/item/a43fa11f869f4efae1fe0bf3.html),但是没有实验成功。extern"C"会有警告,而且编译不过~!

最后,将我的所有后台处理程序做成了一个liblogic.so,然后apache的模块mytest加载这个liblogic.so,而apache模块mytest中只是接收请求,传递参数给liblogic.so进行处理!而在mytest的模块编译时,使用apxs的参数-S进行CC重命名,如下:

apxs -c -a -S CC=g++  -I./src -I./src/common/ -llogic -L./src/  mod_mytest.c -Wl,-rpath=/home/xxx/mytest/src/

这里需要注意,即使你的mod_mytest.c中使用c++语言来编写,但是这个文件不能使用mod_mytest.cpp来进行命名,必须使用.c的后缀,否则不能编译!具体原因不明,待查!在使用-Wl,-rpath的时候,应用程序对实际的动态库路径寻找,需要注意!

可以通过/usr/lib64/apr-1/build/libtool --silent --mode=link g++ ...... 这里的silent去掉,看到具体的编译命令,前面有-Wl,--rpath -Wl,...可以看看!~

编译链接成功以后,在.libs/下会生成我们所用的mod_mytest.so

 

 

 

4、修改httpd.conf,添加:

LoadModule mytest_module  /home/x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值