LoginSignup
9
9

More than 3 years have passed since last update.

【nginx】php-fpmのソケットの設定をしたときのハマったメモ

Posted at

nginxの設定をしてwebサーバを立ち上げようとしたけど、php-fpmとの組み合わせでエラーが何個か出たのでその紹介です。

まず、confファイルの設定を行い、nginx restartを行いました。まあこれで行けるだろうと思いブラウザからアクセスしてみたところ

nginxの設定をしてwebサーバを立ち上げようとしたけど、php-fpmとの組み合わせでエラーが何個か出たのでその紹介です。

まず、confファイルの設定を行い、nginx restartを行いました。まあこれで行けるだろうと思いブラウザからアクセスしてみたところ

502 Bad Gateway

はい。ということでログを確認してみました。

/var/log/nginx/error.log

にnginxのログはあります。

なかをみると

connect() to unix:/var/run/php-fpm.sock failed (2: No such file or directory) while connecting to upstream

php-fpmのソケットが存在しないよーって言っています。ソケットとは「出入り口」といった意味なので出入り口が用意されていないからその準備をしなさいよーっていう意味になります。

よって、nginx側とphp-fpm側から用意してあげます

参考↓

nginx + php-fpm socketで接続する

まずphp-fpm側から

/etc/php-fpm.d/www.conf

このファイルをvimで開き、listenの部分を変更してあげましょう。

listen = /var/run/php-fpm/php-fpm.sock

これでphp.fpmのソケットが準備されます。

またlistenのownerとgroupを変更しておきましょう。このソケットにアクセスするユーザはnginxとなるので、、

listen.owner = nginx
listen.group = nginx

次にnginx側のconfの設定です。
confファイルの中で


location ~ \.(php|Do)$ {
     fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
     fastcgi_param PATH_INFO $fastcgi_path_info;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
 }

phpファイルへのルーティングを行っているlocationでfastcgi_passを行うところの指定をしているかと思います。
そこで

fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

としてあげることで、指定完了です!

しかしさらにエラーが、、、

unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied)

Nginx で「502 Bad Gateway」とか、なんだかエラーログがでるよって時

php-fpm.sockの所有者がrootになっているのでこれをnginxにしてあげると、660の権限においても実行可能となります!

これでなんとかつなぎこみが完了しました。ふー

9
9
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
9
9