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側から用意してあげます
参考↓
まず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の権限においても実行可能となります!
これでなんとかつなぎこみが完了しました。ふー