FreeBSDにnginxとfastCGIを入れる その一
ちょっとWordPressをいじってみたかったので、おうちに環境を作ろうと思い立ったのでした。
で、ついでなので、FreeBSDにnginxとfastCGIでphp実行環境を作りましたので、そのメモです。
結論
portsで普通に入るので、なんにも苦労するところは無かったです。php52をFASTCGIのチェック付きでmakeすることだけ気をつければさくっとできます。
このへんを参考にしました。spawn-fcgiをportsで入れたので、これよりも簡単に済みました。
http://www.cyberciti.biz/faq/freebsd-configure-nginx-php-fastcgi-server/
手順
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