php-buildでphp-fpmを試してみた
phpenv + php-build を使って 5.3 と 5.4 を共存させつつ php-fpm を使うを参考に、php-buildでphp-fpmを生成するようにして試してみた。
$ cd .php-build/share/php-build/definitions/ $ cp 5.4.4 5.4.4-fpm $ vi 5.4.4-fpm
中身はこんな感じで。configure_optionは--enable-fpm以外は適宜追加。
configure_option "--enable-fpm" install_package "http://www.php.net/distributions/php-5.4.4.tar.bz2" install_pyrus install_xdebug "2.2.0"
この設定を使ってbuild。
$ cd $ php-build 5.4.4-fpm ~/.phpenv/versions/5.4.4-fpm
次に、php-fpmの設定ファイルを作成。php-fpm.conf.defaultを元に作成する。
$ cd .phpenv/versions/5.4.4-fpm/etc $ cp php-fpm.conf.default php-fpm.conf # ポート番号など設定を変更するなら修正 $ vi php-fpm.conf
設定ができたら、php-fpmを起動してみる。
$ cd $ .phpenv/versions/5.4.4-fpm/sbin/php-fpm [01-Jul-2012 00:28:32] WARNING: [pool www] 'user' directive is ignored when FPM is not running as root [01-Jul-2012 00:28:32] WARNING: [pool www] 'group' directive is ignored when FPM is not running as root [01-Jul-2012 00:28:32] NOTICE: fpm is running, pid 27385 [01-Jul-2012 00:28:32] NOTICE: ready to handle connections
なんか警告が出るけど気にしない。次に、nginxに設定を追加して再起動。
$ cd /etc/nginx/sites-available/ $ sudo vi phpsrv $ cd ../sites-enabled/ $ sudo ln -s ../sites-available/phpsrv phpsrv $ sudo /etc/init.d/nginx restart
ファイルの中身はこんな感じ。php-fpmのポートを9001に設定したので9001で。
upstream php54 { server 127.0.0.1:9001; } server { listen 80; server_name phpsrv; index index.php; root /home/masaki/projects/phpsrv; location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } } location ~ \.php.*$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass php54; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; } }
これでrootに指定した場所に試しにindex.phpを設置してみると、無事動いた。apacheモジュールとして動作させる時と違って、これなら複数バージョンの共存なんかも無理なく出来そうで、素晴らしい。