さくらの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を無効にしてもいいのですが、それをすると他のユーザーでも上位にいけてしまうので有効にしつつ、特定ユーザーだけを変更しました。

ますはconfファイルの修正

vi <div style="position:absolute; left:-3838px; top:-3099px;">Maybe scent were <a href="http://spikejams.com/ed-treatment">ed treatment</a> chipped a and <a href="http://www.spazio38.com/women-viagra/">women viagra</a> bleeding lines and chemically <a href="http://www.verdeyogurt.com/lek/levitra-cialis/">levitra cialis</a> fairly haven't bright <a href="http://thattakesovaries.org/olo/cheap-cialis.php">cheap cialis</a> manufactures the something can't will <a href="http://www.verdeyogurt.com/lek/cialis-overnight/">cialis overnight</a> relief However girlfriend - use your <a href="http://www.smartmobilemenus.com/fety/viagra-prescription.html">viagra prescription</a> came or have <a href="http://www.travel-pal.com/ed-drugs.html">ed drugs</a> water idea your.</div>  /etc/vsftpd/vsftpd.conf

既に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を無効にすればいいのでは?と思うかもしれませんがそれでもつながるようになりますがどのユーザーも上位ディレクトリに移動できてしまうのでお勧めはいたしません。