サーバーをOnamaeVPSからAmazon+Kusanagiに完全以降する作業している。今日の月末で解約となる。
いくつかのドメインを移転する必要がある。
WordPressなしのWebサイトをNginxで運用するのに、Perl CGI が動かない。 ***.cgi が動かない。

Apache と違い、Nginxでは一工夫必要だった。
fcgiwrap + spawn-fcgi をCentOS7 にインストールする必要がある。

次のとおりにコマンドすればよい。

# yum --enablerepo=epel -y install spawn-fcgi fcgi-devel
# yum -y groupinstall "Development Tools" 

fcgiwrap インストール
# wget http://github.com/gnosek/fcgiwrap/tarball/master -O fcgiwrap.tar.gz 
# tar zxvf fcgiwrap.tar.gz 
# cd gnosek-fcgiwrap-* 
# autoreconf -i 
# ./configure 
# make 
# make install 

spawn-fcgi の設定
# nano /etc/sysconfig/spawn-fcgi
# 最終行に追記
OPTIONS="-u nginx -g nginx -a 127.0.0.1 -p 9001 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap"

nginx.conf の設定
# nano /etc/nginx/conf.d/www.***.conf
 # server セクション内に次を追記

 location ~ .cgi$ {
 fastcgi_pass 127.0.0.1:9001;
 fastcgi_index index.cgi;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include /etc/nginx/fastcgi_params;
 }

# /etc/rc.d/init.d/nginx restart 
# /etc/rc.d/init.d/spawn-fcgi start 
# chkconfig spawn-fcgi on

CGIが動くかテスト。 env.cgi を作成する。

nano /DocumentRoot/env.cgi
chmod 755 /DocumentRoot/env.cgi
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print <<EndOfHTML;
<html><head><title>Perl Environment Variables</title></head>
<body>
<h1>Perl Environment Variables</h1>
EndOfHTML

foreach $key (sort(keys %ENV)) {
    print "$key = $ENV{$key}<br>\n";
}
print "</body></html>";

ブラウザでこのファイルを開いて、うまく表示されれば成功。

動くものと動かない物があった。
動かないCGIは、

502 Bad Gateway

と表示される。
これはPerlのパスが間違っていることに起因することが判明した。

#!/usr/local/bin/perl

新サーバーには、ここにperl が存在しなかった。リンクを作る。

ln -s /usr/bin/perl /usr/local/bin/perl

これで完璧。

次の記事

ABOUTこの記事を書いた人

世界を旅して80余国。徒然書苦氣去。
Author

コメント

Loading Facebook Comments ...
Tag Cloud