(Nginx)WordPressの更新失敗からパーミッションの設定を考える

うわあなんだこれは

原因ははっきりしてます。

パーミッションの設定がおかしいことです。

そもそもパーミッションの設定はWordPressをインストールした時から適切に設定されてる(所有者権限なら問題なく実行できる)はずですが、
自分はなぜか所有者権限にならないという問題を抱えていました。

ちなみにその他権限では問題なく動くので、wp-admin以下のファイルを

$ chmod 707 wp-admin/~~

とかやって動かしていました。(よくない)

【参考】

 

しかし、WordPressの更新をしようとした時、画像のようにやばばな状態になったので、
これを機になんとか所有者権限として実行しようとしました。

その時の解決した手順のメモです。
(ググってもApacheばっかりでNginxの解決法が見つからない…)

そもそも何がいけないのか

1. ダウンロードしたWordPressの所有者がrootになっている

DebianでのNginxの実行ユーザー名、グループはwww-data:www-dataです。
(これ知らなかったんですけど、Nginxのデフォルトユーザー名ってディストリビューションによって変わるんですね…)

Nginx起動時のユーザー名の確認方法はnginx.confを見るのが早いでしょうか。
デフォルトだと一番最初の行にuser www-data;という記述があります。

ユーザー名、グループ名を確認したら(以降www-dataで進めていきます)、WordPressのファイル全部の所有者をwww-dataにします。

以下のコマンドを実行します。

$ sudo chown -R www-data:www-data wordpress/

ちゃんと変更されたかは

$ ls -al

で確認できます。

自分の場合これにはすぐ気づいて修正したのですが、それでも更新できずに1ヶ月くらいあれ~~って言ってました。

次のやつが自分の場合の決定的な解決法です。

2. php-fpmのユーザー名がapacheになっている

お前お前お前お前
php-fpmはNginxでPHPを実行可能にするやつみたいです。(よくわかってない)

fpmのwww.confのファイルの中身をみると、
(自分は/etc/php/7.0/fpm/pool.d/www.confにありました。)

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = apache
group = apache

となっていて、ユーザー名とグループ名がapache:apacheになっていました。
(なぜこれでちゃんと動いていたかはわかりません…)

なにはともあれ修正して、

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

php-fpmを再起動します。

$ sudo service php7.0-fpm restart

ついでにNginxも再起動

$ sudo nginx -s reload

そうしてもう一度WordPressの更新をすると…

更新できました!!!

おしまい

nginxの本を貸してもらったのでちゃんと勉強したいと思います。(申し訳程度の日記要素)