FastCGI
Ubuntu14.04 LTS でNginx FasCGI Perl
古いPerlのサンプルを参考に復習したくなって、やむなく自分の開発環境にFastCGI環境をセットアップ
最初、コードが間違っているのに気づかず3日ほどあれこれ調べまわっても解決せず時間を浪費した。
502 bad gatewayのエラーでて、ログを見ると Cannot execute script って出てて、調べても分からんし、権限は間違ってるはず無いしでずっとつまずいてた。
結局、
sudo apt-get install fcgiwrap
※もしかしたら libgcgi-perlも必要?でもなんか下記のfastcgi-wrapper.plを使う場合に必要なやつかも
/etc/init.d/fcgiwrap のFCGI_USERあたりを動かしたいユーザーやグループに変更。※お好みで
sudo sysv-rc-conf on fcgiwrap
sudo service fcgiwrap start
でFastCGIが動くようになる。
最初、fastcgi-wrapper.plを使う場合を参考にしてたけど、
参考:http://ubuntu.flowconsult.at/linux/nginx-perl-fastcgi-installation-ubuntu-linux-14-04/
これだとなんかPerlのみっぽかったしTCPだったので、Unixソケットで通信にしたかったのとpythonやRubyでも動かしたかったのでfcgiwrapを使うようにした。
Nginxの設定はlocationディレクティブだけ抜粋すると
#拡張子が.plで終わるリクエストの場合
location ~ \.pl$ {
try_files $uri = 404;
gzip off;
#インストールしたfcgiwrapのソケットファイルのパス
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#/etc/nginx/fastcgi_paramsの内容を読み込む。
include fastcgi_params;
}
で