totorajの開発日記

僕がなんかメモる

UbuntuのnginxでPHP7.0を動かしたときのメモ

色々手こずりました(´・ω・`)

参考にしたページ

環境

お友達から借りているVPSのサーバーです。

(使うバージョンがこれで正しいのかはよくわかりません。)

インストール

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.confusergroupをさっきつくった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

よくわからずusergroupnginxって設定したけどよくよく考えるとそんなユーザーはサーバーに存在しませんでした。 ログで思いっきり怒られていました。

502が帰ってくる

phpが動いていないかnginxのサーバー設定のfastcgi_passを間違えているかのどちらか。

サービスが動いているかとnginxのerror.logを確認する。

404が帰ってくる

nginxのサーバー設定のfastcgi_paramを間違えている。

おわりに

php動かすだけでこんなに苦労するとは思いませんでした。

とりあえず動いたけどきっと危ない使い方をしているのだろうなぁっと思います。

インストールとか設定よりソースコードを書くことに時間をかけたいと思いました!