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用の暗号鍵を作成
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から秘密鍵へアクセスできずエラーになりますんで気をつけてください。