在使用awstats等pl语言程序时遇到了问题。

lnmpa是一体安装包,lnmp.org 可以下载,但是lnmp更新成lnmpa了以后apache可以执行php程序,但是不能执行cgi,pl等程序了。

原因是apache编译的时候没有选择启用mod_cgi.so模块。
在apache.sh文件中可以看到以下命令:
./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

需要执行以下步骤
1.重新编译apache,使apache含有mod_cgi模块
运行
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 –disable-userdir –enable-cgid –enable-cgi
make && make install
然后再重启httpd服务。
如果phpinfo()里面有mod_cgi这个模块,表明这一步成功了。

2.让nginx转发cgi请求给apache
修改 /usr/local/nginx/conf/nginx.conf以及想要支持的vhost配置文件
找到location ~ .*\.(php|php5)?$
改为location ~ .*\.(php|php5|cgi|pl)?$
然后重启nginx服务。

3.修改apache配置文件,使指定目录具有执行cgi的权限
找到/usr/local/apache/conf/httpd.conf或者要执行cgi的vhost文件添加以下命令
AddType text/plain .cgi .pl
<Directory /home/wwwroot/XXXXX>
Options +ExecCGI +Indexes
AllowOverride All
</Directory>
重启httpd服务。

然后lnmpa就可以执行cgi和pl等程序了。