当ブログのおすすめ記事はこちら!
  • 【学生でもできる】エンジニアとして海外ノマドワークをする方法と実際に感じたこと

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

SHARE

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



こんにちはTakumi(@ynwa_ynwa_0826)です。
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側から用意してあげます

参考↓

 

まず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)

 

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

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



スポンサードリンク


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です