Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块
想实践下Apache是如何运行cgi程序的,却发现先前编译安装Apache的时候,没有安装Apache的cgi模块。
附:CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.25
此时,从 httpd.conf 文件中可看到如下模块被动态加载(没有cgi模块):
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule 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模块
cd /usr/local/src/Apache-2.2.25/httpd-2.2.25/modules/generators
/usr/local/apache/bin/apxs -i -a -c mod_cgi.c
编译成功后会输出:
cd /usr/local/src/Apache-2.2.25/httpd-2.2.25/modules/generators
/usr/local/apache/bin/apxs -i -a -c mod_cgi.c .... #省略掉了前部分内容
----------------------------------------------------------------------
chmod 755 /usr/local/apache/modules/mod_cgi.so
[activating module `cgi' in /usr/local/apache/conf/httpd.conf] #这行表示,在httpd.conf中已经加载了cgi module
#编译安装 cgid模板
cd /usr/local/src/Apache-2.2.25/httpd-2.2.25/modules/generators
/usr/local/apache/bin/apxs -i -a -c mod_cgid.c
编译成功后会输出:
.... #省略掉了前部分内容
----------------------------------------------------------------------
chmod 755 /usr/local/apache/modules/mod_cgid.so
[activating module `cgid' in /usr/local/apache/conf/httpd.conf] #这行表示,在httpd.conf中已经加载了cgid module
asps参数含义:
-i 表示需要执行安装操作。
-a 自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-n 增加或启用的模块名称。
# 再次查看下配置文件 httpd.conf:
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module modules/libphp5.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule cgid_module modules/mod_cgid.so
cgi与cgid模块被加载。
#重启下Apache
service httpd restart
结果报如下错误:
[root@localhost PHP-5.3.27]# service httpd restart
停止 httpd: [确定]
启动 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
[失败]
提示说:cgi_module 是内建模块,即无需手动加载,所以我们把“LoadModule cgi_module modules/mod_cgi.so”注释掉即可!
用命令 apachectl -l 去查看下哪些模块被内建了
[root@localhost generators]# httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_version.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c
[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
Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块的更多相关文章
- win8.1上wamp环境中利用apache自带ab压力测试工具使用超简单讲解
2015.10.4apache自带ab压力测试工具使用:本地环境:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一 ...
- axis2 利用小工具cat.aar
Axis2: Web Service是现在最适合实现SOAP的技术,而Axis2是实现Web Service的一种技术框架(架构). 昨天把把菜刀脚本打包发现<>在xml会被转义,导致菜刀 ...
- 开源的类似于Apache ab的压力测试命令行工具SuperBenchmarker
SuperBenchmarker 是ㄧ个开源的类似于Apache ab的压力测试命令行工具.可以在 .NET 4.52+ 或者 .NET Core 2.0+ 平台上运行. 可支持Get.Post.Pu ...
- Linux下利用Valgrind工具进行内存泄露检测和性能分析
from http://www.linuxidc.com/Linux/2012-06/63754.htm Valgrind通常用来成分析程序性能及程序中的内存泄露错误 一 Valgrind工具集简绍 ...
- 编译安装LAMP之安装Apache+php与管理(十五)
[教程主题]:编译安装LAMP之安装Apache+php与管理 [课程录制]: 创E [主要内容] [1]编译安装Apache+PHP 1.安装程序依赖库和开发环境 为了省事把所需要的库文件全都安装上 ...
- 网站apache环境S2-057漏洞 利用POC 远程执行命令漏洞复现
S2-057漏洞,于2018年8月22日被曝出,该Struts2 057漏洞存在远程执行系统的命令,尤其使用linux系统,apache环境,影响范围较大,危害性较高,如果被攻击者利用直接提权到服务器 ...
- 利用POI工具读取word文档并将数据存储到sqlserver数据库中
今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...
- 利用代码生成工具Database2Sharp生成ABP VNext框架项目代码
我们在做某件事情的时候,一般需要详细了解它的特点,以及内在的逻辑关系,一旦我们详细了解了整个事物后,就可以通过一些辅助手段来提高我们的做事情的效率了.本篇随笔介绍ABP VNext框架各分层项目的规则 ...
- Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用
前面几篇介绍了Web API的基础信息,以及如何基于混合框架的方式在WInform界面里面整合了Web API的接入方式,虽然我们看似调用过程比较复杂,但是基于整个框架的支持和考虑,我们提供了代码生成 ...
随机推荐
- http status 状态码汇总
常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 400 Bad Req ...
- es6学习笔记2-解构赋值
解构赋值基本概论就按照一定的模式通过数组或者对象对一组变量进行赋值的过程. 1.通过数组对变量进行赋值: /*通过这种方式赋值要注意左右两边的结构模式要一样,在赋值的时候,根据位置进行赋值对应模式.* ...
- Android与Struts2简单json通信
具体要求是: 服务器端得到客户端传递来的数据,并返回给客户端一条json格式的字符串 闲话不多说,直接上代码 首先是服务器端代码:建立一个web工程,导入struts2和json的jar包,并在web ...
- PHP unset销毁变量并释放内存
PHP的unset()函数用来清除.销毁变量,不用的变量,我们可以用unset()将它销毁.但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子: <?php $s=st ...
- java 一些图片
- XCodeo如何去除多余的模拟器---学习笔记七
首先退出Xcode并且关闭模拟器: 然后在终端(Terminal)输入如下2行命令: sudo killall -9 com.apple.CoreSimulator.CoreSimulatorServ ...
- Python-13-堡垒机开发
今天主要是熟悉堡垒机开发流程.
- 利用缓存实现APP端与服务器接口交互的Session控制
与传统B/S模式的Web系统不同,移动端APP与服务器之间的接口交互一般是C/S模式,这种情况下如果涉及到用户登录的话,就不能像Web系统那样依赖于Web容器来管理Session了,因为APP每发一次 ...
- SQL Server 常用关键字
SQL 建库 建表 --1.创建一个数据库 create database School; --删除数据库 drop database School; --创建数据库的时候指定一些选项. create ...
- 2.0 (1)安装MongoDB
(官网:www.mongodb.com) ——————————(1)Mac安装MongoDB———————— 1)安装homebrew (官网地址,brew.sh) ruby -e "$(c ...