首页 博客 娱乐 图库 新闻 体育 视频
expr

如何添加Apache模块

1、编译安装Apache、比如安装了httpd-2.4.4版本

2、写好模块文件、如新增一个 mod_helloworld.c

/* 02 * File: helloworld.c 03 * Author: luojie 04 * 05 * Created on March 25, 2015, 4:18 PM 06 */ 07 08 #include 
         
           09 #include 
          
            10 #include "http_config.h" 11 12 /* 13 * 14 */ 15 static int helloworld_handler(request_rec *r){ 16 17 if(!r->handler || strcmp(r->handler,"helloworld")){ 18 return DECLINED; 19 } 20 21 ap_set_content_type(r,"text/html;charset=ascii"); 22 ap_rputs("\n",r); 23 ap_rputs("
           Apache HelloWorld Module ",r); 24 ap_rputs("
           

Hello world ! HelloWorld Module

",r); 25 26 return OK; 27 } 28 29 /* 30 * 31 */ 32 static void helloworld_hooks(apr_pool_t *pool){ 33 ap_hook_handler(helloworld_handler,NULL,NULL,APR_HOOK_MIDDLE); 34 } 35 36 37 /* 38 * 39 */ 40 module AP_MODULE_DECLARE_DATA helloworld = { 41 STANDARD20_MODULE_STUFF, 42 NULL, 43 NULL, 44 NULL, 45 NULL, 46 NULL, 47 helloworld_hooks 48 };


3、编译、利用apxs工具


cd /usr/local/httpd/bin

./apxs -a -c mod_helloworld.c

./apxs -i -a -n helloworld mod_helloworld.la


4、修改HTTP配置文件http.conf

LoadModule helloworld modules/mod_helloworld.so


5、重启Apache

./apachectl restart


6、其中编译参数

-n:指定装载模块的名字。如果不使用这个选项,那么装载进来的模块将是以so为后缀的文件名。
-q:查询Apache的一些基本配置。例如,/usrflocal/apache/bin/apxs -q PREFIX将显示PREFIX的路径。
-s:更改用.q参数查询到的参数。例如,/usrfloca/apache/apxs -sPREFIX-/usr/local/apachel.
-c:编译模块。
-i:安装模块。
-a:自动添加LoadModule到hrtpd.conf文件中。


7、访问测试

http://knowledge.daletripp.com/helloworld

cbf5b1efea4180971b57b617f0065a78.png


8、常见错误

apxs:Error: Sorry, cannot determine bootstrap symbol name. apxs:Error: Please specify one with option `-n'.
加个-n参数,给模块起个名字

httpd: Syntax error on line 164 of /usr/local/httpd/conf/httpd.conf: Can't locate API module structure `helloworld_module' in file /usr/local/httpd/modules/mod_helloworld.so: /usr/local/httpd/modules/mod_helloworld.so: undefined symbol: helloworld_module

编辑http.conf文件

除非特别注明,本站所有文字均为原创文章,作者:luojie

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。