Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块

此时,从 httpd.conf 文件中可看到如下模块被动态加载(没有cgi模块):

1LoadModule deflate_module modules/mod_deflate.so
2LoadModule expires_module modules/mod_expires.so
3LoadModule headers_module modules/mod_headers.so
4LoadModule ssl_module modules/mod_ssl.so
5LoadModule rewrite_module modules/mod_rewrite.so
6LoadModule php5_module modules/libphp5.so

查了下网络资料,发现Apache自带的apxs工具,可以在不重新编译Apache的前提下,给Apache添加模块。

Apache运行cgi程序需要用到2个模块:mod_cgi.so 与 mod_cgid.so

操作如下:

添加的模块:

LoadModule cgi_module      libexec/mod_cgi.so
LoadModule cgid_module     libexec/mod_cgid.so

添加步骤:

如要额外安装cgi,先找到mod_cgi.c及mod_cgid.c。一般在apache安装包目录下,如 ./httpd-2.2.25/modules/generators 

 

#编译安装 cgi模块

1cd /usr/local/src/Apache-2.2.25/httpd-2.2.25/modules/generators
2/usr/local/apache/bin/apxs -i -a -c mod_cgi.c

编译成功后会输出:

1cd /usr/local/src/Apache-2.2.25/httpd-2.2.25/modules/generators
2/usr/local/apache/bin/apxs -i -a -c mod_cgi.c
3 
4.... #省略掉了前部分内容
5----------------------------------------------------------------------
6chmod 755 /usr/local/apache/modules/mod_cgi.so
7[activating module `cgi' in /usr/local/apache/conf/httpd.conf] #这行表示,在httpd.conf中已经加载了cgi module

 

#编译安装 cgid模板

1cd /usr/local/src/Apache-2.2.25/httpd-2.2.25/modules/generators
2/usr/local/apache/bin/apxs -i -a -c mod_cgid.c

编译成功后会输出:

1.... #省略掉了前部分内容
2----------------------------------------------------------------------
3chmod 755 /usr/local/apache/modules/mod_cgid.so
4[activating module `cgid' in /usr/local/apache/conf/httpd.conf] #这行表示,在httpd.conf中已经加载了cgid module

asps参数含义:

-i 表示需要执行安装操作。
-a 自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-n 增加或启用的模块名称。

 

# 再次查看下配置文件 httpd.conf

1LoadModule deflate_module modules/mod_deflate.so
2LoadModule expires_module modules/mod_expires.so
3LoadModule headers_module modules/mod_headers.so
4LoadModule ssl_module modules/mod_ssl.so
5LoadModule rewrite_module modules/mod_rewrite.so
6LoadModule php5_module        modules/libphp5.so
7LoadModule cgi_module         modules/mod_cgi.so
8LoadModule cgid_module        modules/mod_cgid.so

cgi与cgid模块被加载。

 

#重启下Apache

1service httpd restart

结果报如下错误:

1[root@localhost PHP-5.3.27]# service httpd restart
2停止 httpd:                                               [确定]
3启动 httpd:httpd: Syntax error on line 61 of /usr/local/apache/conf/httpd.conf: module cgi_module is built-in and can't be loaded
4                                                           [失败]

提示说:cgi_module内建模块,即无需手动加载,所以我们把“LoadModule cgi_module         modules/mod_cgi.so”注释掉即可!

用命令 apachectl -l 去查看下哪些模块被内建了

01[root@localhost generators]# httpd -l
02Compiled in modules:
03  core.c
04  mod_authn_file.c
05  mod_authn_default.c
06  mod_authz_host.c
07  mod_authz_groupfile.c
08  mod_authz_user.c
09  mod_authz_default.c
10  mod_auth_basic.c
11  mod_include.c
12  mod_filter.c
13  mod_log_config.c
14  mod_env.c
15  mod_setenvif.c
16  mod_version.c
17  prefork.c
18  http_core.c
19  mod_mime.c
20  mod_status.c
21  mod_autoindex.c
22  mod_asis.c
23  mod_cgi.c
24  mod_negotiation.c
25  mod_dir.c
26  mod_actions.c
27  mod_userdir.c
28  mod_alias.c
29  mod_so.c
30[root@localhost generators]#

从上面可看出,mod_cgi.c 果然被内建了!

 



 

 

常见的安装报错及解决方案(以安装rewrite模块为例)

报错1:

Can`t loacte API module staructure `mod_rewrite_module` in file /usr/local/apache2/modules/mod_rewrite.so:/usr/local/apache2/lib/libapr-0.so.0:undefined symbol:mod_rewrite_module

解决方法:

httpd.conf 里面写的mod_rewrite_module改成rewrite_module。

报错2: 

module rewrite_module is built-in and can't be loaded.

解决方法:

表示模块是内建的,不用再手动调入,注释掉 httpd.conf 中如下行:

#LoadModule rewrite_module modules/mod_rewrite.so

检查所有内建模块的命令: apachectl -l


原链接地址:http://www.qianyunlai.com/post-698.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值