笔者的nginx安装目录为/usr/local/nginx
虚拟机配置文件为/usr/local/nginx/conf/vhosts.conf
目前php fast-cgi已支持
以下操作均在su下完成
=====================
tar -zxvf FCGI-0.67.tar.gz
cd FCGI-0.67
perl Makefile.PL
make && make install
安装FCGI-ProcManager:
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.18.tar.gz
tar -xzxf FCGI-ProcManager-0.18.tar.gz
cd FCGI-ProcManager-0.18
perl Makefile.PL
make make install
===================
先在/bin目录下放置一个perl写的分发器,取名叫perl-fcgi
vi /bin/perl-cgi
给这个脚本执行权限
chmod +x /bin/perl-fcgi
然后试试看能否启动
/bin/perl-cgi &
若是成功则会出现以下信息
FastCGI: server (pid 21315): initialized
FastCGI: manager (pid 17915): server (pid 21315) started
如果遇到错误Can’t locate FCGI.pm,那么执行下面的命令
perl -MCPAN -e 'install FCGI'
perl -MCPAN -e 'install FCGI::ProcManager'
cd /usr/include; h2ph *.h */*.h
第一、二条命令是给perl安装FCGI模块,第三条是注册perl能识别的头文件,然后重新执行/bin/perl-fcgi, 如果正常的话,那么执行:
netstat -tunlp
列表中应该出现
tcp 0 0 127.0.0.1:10081 0.0.0.0:* LISTEN 5640/perl
启用分发器
/bin/perl-fcgi > /dev/null 2>&1 &
将其写入rc.local
echo "/bin/perl-fcgi > /dev/null 2>&1 &" >> /etc/rc.local
上面的方式启动后perl-fcgi是以执行它的用户身份运行的,对于web程序来说这是很不利的。老外用perl写了一个脚本Noah Friedman可以用指定的用户来运行某个程序,源程序在这里,这里也贴出来方便查阅
vi /sbin/runas
我的vsftpd、nginx、php-fpm都是以nobody运行,则perl-cgi也用nobody运行
chmod +x /sbin/runas
runas --daemon -g nobody -u nobody /bin/perl-fcgi
==================
配置nginx
vi /usr/local/nginx/conf/fcgi_perl.conf
下面是一个cgi虚拟机的配置示例
/usr/local/nginx/sbin/nginx -t
测试OK之后重新加载nginx配置文件
/usr/local/nginx/sbin/nginx -s reload
enjoy it.