MacOS XでWordPressの自動アップデートをSSH2経由で行なう

WordPressで自動アップデートを行なう場合、通常はWordPressを設置しているサーバのFTP接続情報が求められますが、LAN内の確認用WebサーバにFTPとか今更ないわー、ということで他の方法で調べてみたらSSH経由での自動アップロードも可能らしいです。

今回は MacOS X + macports で環境を整えたサーバに設置したWordPressの自動アップデートをSSH経由で行なう手順をまとめます。

php5-ssh2 のインストール

macports で環境を整えたサーバということで、まずmacports経由で php5-ssh2 をインストールします。selfupdate や sync は終わってる前提として、

sudo port install php5-ssh2

でインストールされます。macports でいうところの php5-ssh2 は(同じくmacportsでインストールされた)PHP5にlibssh2をバンドルさせるパッケージなので、macports 以外でPHP5環境を構築してる場合はそれぞれの方法でlibssh2をインストールしてください。

インストール後apache2(前提条件に挙げてませんでしたけどWebサーバはapache2とします)を再起動した後、WordPressの管理画面へログインすると接続情報のページでSSHが扱えるようにあったのに合わせて一部表示が変化します。

WordPress接続情報画面。libssh2を導入すると接続情報画面がSSH2対応を明示するように一部表記が変わります

WordPress用の暗号鍵を作成

SSH接続化を試みたサーバは外部から接続できないLAN内サーバですが、今回は暗号鍵での接続を試します。ここで作成する暗号鍵はWordPressが利用するため、PHP5からアクセスできる、即ちapache2がアクセスできる権限である必要があります。

MacOS Xの場合通常apache2はwwwアカウントで実行されますが、秘密鍵の設置のためだけにホームディレクトリを作成するのも手間で、だからと言って通常利用するアカウントの秘密鍵をWordPressと共用するために.sshディレクトリや秘密鍵を他アカウントから閲覧可能なパーミッションに設定するのも、外部から接続できないサーバとはいえかなり気持ち悪いので、WordPressが利用するためだけの秘密鍵を作成する方法を採ります。

WordPressからアクセス可能にするってだけなので、基本的には自身の秘密鍵作成と同じです。

$ mkdir ~/.ssh_wp
chmod 700 ~/.ssh_wp
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/youraccout/.ssh/id_rsa): /Users/youraccout/.ssh_wp/id_rsa # pathを書き換え
Enter passphrase (empty for no passphrase): # 今回は未設定
Enter same passphrase again:
Your identification has been saved in /Users/youraccout/.ssh_wp/id_rsa.
Your public key has been saved in /Users/youraccout/.ssh_wp/id_rsa.pub.

鍵の作成が成功すれば以降 fingerprint と randomart image が表示され、指定したディレクトリに秘密鍵 id_rsa と公開鍵 id_rsa.pub が作成されます。作成後、公開鍵から authorized_keys を作成し、WordPress用に作成した .ssh_wp を丸ごと所有者 www にしてしまいます。

$ cd ~/.ssh_wp
$ touch authorized_keys
$ chmod 600 authorized_keys
$ cat id_rsa.pub >> authorized_keys
$ sudo chown -R www:www ~/.ssh_wp

ここまで終わったら前の接続情報画面から

ホスト名
特に変わったサーバ設定をしてなければ localhost
FTP/SSH ユーザー名
先に作った秘密鍵を作成した際のアカウント(上の例だとyouraccount)
FTP/SSH パスワード
秘密鍵を作成した際に指定したパスワード(上の例では未設定なので未入力)
認証キー(公開鍵)
/Users/youraccount/.ssh_wp/id_rsa.pub(上の例での場合)
認証キー(秘密鍵)
/Users/youraccount/.ssh_wp/id_rsa(上の例での場合)
接続形式
SSH2

で接続できれば完了です。なお、.ssh_wp以下の所有者を変更し忘れるとWordPressから秘密鍵へアクセスできずエラーになりますんで気をつけてください。