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;
}

[Read More…]