アップグレードをどうするか?

WordPress はアップグレードが比較的頻繁にあります。去年 (2007 年) は 2.0.6 から 2.3.2 まで合計 13 回のアップグレードがありました。今年は大きなアップグレードは3回予定されていて、その合間に小さなアップグレードがたぶん2、3回はあるので、一年間では (少なくとも) 合計 10 回くらいはある計算になります。

これだけ頻繁にアップグレードがあるとさすがに面倒ですが、セキュリティフィックスが含まれることも多いのでアップグレードしないわけにもいきません。いずれ WordPress 自体にアップグレード機能が実装されると思いますが、それまでは自力で行なう必要があるので、その方法をまとめてみました。

バックアップを忘れずに!

データベースのバックアップ

データベースのバックアップには WordPress の管理画面からバックアップのダウンロードやメールでの送信ができる WordPress Database Backupプラグインをおすすめします。私はこのプラグインでバックアップを毎晩自動的にGmail宛に送るように設定しています。念の為そのバックアップが使用できるか確認しておいた方がいいでしょう。

本体ファイルのバックアップ

アップグレードのたびに修正が必要になるのはかなり面倒だと思うので、本体ファイルの改造は極力避けた方がいいでしょう。やむを得ず改造している場合は、改造した箇所をメモして該当のファイルをバックアップしときましょう。

テーマ、プラグイン、アップロードした画像等のファイルのバックアップ

もしローカルにバックアップが無いのなら、FTPでwp-contentディレクトリごとバックアップした方がいいでしょう。以下で紹介している アップグレード用のプラグインとシェルスクリプトには、データベースやこうしたファイルを含む本体ファイルの丸ごとバックアップ機能もついます。

私の場合

メジャーアップグレード時:

  • 本体ファイル(プラグイン、テーマ、画像ファイルなどすべてを含む)は WordPress のディレクトリごと FTP でダウンロードしてバックアップ
  • データベースはアップグレード直前に WordPress Database Backup プラグインでバックアップを取り、そのバックアップが正常に使用できるか確認
    確認方法:

    1. phpMySQLで新たに一時的な仮のデータベースを作成
    2. バックアップしたデータベースをインポート
    3. wp-config.phpでデータベース名を仮のデータベース名に変更
    4. WordPress にアクセスして問題なく表示されるか、管理画面にログインできるか確認

マイナーアップグレード時:

  • 本体ファイルはバックアップしてない
  • データベースは毎日の定時バックアップ以降に投稿やコメントがあった場合のみ、プラグインから手動でバックアップ

Subversion でアップグレード

いったん Subversion でインストールしてしまえば、あとは SSH でログインして WordPress をインストールしたディレクトリに移動後、

svn sw http://svn.automattic.com/wordpress/tags/x.x.x/ .

と入力するだけです。
※1 x.x.xは最新のバージョンナンバー
※2 最後のドット(.)を忘れずに!

これはもうあっという間に終了します 🙂 。ここで 紹介している方法の中では一番速くて、コマンドラインでの操作が苦にならなければ一番簡単ですが、Subversion が使えないとダメなので環境を選びます。これからホスティングサービス(レンタルサー バー)の選択や移転を考えているのなら、Subversion が使えるところを検討してみるといいでしょう。

ホスティングサービス(レンタルサー バー)は国内だと CORESERVER が使えるようですが、わたしは海外の DreamHost というところを使用してます。英語にアレルギーが無くて ping が多少遅くても構わないなら、容量に余裕があって管理画面が使いやすい(と私は思う!)DreamHost をおすすめします。(promo code に「tekapo」と入れると初年度だけは大幅に割引になるんでドウゾ!)

Subversion での実際のインストールとアップデートの方法は「Subversion でアップグレード」をご覧ください。

さて、私はものぐさなんで、マイナーなアップグレード時には実はもっと楽をしてるんよ 🙂 。

  1. WordPress リポジトリのタグではなくブランチをインストール
    例:

    svn co http://svn.automattic.com/wordpress/branches/2.3/ /home/xxxx/blog
  2. 日本語リソースも Subversion で該当のブランチから wp-content/languages にインストール
    例:

    svn co http://svn.automattic.com/wordpress-i18n/ja/branches/2.3/messages/ /home/xxxx/blog/wp-content/languages
  3. 以下の内容を書いたテキストファイル(ファイル名を仮に wpup とする)をリモートのユーザーディレクトリのルート直下に置く
    cd /home/xxxx/blog
    svn up
    cd /home/xxxx/blog/wp-content/language
    svn up

あとは ssh でログインしてコマンドラインで「. wpup」と打つだけ!(cronにしちゃえば完全自動アップグレードもできるけど、まだそこまでしてない)
当然、メジャーアップグレード時には新しいブランチにスイッチ(svn sw http://new-branch)する必要がありますけどね。

プラグインでアップグレード

プラグインをアップロードして有効化する以外に特に準備も必要なく一番手軽ですが、環境によっては使用できないこともあるらしい(セーフモード不可?)。

いまのところ WordPress 本体をアップグレードするプラグインは(私の知っている限り)WordPress Automatic Upgrade PluginInstantUpgrade の2つがあります。WordPress Automatic Upgrade Plugin はデータベースや WordPress ディレクトリを丸ごとバックアップする機能やアップグレード中にメンテナンス中であることをウェブページに表示する機能もあるので、こちらの方がいいかもしれません。

どちらも手順が表示されるので特に迷わずできると思います。

シェルスクリプトでアップグレード

シェルスクリプトは EasyWPUpdate というもので、 スクリプト冒頭にアップグレードするWordPress ディレクトリへのパスを書き入れれば、複数の WordPress のバックアップとアップグレードを実行できます。私も以前2,3回これでアップグレードしたことがありますが、特に問題なくできました。今ももし WordPress を10個とか管理してたら間違いなくこのスクリプトを使用しますね。

動作は:

  1. データベースをサーバ上のバックアップディレクトリにバックアップ
  2. テーマプラグイン等を含む本体ファイルをサーバ上のバックアップディレクトリにバックアップ
  3. サーバ上の一時ディレクトリに最新の WordPress をダウンロードして展開
  4. 展開した WordPress を指定したディレクトリの WordPress へ上書きコピー
  5. 指定した分だけ 4 を繰り返す

こんな感じです。くわしくは『WordPressのアップグレードを簡単に:EasyWPUpdateの巻』をご覧ください。

FTP でアップグレード

方法としては上書きするのとアップロードしてリネームする方法があると思います。どちらにしろ一般的なので、ある意味一番安心できる方法かもしれませんが、上3つに比べるとローカルに一度ダウンロードしてアップロードするので時間がかかり、ちと面倒です。

私は、Subversion やプラグインを利用する前は、アップロード後リネームしてました(サーバー上の WordPress ディレクトリ名を仮に「aaa」とする):

  1. 新しい WordPress をダウンロードしてローカルに展開(仮に bbbフォルダとする)
  2. バックアップした WordPress から必要なファイル等(wp-config.phpやwp-contentフォルダなど)を新しい WordPress の bbb フォルダにコピー
  3. bbb フォルダごと FTP でアップロード
  4. リモートの WordPress ディレクトリ名「aaa」を「aaa_」に変更
  5. アップロードした「bbb」ディレクトリを「aaa」に変更

これだと何か問題があったときに、データベースの更新がなければ前のバージョンにすぐ戻せます。

上書きの場合は差分か丸ごとか?

「差分ファイルだけ上書きアップグレードしました」という投稿をたまに見かけるのですが、差分のファイルを抜き出す手間がかかりますし、差分の情報 が適切ではない可能性や、間違えて抜き出す可能性もあるので、あまりおすすめしません。FTP の転送時間が多少長くかかるかもしれないけど丸ごと上書きした方が手間は少ないし確実だと思います。

2件のコメント

コメントは受け付けていません。