こんにちは、マダラです。
前回raspberry piにwordpressを設定する方法の備忘録を投稿しましたが、その後、
ワードプレス管理画面の表示や記事投稿などはできるもののプラグイン追加や、FTP接続後のファイルの送受信ができないという壁にぶつかりました。
どうもapacheがapache以外のユーザーを弾いてファイルの送受信を防いでるようです。
これを改善するためには権限を付与するしかなさそうです、、
apacheの権限周りの改善
下記のサイトがめちゃくちゃ役に立ちました!
https://qiita.com/kosukemaeda/items/faf8addfdd1190712280
下記のコマンドで権限等の確認を行えます。
ディレクトリはwordpressが入っているディレクトリですね!
ls -la /var/www
また、Apacheのユーザーと所属グループはwww-dataでした。ここが私が一番ハマったポイントでしたね。Apacheのユーザーとグループは、apache2.conf
ファイルとenvvars
ファイルで定義されています。
ほとんどのサイトでapache2.confやhttps.confといったファイルの修正や確認を促していますが、私の環境ではenvvarsファイルだったのでいくら探しても、apache2.confなどは存在しなかったのです、、、。
下記のコマンドでウェブ開発用ユーザーhogehogeをグループwww-data(Apacheのグループ)に追加します。
gpasswd -a hogehoge www-data
DocumentRoot
下のすべてのファイルとディレクトリの所有者と所有グループをwww-data(Apache)にします。
chown -R www-data:www-data /var/www/html
DocumentRoot
下のディレクトリのパーミッションを770、ファイルのパーミッションを660にして、その他のユーザーがアクセス出来ないようにします。
find /var/www/html -type d -exec chmod 770 {} \;
find /var/www/html -type f -exec chmod 660 {} \;
再び下記のコマンドでパーミッションを確認すると変更されているのがわかるかと思います。
ls -la /var/www/html
下記のコマンドでDocumentRoot /var/www/html
下に作成されるファイルの所有グループをwww-dataに固定してしまいましょう。ディレクトリにSGID(Set Group ID)を設定した場合は、その下に作成したファイル・ディレクトリが、SGIDが設定されているディレクトリの所有グループになることを利用します。
chmod -R 2770 /var/www/html
まとめ
とまぁここまで記事でまとめたものの私自身あまりよく理解していません。
詳しく知りたい方はリンク先のサイトで見てみてください!
なんにせよ、上記のコマンド群を実行したところ、Raspberry pi上に実装したwordpressの権限が変更されてFTP接続やプラグインのダウンロード・削除など行えるようになりました!
ありがたやありがたや。
なお、プラグインをダウンロードするときにFTP接続情報を求められる場合があります。
この時は、define('MS_METHOD');みたいなやつを特定のファイルに記述すると治るんですが忘れてので自分で調べてください。