サーバーを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
これで完璧。