色々手こずりました(´・ω・`)
参考にしたページ
- Ubuntu14.04 に nginx と PHP7.0 と MySQL5.7 をインストールする - 雨天決行 Web 開発
- nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する - Qiita
環境
お友達から借りている VPS のサーバーです。
- Ubuntu 16.04.1 LTS
- nginx version: nginx/1.10.0 (Ubuntu)
- PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )
(使うバージョンがこれで正しいのかはよくわかりません。)
インストール
nginx は既にインストールしていたので php7.0-fpm だけ~。
sudo apt-get install php7.0-fpm
設定
ユーザーを追加
ホームディレクトリとかいらないので適当に・・・。
useradd nginx
これをやっていなくて 20 分くらい動かなくて泣いていました。
(パーミッション設定が面倒くさかったのでなにもしていないです。たぶんダメだと思います。)
php7.0-fpm の設定
設定といってもすこし書き換えただけ
/etc/php/7.0/fpm/pool.d/www.conf
のuser
とgroup
をさっきつくったnginx
に書き換えました。
※nginx 側で使うのでlisten
の設定値をメモっておくと楽です。/run/php/php7.0-fpm.sock
とかになっていました。
・・・
~~~
user = nginx
group = nginx
~~~
・・・
nginx の設定
僕は server の設定は別ファイルに書いて include しているので server 部分だけいじって終わり。
server {
・・・
~~~
# ここからPHPの設定
location ~ [^/]\.php(/|$) {
# さっきメモしたlistenの値の先頭にunix:をつけたやつ
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
# phpに渡すパラメータ($fastcgi_script_nameの前はルートディレクトリのパス)
fastcgi_param SCRIPT_FILENAME /home/totoraj930/www$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
php7.0-fpm と nginx をリスタート
sudo service php7.0-fpm restart
sudo service nginx restart
設定がうまくいっていないとここでエラーが出ます。
つまずいたところとか
php に設定した user
よくわからずuser
とgroup
にnginx
って設定したけどよくよく考えるとそんなユーザーはサーバーに存在しませんでした。
ログで思いっきり怒られていました。
502 が帰ってくる
php が動いていないか nginx のサーバー設定のfastcgi_pass
を間違えているかのどちらか。
サービスが動いているかと nginx の error.log を確認する。
404 が帰ってくる
nginx のサーバー設定のfastcgi_param
を間違えている。
おわりに
php 動かすだけでこんなに苦労するとは思いませんでした。
とりあえず動いたけどきっと危ない使い方をしているのだろうなぁっと思います。
インストールとか設定よりソースコードを書くことに時間をかけたいと思いました!