いつもはWordPressやEC-CUBEなど、PHPのアプリケーションを動かすことが多いのですが、Movable Typeをインストールする機会があり、nginxでperl/CGIを動かす設定を追加しました。環境は CentOS 6.4 x86_64、nginxはnginxリポジトリから yum でインストールした nginx-1.4.1-1.el6.ngx.x86_64 です。参考にしたサイトはこちらになります。
まずは yum で perl-CGI と perl-FCGI をインストールします。前者はbaseまたはupdateリポジトリにあり、後者はepelリポジトリにあります。
[ (っ´∀`)っ@友の会 ~]$ sudo yum install perl-CGI [ (っ´∀`)っ@友の会 ~]$ sudo yum --enablerepo=epel install perl-FCGI
次に、CGIを動かしたいバーチャルホストのconfigに以下を追記します。
location ~ .pl$ { gzip off; root /home/vhosts/MT000/html; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:8999; fastcgi_index index.pl; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ .cgi$ { gzip off; root /home/vhosts/MT000/html; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:8999; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
TCP 8999番ポートがiptablesで塞がれている場合は穴をあけておきましょう。
次に FastCGIラッパー /usr/bin/fastcgi-wrapper.pl を作成します。 私の環境では https://library.linode.com/web-servers/nginx/perl-fastcgi/centos-5 に書いてあるそのまま○パクりでいけました。そして FastCGI のラッパーをdaemonとして起動するinitスクリプト /etc/rc.d/init.d/perl-fastcgi も書いてあげます。これもサンプル通りで大丈夫でしょう。それぞれのスクリプトには実行権をつけてあげて、perl-fastcgi はchkconfig でスタートアップに登録してあげます。そして perl-fastcgi を起動後、netstatで8999番ポートがLISTENしているか確認してみましょう。下記のようになっていればOKです。
[ (っ´∀`)っ@友の会 ~]$ netstat -lnt | egrep '(^Active|^Proto|8999)' Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:8999 0.0.0.0:* LISTEN
あとはMovable Typeをインストールし、こんな風に表示されればOKです。
ね、簡単でしょう?
[amazonjs asin="4873115671" locale="JP" title="初めてのPerl 第6版"]