PowerCMS™

【東京セミナー】6月6日(木) 企業Webリニューアル。最初に押えたい要件定義の進め方と、最新CMSで出来ること

PowerCMS ブログ

ホーム > PowerCMS ブログ > 開発環境から本番環境へ PowerCMS環境を移行する(バックアップからデータを復元する)

2014年04月14日

開発環境から本番環境へ PowerCMS環境を移行する(バックアップからデータを復元する)

Movable Type および、PowerCMS で環境を移行もしくは復元する方法はいくつかありますが、すべてのデータを完全に移行・復元する場合、DB のバックアップから復元する方法が確実かつ安全です。

尚、Movable Type、PowerCMSの「アイテム」(アップロードした画像やファイル)のデータはDBのバックアップには含まれませんので(含まれるのはパスやアイテム名、タグ等のメタデータのみ)、物理ファイルはあわせて移行(復元)する必要があります。

※ 本記事は DB に MySQL を使用しているケースを想定した記事になります。

DB (MySQL) のバックアップ

DB のバックアップは、mysqldump コマンドや、phpMyAdmin などのツールより行なうことができます。

それぞれのツールによるバックアップの実施方法は MovableType.jp のドキュメントに掲載されております。

また、PowerCMS の BackupConfig プラグインを使うことで、定期的な DB のバックアップも可能です。

バックアップのスケジュールなどは、先日の記事を参考に設定いただくと良いと思います。

詳しくは後述しますが、バックアップを取得する際は、一部 DB に含まれるバイナリデータを、16進表記でダンプするためのオプションを指定されることをおすすめします。

mysqldump コマンドであれば、--hex-blob オプションをコマンドに指定し、phpMyAdmin であれば、--hex-blob を指定するためのデータベースのオプションにチェックを入れた状態(下図参照)で、DB をエクスポートください。BackupConfig プラグインを利用する際も、「SQLオプション」に --hex-blob を指定してください。

phpMyAdminのエクスポートオプションの指定画面

URL・パスの置換について

移行先の環境は、URL やパス情報が、復元元の環境と異なるケースがほとんどだと思います。

その場合は、あらかじめ、上記の方法で取得した DB のダンプファイルに対して URL の置換および、パスの置換をかけておくと、復元作業がスムーズです。

MySQL のダンプファイルは、テキストファイルになりますので、任意のツールにてテキストの置換が実施できます。

ここでは、perl コマンドを使った置換をご紹介します。

例えば、ダンプファイルのファイル名が dump.sql で、http://www.powercms.jp/ と /var/www/www.powercms.jp を、http://dev.powercms.jp/ と /var/www/dev.powercms.jp に置換する場合は、下記のようにコマンドを実行します。

$ /usr/bin/perl -pi.bk -e 's{(/var/www/|http://|tag:)\Qwww.powercms.jp\E}{$1dev.powercms.jp}g' dump.sql

dump.sql が置換され、置換前のファイルが dump.sql.bk というファイル名で保存されます。(2回連続して実行してしまうと、バックアップが上書きされてしまいますので、ご注意ください。)

また、リビジョンデータも復元する場合は、powercms_files/backup ディレクトリに含まれる XML ファイル内にも、利用するカスタムフィールドによっては URL 情報が含まれる場合もあるため、置換が必要です。

置換を実施するには下記のようにコマンドを実行してください。

$ /usr/bin/perl -pi.bk -e 's{(/var/www/|http://|tag:)\Qwww.powercms.jp\E}{$1dev.powercms.jp}g' /path/to/powercms_files/backup/*.xml

上記のコマンドオプションのように、ファイル単位でバックアップを取る必要はあまりないかもしれません。その場合、あらかじめ backup ディレクトリそのものをバックアップした状態で、perl コマンドの i オプションを外してください。

URL・パスの置換して環境を復元する時のよくあるトラブル

「サーバの移転後、プラグイン設定が表示できなくなった」というお問い合せがサポートに寄せられることがあります。

プラグイン設定で、URL やパスを指定するプラグインがありますが、バイナリデータをバイナリのままダンプした上で、置換を実行した際に、誤ってバイナリデータの中のデータが置換されてしまうことで発生します。

mt_plugindata テーブルの、plugindata_data カラムが BLOB 型になっており、このカラムに保存された値が誤って置換されることで、プラグイン設定の読み込みでエラーが発生しているということになります。

その他、スニペットフィールドに保存された値などもバイナリデータで保存されているため、誤って置換してしまいますと、該当の値のデータの読み込みができなくなります。

それらを防止するためには、前述のとおり、DB のバックアップを取得する際に、--hex-blob オプションを指定ください。

復元手順について

復元は下記の手順にて実施します。

  1. 復元元の mt ディレクトリを復元先に設置する(mt-static, support, powercms_files ディレクトリ等が mt ディレクトリ外にある場合はそれも復元先に設置する)
  2. 静的ファイル(HTML,CSS,JavaScript,アイテム(画像やアップロードファイル等)を復元先に設置する
  3. 置換済みのダンプファイルを使って、DB をリストアする (参考: MySQL の復元(リストア), phpMyAdmin による MySQL の復元
  4. 復元先の mt-config.cgi を復元先の環境に合わせて修正する
  5. 復元先の PowerCMS にログインする
  6. プラグイン設定を修正する
  7. 再構築を実施する

上記の手順で復元すれば、復元元の環境とほぼ同じ状態が復元できます。
2.のファイルの配置時には、ファイルのパーミッションに注意してください。Movable Type、PowerCMSが読み書き可能なパーミッションになっていないと、再構築時やファイルアップロード時にエラーになる可能性があります。
6.の手順は、プラグイン設定に URL やパスが含まれる場合に必要です。 前述のとおり、プラグイン設定はバイナリデータで保存されているため、前述の perl コマンドによる URL やパスの置換の対象から外れており、手動で調整し直す必要があります。
※ スニペットフィールドの値も同様です

下記の記事もあわせてお読みください。


カテゴリー
トラブルシューティング
技術情報

Recent Entries