配置Nginx支持CGI

相信会特意看这篇文章的人对CGI是什么及其作用已经有了足够的了解,所以在这里不再赘述,直接开始配置。

需要的一些perl模块的安装,个人习惯使用perl -MCPAN -e shell

install FCGI

   Getopt

   IO

   Socket

   FCGI-ProcManager

   IO-ALL

……

安装FCGI-0.74.tar.gz包:

tar zxvf FCGI-0.74.tar.gz

cd FCGI-0.74

perl Makefile.PL

make && make install

安装FCGI-ProcManager-0.24.tar.gz包:

tar zxvf FCGI-ProcManager-0.24.tar.gz

cd FCGI-ProcManager-0.24

perl Makefile.PL

make && make install

安装IO-All-0.39.tar.gz包:

tar zxvf IO-All-0.39.tar.gz

cd IO-All-0.39

perl Makefile.PL

make && make install

安装Nginx-fcgi脚本:

mv /usr/sbin/nginx-fcgi.txt/usr/sbin/nginx-fcgi

chmod +x /usr/sbin/nginx-fcgi

Nginx配置文件中添加如下内容:

cat nginx.conf

location ~ ^/cgi-bin/.*\.cgi$
{
root          /work/www/test;
fastcgi_index  index.cgi;
fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
include        nginx_fcgi_params;
fastcgi_read_timeout    5m;
fastcgi_pass   unix:/var/run/nginx-fcgi.sock;
}


nginx-fcgi -l /var/log/nginx/nginx-fcgi.log-pid /var/run/nginx-fcgi.pid -S /var/run/nginx-fcgi.sock

启动报错,信息如下:

Can't open file'/var/log/nginx/nginx-fcgi.log' for append:
没有那个文件或目录 at /usr/local/nginx/sbin/nginx-fcgi line 43

解决办法:

mkdir -p /var/log/nginx
chown nobody:nobody /var/log/nginx

再次启动,ok

chown nginx.nginx /var/run/nginx-fcgi.sock

chmod 755 /var/run/nginx-fcgi.sock

重启nginx

新建 nginx-fcgi 脚本指令配置,直接从fastcgi_params复制模板,网上有些文档说从/etc/nginx/fastcgi_params拷过来,我部署的时候没有在这个位置找到这个文档,而且没有/etc/nginx这个文件夹,可能是因为版本和Nginx安装方式不同的原因吧,我新建了这个文件夹,并找到了/usr/local/nginx/conf/fastcgi_params.default这个脚本指令文件:

cp /usr/local/nginx/conf/fastcgi_params.default/etc/nginx/nginx_fcgi_params

到这里其实已经完成工作了,但我现在的公司需要在网页上能够显示数学公式,所以,以下两步是添加一个名为mimetex.cgi(可以在网上下载)的文件到/web/www/cgi-bin(如果没有此目录,请手动创建)下,有了这个文件系统才能将用户提交的文本格式的公式转换成真正的公式

mkdir /etc/nginx

cd /web/www/cgi-bin/

chmod +x mimetex.cgi