php-fpmを設定する方法
php-fpmとは、phpとnginxを仲介するアプリケーションサーバー
ドキュメントルートの設定
デフォルトのドキュメントルートを
/home/user1/public_htmlのようなディレクトリに設定しておく
動作確認用のファイルを作成
vi /home/user1/public_html/info.php
info.phpというファイルを新規作成する
info.phpの中を上記のように設定
ブラウザで表示1
ブラウザで
http://ipアドレス/info.php
へアクセスする
nginxでfastcgi_passなどの設定がされていないとphpinfo()の情報は表示されず、
info.phpというファイルがダウンロードされてしまう
nginxでfastcgi_passを設定する
nginxでfastcgi_passの設定をすると
ブラウザで.phpファイルを開いたときにダウンロードは発生しなくなる
しかし、php-fpm側の設定が不十分だと
File not found.
と表示される
php-fpmのwww.confを設定する
www.confのパス
vi /etc/php-fpm.d/www.conf
/etc/php-fpm.dというディレクトリの
www.confというファイルにphp-fpmの設定が書かれている
php-fpmの実行ユーザーを設定する
デフォルトでは、php-fpmの実行ユーザーはapache:apacheとなっている
これをnginx:nginx(nginxの実行ユーザー)に変更する
cd /etc/php-fpm.d sed -i -e "s/user = apache/user = nginx/" www.conf sed -i -e "s/group = apache/group = nginx/" www.conf sed -i -e "s/;listen.owner = nobody/listen.owner = nginx/" www.conf sed -i -e "s/;listen.group = nobody/listen.group = nginx/" www.conf
- www.conf抜粋(変更前)
user = apache group = apache ;listen.owner = nobody ;listen.group = nobody
- www.conf抜粋(変更後)
user = nginx group = nginx listen.owner = nginx listen.group = nginx
listen.owner = nginx
listen.group = nginxのように設定すると、
php-fpm.sockの所有者がnginx:nginxになる
listen.ownerとlisten.groupをコメントアウトすると、
php-fpm.sockの所有者がroot:rootになる
php-fpm.sockについて、詳細は後述
php-fpmをunixソケットで動かす方法
php-fpmを
127.0.0.1:9000ではなく、
/var/run/php-fpm/php-fpm.sockで動くように設定する方法
KUSANAGIの設定では
php-fpm.sockを使わずに
127.0.0.1:9000を使用していた
php-fpm.sockを使ったほうが処理が速くなるのかと思っていたけど関係ないのかもしれない
WordPressがよくフリーズしてMySQLがダウンしていた頃
php-fpm.sockのchild processが大量に起動してメモリーを食いつくしスワップが大量に発生していた
メモリー2GBの低スペック環境ではphp-fpm.sockはむしろ害悪かも?
php-fpmのwww.confを設定
cd /etc/php-fpm.d sed -i -e "s@listen = 127.0.0.1:9000@listen = /var/run/php-fpm/php-fpm.sock@" www.conf
/etc/php-fpm.dディレクトリにある
www.confというファイルで
listen = 127.0.0.1:9000の部分を
listen = /var/run/php-fpm/php-fpm.sockに書き換える
nginxの.confを設定
vi /etc/nginx/conf.d/default.conf
default.confを開く
- default.conf抜粋(変更前)
location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; }
- default.conf抜粋(変更後)
location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; }
fastcgi_pass 127.0.0.1:9000;の部分をコメントアウト
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;を有効にする
php-fpmとnginxを再起動
systemctl restart php-fpm systemctl restart nginx
php-fpm.sockを確認
/etc/php-fpm.d/www.confというファイルで
listen = /var/run/php-fpm/php-fpm.sockを設定することで、
/var/run/php-fpmディレクトリに
php-fpm.sockというファイルが作成される
php-fpm.sockは、php-fpmのサービスが起動中のみ存在するファイル
ブラウザで表示2
ブラウザで
http://ipアドレス/info.php
へアクセスする
PHPのバージョンや
$_SERVER['DOCUMENT_ROOT']の値など、
PHPに関する各種パラメーターが画面に表示される
これが無事に表示されれば、
PHP・PHP-FPM・NGINXの設定に成功している
info.phpを外部に公開することはセキュリティ的に好ましくない
動作確認が取れたら、php.infoは削除する