PowerCMS で制作した環境を別の環境に移行・復元する場合、
- データベースのバックアップ
- PowerCMS のファイル一式
- コンテンツファイル一式
を使って行うのが確実です。パス情報の異なる環境に復元する場合でも、データベース内のパス情報を置換することで対応可能です。
PowerCMS が持っている「アイテム」の情報はパスやアイテム名、タグ等のメタデータのみとなりますので、物理ファイルを合わせて移行します。
本ドキュメントは、データベースに MySQL を使用しているケースを想定しています。
データベースのバックアップ
データベースのバックアップは、mysqldump コマンドや、phpMyAdmin などのツールより行なうことができます。それぞれのツールによるバックアップの実施方法は、下記のドキュメントに掲載されております。
PowerCMS の『リモートバックアップ』の機能を使うことで、定期的なデータベースのバックアップも可能です。
mysqldump コマンドであれば、--hex-blob
オプションをコマンドに指定し、phpMyAdmin であれば、--hex-blob
を指定するためのデータベースのオプションにチェックを入れた状態(下図参照)で、エクスポートしてください。
URL・パスの置換について
エクスポートファイルを置換する場合
URL やパス情報が移行元の環境と異なる場合は、あらかじめ、上記の方法で取得したデータベースのエクスポートファイルに対して 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_DIR/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 カラムがバイナリ型になっており、このカラムに保存された値が誤って置換されることで、プラグイン設定の読み込みでエラーが発生しているということになります。その他、スニペットフィールドに保存された値などもバイナリデータで保存されているため、誤って置換してしまいますと、該当の値のデータの読み込みができなくなります。
それらを防止するためには、前述のとおり、データベースのバックアップを取得する際に、--hex-blob
オプションを指定してください。
SQL で置換する場合
URL やパス情報を SQL で置換する場合は、移行先環境にエクスポートファイルをインポートしてデータベースを復元してから行います。その場合はどのテーブルのどのカラムを対象にするか明示する必要があります。代表的なデータとしては
- mt_blog テーブルの blog_site_path, blog_site_url
- mt_fileinfo テーブルの fileinfo_file_path
などが対象になりますが、記事の本文やカスタムフィールドなど、運用によっては様々な場所に置換対象が存在する可能性があります。前述のエクスポートファイルに対する置換のほうが網羅しやすいといえるでしょう。
復元手順
復元は下記の手順で実施します。
- 移行元の PowerCMS のファイル一式を移行先にコピーする(mt-static, support, powercms_files ディレクトリ等が PowerCMS ディレクトリ外にある場合はそれらも移行先にコピーする必要があります。mt-config.cgi に記述されている環境変数をご確認ください)
- コンテンツファイル一式を移行先にコピーし、ウェブサーバーから読み書き可能なパーミッションを付与する
- 置換済みのダンプファイルを使って、データベースをリストアする (参考: MySQL の復元(リストア), phpMyAdmin による MySQL の復元)
- 前述の、SQL での置換を行う場合はここで実施します
- 移行先の mt-config.cgi を、環境に合わせて修正する
- 移行先の PowerCMS にログインする
- 必要に応じてプラグイン設定を修正する
- 再構築を実施する
これで、移行元の環境とほぼ同じ状態が復元できます。
1, 2 のファイルの配置時には、ファイルやディレクトリのパーミッションに注意してください。PowerCMSが読み書き可能なパーミッションになっていないと、再構築時やファイルアップロード時にエラーになる可能性があります。
6.の手順は、プラグイン設定に URL やパスが含まれる場合に必要です。前述のとおり、プラグイン設定やスニペットフィールドの値はバイナリデータで保存されているため、前述の perl コマンドによる URL やパスの置換の対象から外れており、手動で調整し直す必要があります。
- 次は
- 一覧へ