PHP-FPMの導入とnginxとの連携とか
CentOS6(6.4)上でPHP-FPMを導入してnginxと連携した時のお話。
なお、nginxの導入はコチラを参考にして下さい。
なお、さくらのVPSではEPELリポジトリは標準で追加されている状態の為、その部分の手順は省略。
(1) PHP-FPMのインストール
PHP-FPMの導入はyumのみOK。
yum install php-fpm
Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.kddilabs.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package php-fpm.x86_64 0:5.3.3-23.el6_4 will be installed --> Processing Dependency: php-common(x86-64) = 5.3.3-23.el6_4 for package: php-fpm-5.3.3-23.el6_4.x86_64 --> Running transaction check ---> Package php-common.x86_64 0:5.3.3-23.el6_4 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: php-fpm x86_64 5.3.3-23.el6_4 updates 1.1 M Installing for dependencies: php-common x86_64 5.3.3-23.el6_4 updates 524 k Transaction Summary ================================================================================ Install 2 Package(s) Total download size: 1.7 M Installed size: 6.1 M Is this ok [y/N]: y Downloading Packages: (1/2): php-common-5.3.3-23.el6_4.x86_64.rpm | 524 kB 00:00 (2/2): php-fpm-5.3.3-23.el6_4.x86_64.rpm | 1.1 MB 00:00 -------------------------------------------------------------------------------- Total 3.0 MB/s | 1.7 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : php-common-5.3.3-23.el6_4.x86_64 1/2 Installing : php-fpm-5.3.3-23.el6_4.x86_64 2/2 Verifying : php-common-5.3.3-23.el6_4.x86_64 1/2 Verifying : php-fpm-5.3.3-23.el6_4.x86_64 2/2 Installed: php-fpm.x86_64 0:5.3.3-23.el6_4 Dependency Installed: php-common.x86_64 0:5.3.3-23.el6_4 Complete!
(2) PHP-FPMの設定
基本的な動作のみを想定する為、最小限の変更のみ行う。
実行ユーザ及びグループをnginx側と合わせるよう設定を変更。
vi /etc/php-fpm.d/www.conf
具体的な変更箇所は以下の部分。
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache Choosed to be able to access some dir as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx
「user」「group」の両方に「apache」が指定されているので「nginx」に変更した。
(3) 自動起動の設定
サーバ起動時に自動でPHP-FPMが起動するよう設定。
chkconfig php-fpm on
(4) PHP-FPMの起動
導入直後はPHP-FPMが起動していない為、手動で起動。
service php-fpm start
(5) nginxとの連携
PHP-FPMは標準では9000ポートを待ち受けとして利用。
取り急ぎ標準ポートのままでPHPを処理する場合nginxがPHP-FPMを呼び出すようにnginx側の設定を変更する。
nginxをyumで導入した場合、サービスに関する設定は「/etc/nginx/conf.d/default.conf」を修正して行う。
vi /etc/nginx/conf.d/default.conf
該当ファイルの28行目から36行目付近にコメントアウトされた部分がサンプルとなるので、以下のように修正して利用する。
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root $document_root; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
30行目から36行目のコメントを解除。
31行目のドキュメントルートには「$document_root」を指定。
34行目の「fastcgi_param」に関する設定を「/scripts$fastcgi_script_name」から「$document_root$fastcgi_script_name」に変更。
以上で設定変更は完了。
なお、設定内容の変更を行った為、設定ファイルのリロードを実施。
service nginx reload
(6) 動作確認
実際にPHPが実行されるか確認を行う。
確認スクリプトは以下のものを使用。
<?php phpinfo();
ブラウザからアクセスし「phpinfo」の内容が正常に表示され「Server API」の項目が「FPM/FastCGI」となっていればOK。