Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块
2014-06-13 10:44
525 查看
想实践下Apache是如何运行cgi程序的,却发现先前编译安装Apache的时候,没有安装Apache的cgi模块。
附:CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.25
此时,从 httpd.conf 文件中可看到如下模块被动态加载(没有cgi模块):
查了下网络资料,发现Apache自带的apxs工具,可以在不重新编译Apache的前提下,给Apache添加模块。
Apache运行cgi程序需要用到2个模块:mod_cgi.so 与 mod_cgid.so
操作如下:
添加的模块:
LoadModule cgi_modulelibexec/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模块
编译成功后会输出:
#编译安装 cgid模板
编译成功后会输出:
asps参数含义:
-i 表示需要执行安装操作。
-a 自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-n 增加或启用的模块名称。
# 再次查看下配置文件 httpd.conf:
cgi与cgid模块被加载。
#重启下Apache
结果报如下错误:
提示说:cgi_module 是内建模块,即无需手动加载,所以我们把“LoadModule cgi_module modules/mod_cgi.so”注释掉即可!
用命令 apachectl -l 去查看下哪些模块被内建了
从上面可看出,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
附:CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.25
此时,从 httpd.conf 文件中可看到如下模块被动态加载(没有cgi模块):
1 | LoadModule deflate_module modules/mod_deflate.so |
2 | LoadModule expires_module modules/mod_expires.so |
3 | LoadModule headers_module modules/mod_headers.so |
4 | LoadModule ssl_module modules/mod_ssl.so |
5 | LoadModule rewrite_module modules/mod_rewrite.so |
6 | LoadModule php5_module modules/libphp5.so |
Apache运行cgi程序需要用到2个模块:mod_cgi.so 与 mod_cgid.so
操作如下:
添加的模块:
LoadModule cgi_modulelibexec/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模块
1 | cd /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 |
1 | cd /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 | ---------------------------------------------------------------------- |
6 | chmod 755 /usr/ local /apache/modules/mod_cgi.so |
7 | [activating module `cgi' in /usr/ local /apache/conf/httpd.conf] #这行表示,在httpd.conf中已经加载了cgi module |
1 | cd /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 | ---------------------------------------------------------------------- |
3 | chmod 755 /usr/ local /apache/modules/mod_cgid.so |
4 | [activating module `cgid' in /usr/ local /apache/conf/httpd.conf] #这行表示,在httpd.conf中已经加载了cgid module |
-i 表示需要执行安装操作。
-a 自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-n 增加或启用的模块名称。
# 再次查看下配置文件 httpd.conf:
1 | LoadModule deflate_module modules/mod_deflate.so |
2 | LoadModule expires_module modules/mod_expires.so |
3 | LoadModule headers_module modules/mod_headers.so |
4 | LoadModule ssl_module modules/mod_ssl.so |
5 | LoadModule rewrite_module modules/mod_rewrite.so |
6 | LoadModule php5_modulemodules/libphp5.so |
7 | LoadModule cgi_module modules/mod_cgi.so |
8 | LoadModule cgid_modulemodules/mod_cgid.so |
#重启下Apache
1 | service 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 | [失败] |
用命令 apachectl -l 去查看下哪些模块被内建了
01 | [root@localhost generators] # httpd -l |
02 | Compiled 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] # |
常见的安装报错及解决方案(以安装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
相关文章推荐
- Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块
- Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块
- Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块
- 利用模块添加系统调用(不重新编译内核)
- apache添加模块rewrite(伪静态页)(不重新编译)rewrite伪静态页
- 利用模块添加系统调用(不重新编译内核)
- 利用模块添加系统调用(不重新编译内核)
- apache添加扩展模块(不重新编译)
- centos-nginx添加模块(无需重新编译)
- linux下apache编译安装后添加新模块
- apxs添加apache模块,根phpize很类似
- Nginx重新编译添加模块
- 不重新编译php添加扩展模块
- apxs - apache扩展工具编译命令解析
- 转:用APXS编译Apache模块
- 编译时向内核添加新设备 模块的方式动态的将驱动加入内核,但这种方式加入的驱动程序,当系统重新启动时, 还需要重新用模块的方式进行插入,如果是系统内常用的设备驱动采用这种方式进行加载, 就会很不方便。
- 为Apache编译添加mod_expires模块出错的解决笔记[原创]
- Linux环境下不重新编译php添加扩展模块
- LINUX下PHP编译添加相应的动态扩展模块so(不需要重新编译PHP,以openssl.so为例)
- php不重新编译添加模块 php不重新编译添加模块