通過前面的介紹,可以對Nginx有了一個比較全面的認識:Nginx本身是一個靜態HTTP伺服器和反向 Proxy伺服器,它不支援動態網頁面,所謂的Nginx對動態程式的支援都是通過反向 Proxy功能實現的。下面要講述的Nginx對Perl和JSP的支援,就是通過Nginx的反向 Proxy功能完成的。Nginx對Perl和JSP的支援在實現細節上可能有一定差別,但是實現原理是完全一樣的。
Nginx的安裝這裡不再講述,這假定Nginx的安裝路徑為/usr/local/nginx。
一、Perl(FastCGI)的安裝
1.擷取wrapper程式
讀者可以從http://www.nginx.eu/nginx-fcgi/ 上下載nginx-fcgi.txt檔案,然後將其命名為nginx-fcgi.pl並放到/usr/local/nginx目錄下。nginx-fcgi.pl是一個用Perl指令碼寫的wrapper執行個體,所以,作業系統必須要安裝Perl程式以及相關模組。
2.安裝相關的系統支援模組
可以從http://search.cpan.org下載所需的相應模組,然後進行安裝。
(1)安裝FCGI模組
[root@localhost opt]# tar zxvf FCGI-0.71.tar.gz
[root@localhost opt]# cd FCGI-0.71
[root@localhost FCGI-0.71]# perl Makefile.PL
[root@localhost FCGI-0.71]# make
[root@localhost FCGI-0.71]# make install
(2)安裝IO模組
[root@localhost opt]# tar -xvzf IO-1.25.tar.gz
[root@localhost opt]# cd IO-1.25
[root@localhost IO-1.25]# perl Makefile.PL
[root@localhost IO-1.25]# make
[root@localhost IO-1.25]# make install
(3)安裝IO::ALL模組
[root@localhost opt]# tar -xvzf IO-All-0.39.tar.gz
[root@localhost opt]# cd IO-ALL-0.39
[root@localhost IO-ALL-0.39]# perl Makefile.PL
[root@localhost IO-ALL-0.39]#make
[root@localhost IO-ALL-0.39]#make install
3.編寫nginx-fcgi啟動指令碼
僅僅有wrapper檔案是不夠的,還需要一個指令碼來建立socket、啟動wrapper以及將wrapper和socket綁定,下面通過一個shell指令碼來完成這一系列工作。
[root@localhost root]# more nginx-fcgi
#!/bin/bash
nginxroot=/usr/local/nginx
start ()
{
chown nobody.root $nginxroot/logs
echo "$nginxroot/nginx-fcgi.pl -l $nginxroot/logs/nginx-fcgi.log -pid $nginxroot/logs/nginx-fcgi.pid -S $nginxroot/logs/nginx-fcgi.sock" >>$nginxroot/nginx_fcgi.sh
chown nobody.nobody $nginxroot/nginx_fcgi.sh
chmod 755 $nginxroot/nginx_fcgi.sh
sudo -u nobody $nginxroot/nginx_fcgi.sh
echo "start nginx-fcgi done"
}
stop ()
{
kill $(cat $nginxroot/logs/nginx-fcgi.pid)
rm $nginxroot/logs/nginx-fcgi.pid 2>/dev/null
rm $nginxroot/logs/nginx-fcgi.sock 2>/dev/null
rm $nginxroot/nginx_fcgi.sh 2>/dev/null
echo "stop nginx-fcgi done"
}
case $1 in
stop)
stop
;;
start)
start
;;
restart)
stop
start
;;
*)
echo $"Usage: perl-cgi {start|stop|restart}"
exit 1
esac
在nginx-fcgi中,變數nginxroot指定Nginx的安裝目錄,nginx-fcgi.sock是產生的檔案sock, nobody為運行nginx_fcgi進程的使用者,這個使用者要和運行Nginx的使用者一致。
配置完指令碼後,將此檔案放到/usr/local/nginx目錄下,接著通過如下方式管理nginx-fcgi進程。
[root@localhost root]#chmod 755 /usr/local/nginx/nginx-fcgi.pl
[root@localhost root]#chmod 755 /usr/local/nginx/nginx-fcgi
[root@localhost root]#/usr/local/nginx/nginx-fcgi start|stop|restart