让lnmpa支持cgi

lnmp是Linux+Nginx+Mysql+php的简称,这是Web开发中很厉害的一种组合方式,但是它也有一点的缺点。
为了弥补某些缺点,后来加入Apache,成为lnmpa。

lnmp.org提供了lnmp的一键安装包,详见 http://lnmp.org/
lnmp.org也提供了lnmpa的一键安装包,详见 http://lnmp.org/lnmpa.html

之前用lnmp一键安装包,可以很方便运行cgi程序,一旦升级为lnmpa,就不支持cgi程序了。

一些很必要的程序必须基于cgi,例如统计工具awstats。

为了使lnmpa支持cgi程序,我花了很长时间来研究,最后找出了解决方案。

解决方法

1.查看lnmpa升级文件 apache.sh ,搜索“cgi”

# cd lnmp0.9-full/
# cat apache.sh | grep cgi
./configure --prefix=/usr/local/apache --enable-headers --enable-mime-magic --enable-proxy --enable-so --enable-rewrite \
   --enable-ssl --enable-deflate --enable-suexec --disable-userdir --with-included-apr --with-mpm=prefork --with-ssl=/usr \
   --disable-userdir --disable-cgid --disable-cgi

我们发现cgi默认情况下是禁止的,若要开启cgi支持,重新配置并编译apache。

# cd httpd-2.2.22
# ./configure --prefix=/usr/local/apache --enable-headers --enable-mime-magic --enable-proxy --enable-so --enable-rewrite --enable-ssl --enable-deflate --enable-suexec --disable-userdir --with-included-apr --with-mpm=prefork --with-ssl=/usr
# make
# make install

要编译很久,默默等待……

然后重启lnmpa,就可以在phpinfo中看到cgi模块了。

# cd lnmp0.9-full/
# ./lnmpa restart

2.接下来需要修改nginx的vhost文件来使nginx把cgi等请求交给apache处理

# vi /usr/local/nginx/conf/vhost/YOUR_NAME.conf

找到以下语句:

location ~ .*\.(php|php5)?$ {
        proxy_pass http://127.0.0.1:88;
        include proxy.conf;
}

改为

location ~ .*\.(php|php5|cgi|pl)?$ {
        proxy_pass http://127.0.0.1:88;
        include proxy.conf;
}

重新装载一下nginx

# /etc/init.d/nginx reload

3.修改你的apache的vhost配置文件

在配置文件中合适位置适当增加或修改。

AddType text/plain .cgi .pl
<Directory "/home/wwwroot/tool/">
    Options Includes Indexes ExecCGI FollowSymLinks
    AllowOverride All
    AddHandler cgi-script .cgi .pl
</Directory>

优雅的重新装载apache服务

# /etc/init.d/httpd graceful

4.编写测试脚本

在指定的根目录中新建一个index.cgi的脚本,内容如下

#!/bin/sh
echo 
echo "hello world!"

第一行是声明解析器类型
第二行是输出一个空号
第三行是打印一个hello world!

保存这个文件,并把它赋予www用户的可执行权限

# chmod +x index.cgi

访问规定的网址,即可显示出hello world!

常见问题

1.phpinfo中不会出现mod_cgi  可能是没有重启lnmpa。不是重启apache,是整个lnmpa。

2.访问index.cgi时提示下载文件  没有在apache配置文件中添加“AddType text/plain .cgi .pl

3.访问index.cgi打开是源代码  nginx配置文件中没有将cgi请求转发给apache
  没有将cgi模块成功安装,apache不处理cgi请求
4.打开index.cgi提示malformed header from script. Bad header
  cgi文件中没有打印首个空行,http响应头有错
5.打开index.cgi提示Premature end of script headers
  cgi文件没有执行权限

转载于:https://www.cnblogs.com/hustcf/archive/2013/04/02/2994913.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值