20
13

More than 5 years have passed since last update.

Nginxとphp-fpmをsock接続するときphp-fpm.sockが消える件

Last updated at Posted at 2019-02-20

Nginxとphp-fpmをポート接続からソケット接続にする場合

/etc/nginx/conf.d/*.conf(設定ファイル名は任意)
-fastcgi_pass  127.0.0.1:9000;
+fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
/etc/php-fpm.d/www.conf
-listen = 127.0.0.1:9000
+listen = /var/run/php-fpm/php-fpm.sock

とするのだけれども

systemctl stop php-fpm

とphp-fpmサービスを停止した場合
/var/run/php-fpm/ディレクトリが丸ごと消失してしまうため
再度起動するとphp-fpm.sockファイルが再生成され
オーナー情報・パーミッション情報を変えていてもリセットされてしまい
サーバー再起動などで動かなくなってしまう問題がある

この問題は以下のように
listen.owner、listen.group、listen.modeを適切に指定する事により

/etc/php-fpm.d/www.conf
-;listen.owner = nobody 
-;listen.group = nobody
-;listen.mode = 0660
+listen.owner = nginx
+listen.group = nginx
+listen.mode = 0660
systemctl stop php-fpm
systemctl start php-fpm

してもphp-fpm.sockファイルがnginx所有のファイルとして正しく生成され動作するようになる

php-fpmの実行ユーザーも変更する場合

/etc/php-fpm.d/www.conf
-user = apache
-group = apache
+user = nginx
+group = nginx

セッションにアクセスできなくなるので権限を変更

chown -R nginx:nginx /var/lib/php/session/
20
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
13