nginxとphp-fpmの通信をUnixドメインソケット(Unix Domain Sockets)で行なう

スポンサーリンク

はじめに

nginxとphp-fpmの通信をTCP SoketsからUnix domain Socketsへ変更するためのまとめです。

注意事項

  • コマンドはすべてroot権限での操作です。

環境

VPS さくらVPS 1G SSD
OS CentOS 7.3
Webサーバ nginx/1.10.2
その他 PHP 7.1.0 (fpm-fcgi)

Unixドメインソケット(Unix Domain Sockets)

Unixドメインソケットは同一のホスト上でしか動作しませんがTCPソケットよりもパフォーマンスに優れています。その為、nginxとphp-fpmの通信をUnixドメインソケットに変更することで少しだけ速くなります。

1.php-fpmの設定

php-fpmの設定ファイルを開きFastCGIのリクエストを受ける方法をTCPソケットからUnixドメインソケットへ変更します。

# vi /etc/php-fpm.d/wwww.conf

- listen = 127.0.0.1:9000
+ #listen = 127.0.0.1:9000
+ listen = /var/run/php-fpm/php-fpm.sock

保存しphp-fpmを再起動すると指定のフォルダにphp-fpm.sockが作成されます。

2.nginxの設定

nginxの設定ファイルを開きfastcgi_passをTCPソケットからUnixドメインソケットへ変更します。

# vi /etc/nginx/nginx.conf

- fastcgi_pass  127.0.0.1:9000;
+ #fastcgi_pass  127.0.0.1:9000;
+ fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;

nginxとphp-fpmを再起動します。

# systemctl restart php-fpm
# systemctl restart nginx

ブラウザからアクセスしてphpファイルが正常に表示されれば成功です。

画面が表示されない場合

nginxのエラーログを確認します。

# cat /var/log/nginx/error.log

以下のようなメッセージが表示されている場合はphp-fpm.sockファイルへの権限がありません。

(略) *1 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied) while connecting to upstream, (略)

php-fpmの設定を変更する

php-fpmの設定を変更し所有者/グループをnginx、パーミンションを660へ変更します。

# vi /etc/php-fpm.d/wwww.conf

- ;listen.owner = nobody
- ;listen.group = nobody
- ;listen.mode = 0660
+ listen.owner = nginx
+ listen.group = nginx
+ listen.mode = 0660

php-fpmを再起動し確認します。

# systemctl restart php-fpm
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする