さくらのVPS-WordPressの自動更新時のエラー原因-
さくらのVPSを使っていると、WordPressの自動アップデートやプラグインの自動更新に失敗します。その記録になります。
※さくら以外のVPSでも設定をしていると同じ現象になります
失敗例1config.phpに追記-
WordPress自動更新などと検索するとページ上位にでてくる以下の設定
define(‘FTP_BASE’, ‘[worldpressのdirectoryパス]/’);
define(‘FTP_CONTENT_DIR’, ‘[worldpressのdirectoryパス]/wordpress/wp-content/’);
define(‘FTP_PLUGIN_DIR’, ‘[worldpressのdirectoryパス]/wp-content/plugins/’);
できません。ちなみにphpをCGIモードにしてもできませんでした。この辺は僕の設定が悪いのかと思います。成功している人も実際に多いので絶対にできないという事でもないです。
失敗例2-IPアドレスで接続-
ホスト名をIPアドレスにしたら成功するというとこがあったので試してみました。当然失敗しました。その後も色々試しましたが失敗しました。
原因:FTPの設定
そもそも、さくらのVPSでこの設定はなりました。他のサーバーでは実はなっていません。同じような人がいるので見ても全員共用サーバーです。僕が使っているのはVPSなのでちょっと違うかな勝手に思い込みました。調べてみてわかったのは、FTPサーバーのchrootの問題でした。
デフォルトでchrootが有効だった
chrootは、ユーザーのホームディレクトリより上に移動できません。今回僕の環境は以下の様になっております。
- ユーザーのホームディレクトリは/home/ユーザー名/
- サイトのドキュメントルートは/var/www/ドメイン名/htdocs/
ホームディレクトリからシンボリックリンクを貼っている形になります。
SFTPとかでは移動できますが、FTPではchrootが有効のためホームディレクトリから上と別のディレクトリへの移動できませんでした。その結果自動更新ができないだけでした。
解決方法
chrootを無効にしてもいいのですが、それをすると他のユーザーでも上位にいけてしまうので有効にしつつ、特定ユーザーだけを変更しました。 /etc/vsftpd/vsftpd.conf [/html] 既にchrootは有効になっているため、以下を追記
chroot_list_enable=YES # chrootの設定を外すユーザを指定できるようにする。
user_config_dir=/etc/vsftpd/user_conf #接続先を制限したいユーザーリストを入れる場所。後で作ります
以下のコマンドでディレクトリを作成します。
mkdir /etc/vsftpd/user_conf
以下のコマンドでファイル作成
vi /etc/vsftpd/user_conf/ユーザー名をここに入力
中に設定を記述します
local_root=/var/www/ドメイン名/htdocs/
FTPを再起動
/etc/init.d/vsftpd restart
備考
以上で設定は終了です。管理画面で普通に更新してください。できるようになります。chrootを無効にすればいいのでは?と思うかもしれませんがそれでもつながるようになりますがどのユーザーも上位ディレクトリに移動できてしまうのでお勧めはいたしません。
