wordpressの移行(マイグレーション)
wordpressの移行手順を備忘録として残しておきます。
wordpressの移行がなぜ必要だったのか
このサイト、pooq.bizを公開するにあたって、色々と障害がありました。例えば、PHPのバージョンによって動作しないプラグインがありました。また、テーマも他のプラグインとの組み合わせで上手く動作しないこともありました。そこで、サイトに変更を加える前に実験用サイトでの検証を行うこととしました。そして、実験用サイトを本サイトと同一にすることで、検証の精度を上げたいと考えました。そのためには、本サイトのデーターをそっくり移行する必要がありました。
バックアップ用プラグインは制約が多かった
そこで、先ずはこのサイトをごっそりバックアップしました。そして、移行先でリストアしました。しかし、これが意外と上手くいきません。同一サーバー内で、一回だけの移行ならば上手くいきました。しかし、多くのバックアップツールには差分バックアップの機能がありません。したがって、二つのサイトを同じ状態に保つには、都度バックアップリストアが必要で。さらに、これを二つのサーバー間で行うと、伝送時間が負担となりました。そこで、思い切ってバックアッププラグインの使用は諦めることにしました。
wordpressの移行には標準ツールが良い
そこで、差分の移行もできる方法を模索することになります。しかし、完ぺきではありませんが、それはすぐに見つかりました。wordpressに標準で用意されているエクスポートツールがそれです。そして、対を成すインポートツールはインストールも勿論あります。
標準のエクスポートツールには意外な欠点があった
標準のエクスポートツールは、差分のエクスポート機能はありません。しかし、移行する記事の投稿期間を指定する機能があります。ただし、この機能は月単位での指定となります。それでも、この機能はありがたいです。また、重複した投稿とメディアはインポートされません。しかし、固定ページは追加してインポートされてしまいますので要注意です。したがって、二回目以降のエクスポートは、投稿とメディアに限定することで回避します。
CDNを利用しているwordpressの移行には工夫が必要
このサイトは、CDNにWordPress CDNとCloudflareを使用しています。これらのうちWordpress CDNには注意を要します。Wordpress CDNは画像をキャッシュします。しかし、このキャッシュ期間が問題を起こします。Wordpress CDNのキャッシュには期間がありません。つまり、一度キャッシュされると、サーバー側の画像を更新しても反映されません。そして、wordpressインポーターは、画像データをサーバー間でコピーします。この時、キャッシュやCDNが動作していると、画像ファイルはCDNから移行されてしまいます。これにより、移行元と移行先で、異なった画像が表示されてしまう問題が発生します。
wordpressの移行 – 実際の作業(備忘録)
以下に、CDN問題を回避して、移行する手順を備忘録として残しておきます。なお、以下の手順は、Jetpackプラグインと、cloudflareを使用している場合の例です。使用環境に応じて手順をアレンジしてください。
手順1、wordpressの移行の肝、wordpress CDNの停止
wordpress CDNを停止します。この作業を行わなかった場合、移行先への画像移行が正しく行われませんでした。したがって、wordpress CDNを使用している場合には必須の作業となります。操作ページは管理画面→Jetpack→設定→パフォーマンスです。
このページで、”サイトアクセラレーターを有効化”のスイッチをOFFにします。この作業は、一番の肝です。
手順2,cloudflareの一時停止
この作業は、cloudflareを使用している場合のみ行った方が良い作業です。しかし、実際にはこの作業は行わなくても障害になることはまずありません。それは、cloudflareのコンテンツリビジョン管理が秀逸だからです。したがって、この作業は念のため行うものです。
cloudflareのサイト管理画面にあるQuick Actionsを操作します。この中のDevelopment ModeをONにしてください。これで、cloudflareのキャッシュは一時的に無効になります。
手順3,wordpressの移行で使用するデータのエクスポート
エクスポートは二回に分けて行います。エクスポートは順不同で大丈夫です。また、この例は二回目以降の移行作業を想定しています。したがって、エクスポート対象を”すべてのコンテンツ”にしていません。その理由は前述のとおり、”すぺてのコンテンツ”をエクスポートした場合、固定ページが重複するからです。しかし、最初の移行の場合には、躊躇せず”すべてのコンテンツ”をエクスポートすべきです。
手順3-1,投稿をエクスポート
エクスポート期間は月単位の設定となります。重複した分はインポート時にチェックされます。そして、同じ投稿が複数登録されてしまうことはありません。なお、”エクスポートをダウンロード”ボタンを押下すると、データはローカルPCにダウンロードされます。
手順3-2,メディアをエクスポート
この作業では、投稿に含まれる画像をエクスポートします。しかし、実際に画像がデータとしてエクスポートされることはありません。画像ファイルに付加された情報と、画像ファイルのURLだけがエクスポートされます。したがって、バックアップ用のプラグインを使用するよりもずっと小さなファイルとなります。
wordpress管理画面左側メニュー→ツール→エクスポートの順に操作します。次にメディアのラジオボタンを選択します。そして、エクスポート対象とする期間を選択します。”エクスポートファイルをダウンロード”をクリックして、ダウンロードします。
手順4,インポート
インポートもエクスポートと同じく、二回に分けて行います。この作業も順不同です。なお、インポーターは標準状態ではインストールされていません。初回利用の際には、使用したいインポーターをインストールしてください。インポーターは複数用意されていますが、以下はwordpressインポーターを使用した場合の説明です。
手順4ー1,投稿のインポート
投稿をインポートする際には、投稿者の設定と添付ファイルのダウンロードに注意してください。特に、最初の移行の時に、投稿者の設定を行わないと投稿がゴミ箱に入ってしまいます。二度目以降は、投稿者の指定を行わなくても良い場合があります。しかし、二度目以降も投稿者指定を行っておいた方が安全です。また、添付ファイルのダウンロードはチェックしておくべきです。添付ファイルのダウンロードを行わない場合、アイキャッチ画像がインポートされないからです。
そして、”実行”をクリックすればインポートは完了です。なお、大量の投稿をインポートした場合に、異常終了することがあります。この異常の多くは”インポートする投稿者”の設定が不適切なことによって発生します。
手順4ー2,メディアのインポート
ここでは、PCにダウンロードしたファイルを移行先サーバーにアップロードします。そして、画像などのメディアファイルは移行元サーバーから直接移行先サーバーにコピーされます。そして、この時にCDNが稼働していると、移行元サーバーではなく、CDNからメディアがコピーされます。このため、CDNが稼働しているとwordpressの移行が正しく行われません。
メディアのダウンロードの際には、実際にサーバー間でファイルのコピーが行われます。このため、インポートファイルが多数の場合時間を要します。そして、この時インポート画面にログが表示されます。このログに”全て完了しました”と表示されたら、インポートはおしまいです。
手順5、Wordpress CDNの再開
インポートが終わったら、wordpressを通常運転に戻しましょう。先ずは、wordpress CDNの再開です。
Jetpackプラグイン設定→パフォーマンスタグにある、”サイトアクセラレーターを有効化”をONにします。これで、Wordpress CDNが再開されます。
手順6、cloudflareの再開
cloudflareを使用していた場合、Development Modeを解除して、cloudflareによるキャッシュを再開します。
以上で、wordpressの移行は終了です。お疲れさまでした。
wordpressの移行 – 未解決の問題
以上の作業で、マイグレーションは完了です。しかし、稀に発生する問題で、原因が分からない現象があります。それは、アイキャッチ画像が、設定したものと異なる画像に置き換わってしまう現象です。修正は簡単なのですが、そもそも画像の置き換わりがなぜ発生するのか、今のところ不明です。これについては、今後も原因追及していくつもりです。