WordPressの自動アップデート機能をSSHで使えるようにした


ちょっと調べてみて、どうもこの情報が少ないように思えたので記事にしてみる。
WordPressには、自動アップデート機能というものがあって、WordPressが入っているサーバのFTPやSSH(SFTP)を使ってWordPress自体やインストールしてあるプラグインをアップデートする機能が備わっている。

標準では今さらなFTPで自動アップデートをするみたいですが、僕はFTPサーバなんて自分のマシンで立ち上げていないので、SSHを使って自動アップデートをしたいと思います。

僕は、WordPressをインストールしたときに、適当にアーカイブを展開してインストールしたので、wp-config.php をちゃんといじってなかった。また、サーバ側に必要最低限のモジュールしか追加していなかったのだ。 これまで、毎回プラグインや本体のアップデートの通知が出る度に、sshでサーバにログインして手動でアップデートしていたが、数日に1回アップデートの通知が出たりしたので面倒になってしまった。

で、自動アップデート機能を使えるようにして、ブラウザでちょいちょいとクリックするだけでアップデートできるようにしたいと思い、今回ちょっとマジメにチャレンジしてみた。

僕の環境は、少数派になりつつある、FreeBSDです。なので、Linuxの方は適宜読み替えをして貰わなければいけません。
とはいえ、OSの違いって、パッケージ管理システムの違いくらいで、上で動いているアプリケーションは同じなので、問題無いと思います。

やることは簡単、僕の環境で足りていなかったのは、libssh2とSSHを使うPECLモジュールです。 最近、めんどくさがりでportsを使うようになったので、portsでインストールしました。

# cd /usr/ports/security/libssh2/
# make
# make install
# cd /usr/ports/security/pecl-ssh2/
# make
# make install
# /usr/local/etc/rc.d/apache22 stop
# /usr/local/etc/rc.d/apache22 start

以上です。 一応、

extension=ssh2.so

という行が /usr/local/etc/php/extensions.ini に書き加えられているかは確認しました。
WordPressの管理画面の自動アップデートを実行する画面に、FTPだけでなくSSHというボタンが追加されているのを確認できればOKかと思います。

いざ実行してみると、認証に失敗しました。たぶん Password Authentication がFreeBSDでは標準で許可されていないからだろうと思い、

/etc/ssh/sshd_config
PasswordAuthentication yes

と書き換えてやって、

# /etc/rc.d/sshd restart

sshdを再起動して、再度試すとうまくいきました。