FreeBSDにnginxとfastCGIを入れる その一

ちょっとWordPressをいじってみたかったので、おうちに環境を作ろうと思い立ったのでした。

で、ついでなので、FreeBSDにnginxとfastCGIphp実行環境を作りましたので、そのメモです。

結論

portsで普通に入るので、なんにも苦労するところは無かったです。php52をFASTCGIのチェック付きでmakeすることだけ気をつければさくっとできます。

このへんを参考にしました。spawn-fcgiportsで入れたので、これよりも簡単に済みました。
http://www.cyberciti.biz/faq/freebsd-configure-nginx-php-fastcgi-server/

手順

環境作成

まず、jailで環境を構築してます。このへんは割愛。

ホスト名は僕の好きな武器のカッツバルゲル(katzbalger)です。もう一台のjailはグラディウス(gladius)になってます。

portsでインストール

portsでphp52、php52-extension、nginx、spawn-fcgiをそれぞれインストールします。php52のインストール時にFASTCGIのオプションをつけます。

katzbalger# make config-recursive
katzbalger# make
katzbalger# make install clean

php5の方はバージョンが5.3.3になっていてこっちにしようと思ったのですが、こちらはFASTCGIオプションが無かったので、こちらにしています。

php52-extensionはmysqlとgdを追加してます。

設定

起動するのはspawn-fcgiとnginxになりますので、/etc/rc.confにこれらが起動するように設定します。
何を設定するかは起動スクリプトを見るのが早いです。/usr/local/etc/rc.d/spawn-fcgiを見ると、

: ${spawn_fcgi_enable="NO"}

という記述があります。FreeBSDはだいたいこの〇〇_enableという変数にYESを指定してあげると起動するようになりますので、rc.confにはspawn_fcgi_enable="YES"と記述します。nginxも同様にします。

/etc/rc.conf

#以下二行を追加
spawn_fcgi_enable=YES

nginx_enable=YES

ちなみに、起動スクリプトを見ると他の設定値をどうすれば変えられるか分かりますので、一度見る癖をつけることをおすすめします。例えば、spawn_fcgi_bindportを変えるとLISTENするポート番号が変えられるだろうということが分かります。


あとは、nginxの設定ですが、すでにfastCGI用の設定がサンプルにあるので、これのコメントアウトを解除して、パスを設定すると動いちゃいます。jailなので127.0.0.1ではなくjailに設定したIPをLISTENするので、IPも変えました。

/usr/local/etc/nginx/nginx.conf

###FastCGIに関係するところのコメントを解除。fastcgi_paramのパスをあわせて、fastcgi_passのIPを変更
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        location ~ \.php$ {
            root           html;
            fastcgi_pass   192.168.XX.YYY:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/www/nginx$fastcgi_script_name;
            include        fastcgi_params;
        }

また、http://〇〇/wordpress/でindex.phpにアクセスしたいので、それも設定します。

/usr/local/etc/nginx/nginx.conf

###indexにindex.php追加
        location / {
            root   /usr/local/www/nginx;
            #index  index.html index.htm;
            index  index.php index.html index.htm;
        }

以上で、設定は終わりです。

起動

起動スクリプトを使って、普通に起動します。

katzbalger# /usr/local/etc/rc.d/spawn-fcgi start
katzbalger# /usr/local/etc/rc.d/nginx start
動作確認

/usr/local/www/nginx/index.php
というファイルを作って、phpinfoを確認します。

/usr/local/www/nginx/index.php

<?php
phpinfo();
?>

無事phpinfoの結果が表示されたので、完了です。

次回予告

こんな感じで、比較的簡単にnginx+fastCGIの設定ができましたので、次回WordPressを置いて動作確認と、nginxの設定等をもうちょっとちゃんと練ってみようかなと思います。