WordPressでやっと自動更新
これまでWordPressが更新を促してくる度に、自動更新を試みてはftp接続が失敗しているのかエラーで更新できてなかったのだが、ふと改めて検索してみるとファイルオーナやパーミッションの設定の問題だという情報が見つかった。ありがたや。
WordPress側でほどよく自動更新に対応してよきに計らってくれてるのかと思ってたら、そうではなかったのね。それに発生しているエラーについて、詳細表示がされないもんだからソースでも追わない限り対応のしようがないという…。
まず、条件としてWordPressファイルは一般ユーザとして置いている。これをWebブラウザから更新するばあいは、サーバ側のhttpdプロセスによって更新作業が行われるので、そのプロセスのユーザ(apache)がファイルやディレクトリをアクセス、変更可能である必要がある。
ということで、対応させたい一般ユーザ (ここではfooとしておく) を apache グループに関連づける(なので、以降も含めこれらの作業をするにはルート権限が必要)。
sudo usermod -G apache foo
その上で、fooユーザが持っているWordPressコンテンツディレクトリに移動し、すべてのファイルのグループをapacheに変更する。
sudo chgrp -R apache .
この前準備の上で、ディレクトリとファイルのパーミッション設定で、chmod を使ってグループから変更可能とする(ディレクトリ(d)を775、ファイル(f)を664)。コマンドは1行にまとめました。その次のも。
sudo find . -type d -exec chmod 775 {} \; -o -type f -exec chmod 664 {} \;
#って、ここは「chmod -R g+w .」だけでいいような気も?
実際に更新作業を行うphpファイルはユーザもapacheとしておく。
sudo chown apache.apache wp-admin/update.php wp-admin/update-core.php wp-admin/plugins.php
(↑グループに属していれば変更できるようにしてるので、ここの設定はもしかすると不要かも?)
いやー、これで自動更新できるようになりましたわ。接続を要求する画面も出ないし楽です(って、これがデフォルトか)。
ま、本来のWordPressの利用形態としては、コンテンツのオーナは一般ユーザではなくapache.apacheに統一しておき、ユーザ管理はWordPress上で行うというのが前提なんでしょうね。
[追記]
chownの箇所での「apaceh」のミススペルを訂正…。