はじめに
サイトを立ち上げて半年を過ぎ、結構記事も増えてきました。心配性なので定期的にバックアップしていますし、Amazon Lightsailも日次でスナップショットも撮っています。それでも、もしもサーバーに不具合が起きたら?など、不安の種はいつまでも残ります。昔からITに関してはペシミストなので心配事は絶えません、困ったものです。(^^; Synology NASにbitnami-WordPress仮想環境を構築しましたので、早速マイグレーションの実践検証を行います。将来のサイト拡張の予行演習です。
マイグレーションの方針検討
今回はマイグレーションの一環として、ローカル環境にサイト間コピーを行います。ですがCMS(コンテンツ管理システム)を運営する上で、マイグレーション方法を知っておく事はとても重要です。苦労して書き上げたコンテンツは私にとってはお宝そのものです。また、今回はコピー先サイトは検証ステージとして使いますので、継続的な記事の同期方法についても整理しておきます。まずはマイグレーションでの一括コピーを行い、その後にサイト間での記事の同期方法を調べます。
Step1・WordPressのマイグレーション
まずは、既に運用中であるバックアップからのマイグレーションを検討します。CSMのエクスポートとインポートにはコストが必要なので、将来的な日次運用からマイグレーションができると効率的です。
UpdraftPlusを使ってサイトをバックアップ/レストア
このサイトはこのツールで手動バックアップを行っています。幸い、AmazonLightsailではレストアが必要な状況に陥る事態にはなっていません。とても優秀なバックアップツールなので、このツールの利用事例としてサイト間コピーに利用しました。手順が分かれば、今後のレストアやサイト間コピーも捗ります。
バックアップ/復元
タブから今すぐバックアップ
を押下してバックアップを開始します。
バックアップ項目をチェックし今すぐバックアップ
を押下します。
バックアップ項目:
- バックアップにデータベースを含める
- バックアップ内のすべてのファイルを含める
- このバックアップをリモートストレージに送信
バックアップが始まります。
バックアップデータの編集
UpdraftPlusで作成したバックアップは、サイト間コピー用には作られていません。作成したバックアップファイルに修正を加える必要があります。
バックアップデータを入手します。私はバックアップをGoogleドライブに保存しているので、そちらからダウンロードしました。もちろんUpdraftPlusからもダウンロードできます。
UpdraftPlusは右にある様に5つのバックアップファイルが作成されます。修正対象となるファイルは拡張子が.gz
となっているファイルです。データベースのバックアップファイルの様です。
- backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-db.gz
- backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-others.zip
- backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-plugins.zip
- backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-themes.zip
- backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-uploads.zip
.gzの解凍は、MacOSのターミナルから、gzipコマンドを使って行いました。
バックアップファイルのあるフォルダに移動してdbのバックアップファイルを解凍します。
% ls
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-db.gz
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-others.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-plugins.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-themes.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-uploads.zip
# ファイル名は適時置き換えて下さい。
% gzip -d backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-db.gz
% ls
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-db
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-others.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-plugins.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-themes.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-uploads.zip
解凍したファイルを編集し、記載されているサイトURLを移行先のURLに修正します。移行先のURLは今現在は仮想環境に割り振ったIPアドレスとしますので、置換条件は以下のとおりです。
- https://www.to-digitalarts.net → http://xxx.xxx.xxx.xxx
- 検証環境はTSL設定をしていませんのでhttpと設定しています
- 今後、検証環境もTSL設定を行う予定です
テキストエディタで修正して問題ないです。私はCotEditor
で一括変換しました。オープンの際「書類に複数の改行コードが混在しています」と警告が出るかもしれません。これは「無視」で問題ありません。
修正した設定ファイルをgzipで再圧縮します。
% gzip backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-db
% ls
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-db.gz
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-others.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-plugins.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-themes.zip
backup_2023-05-23-1414_ToDigitalARTs_blog_7d2db4b11c09-uploads.zip
以上でレストアの前準備は完了です。大した手間ではありませんが、将来的にはこの手順は使用できなくなるかもしれません。その際は、有償プランを検討する必要がありそうです。
クローンサイトにバックアップをレストア
バックアップファイルの編集が終わったので、早速クローンサーバーへレストアします。
ローカルに立ち上たWordPressへログインします。ログインユーザーは仮想環境のWordPress初期ユーザーuser
でログインします。
UpdraftPlusプラグインをインストールします。
UpdraftPlusのメニューからレストア操作に入ります。Upload backup files
を押下してアップロードを開始します。
バックアップデータ全てをUpdraftPlusにアップロードします。
アップロードが完了したらRestore
を押下するとレストアの開始です。
レストアの実行
レストアの間は見守るしかありません。(^^; UpdraftPlusプラグイン、優秀過ぎです。
レストア項目はすべてをチェックし、Next
を押下してください。
覚悟を決めて…Restor
を押下してください。
粛々とレストアが進みます。
後は、元サイトのアカウントでの操作です。元サイトの管理者権限のアカウントでログインしてください。レストア実行前に使用した初期アカウントuser
は抹消されています。
レストアは無事完了しました。
レストア後の調整
元サイトの情報を、ほぼ完コピーしている状態なので、いくつかの設定は早々に調整しておいた方が安全です。元サイトの構築状況でも変わりますので、一例として私の調整事項を紹介します。
UpdraftPlusの設定自体が元サイトの設定を引き継いでしまっています。実行しても不整合でエラーとなるので問題はないですが、早めに設定を見直しておきます。Googleドライブなど、クラウドストレージが利用できるので大変助かります。
プラグインもすべて元サイトの設定のままでリカバリーされています。今回のマイグレーションはローカル環境がターゲットなので、SEO(検索エンジンの最適化)に関連するプラグインは全てを見直して無効にしておきます。
サイト間コピー用のプラグイン
Duplicator
移行元サイトを一つのパッケージにまとめてしまい、展開のためのインストーラーを作成するプラグインです。レストア先ではWordPress上からのレストアではなく、直接インストラースクリプト(PHP)を実行してレストアします。
All-in-One WP Migration
マイグレーション専用のプラグインです。コピー元からのエクスポート/コピー先でインポートと、シンプルにサイト間コピーができます。マイグレーション専用なので将来的に大規模になった際の移行手段として考慮しておきます。
WordPress自体が成熟しているので、マイグレーションに関しても支援プラグインがとても充実しています。個人的にはデータベースの移行ってもっと大変なイメージでしたが、考えてた以上に簡単に移動できるのはありがたいです。
URLのリダイレクト
今回はローカル環境にコピーして検証用サイトを立ち上げるので、マイグレーションというには寸足らずです。マイグレーションの締めを飾る作業としてURLのリダイレクトがあります。今後をURL変更する機会になりましたら、結果をご紹介いたします。
Step2・記事のコピー
公開サイト「To. DigitalARTs. blog」と検証サイト「Clone – To. DigitalARTs. blog」の二つが稼働しました。それぞれのサイトは別々の記事管理で運用します。とはいえ、公開サイトのバックアップとしても使えると安心なので、サイト間の記事コピーについても検証しておきます。
Export media with selected content
特定の記事や固定ページだけのエクスポート/インポートを支援するプラグインです。WordPress標準のエクスポートでは大ざっぱなエクスポートしかできないので、このExport media with selected contentプラグインを導入します。
一手間ですが、対象記事の編集者を専用ユーザーに変更しておくと、目的の記事だけをエクスポートする事ができます。もちろん、エクスポートが終わったら編集者を元に戻して完了です。
記事のエクスポート
ツール
/エクスポート
からメニューにアクセスします。エクスポート用の投稿者を設定しExport media with selected content
のチェックを入れてからエクスポートファイルをダウンロード
を押下してください。記事に画像が添付されたxml形式のエクスポートファイルが入手できます。
エクスポートが終わったら、記事の投稿者を元に戻しておきましょう。
特定記事のエクスポートは以上です。
記事のインポート
記事のインポートはWordPressの標準機能で行います。
ツール
/インポート
からメニューにアクセス、WordPressグループのインポーターの実行
を押下します。今すぐインストール
になってましたら、押下してインストールをするとインポーターの実行が現れます。
WordPressのインポーター画面に切り替わりますのでファイルを選択
から記事のエクスポートファイルを選択しファイルをアップロードしてインポート
を押下してください。
インポート投稿者の設定を行い、インポートを実行します。添付ファイルをダウンロードして…
にチェックを入れるとエクスポートファイルに添付された画像も同時にインポートしてくれます。既に登録されていた場合はその画像はスキップされます。
インポートは以上です。
WordPress Multisite Content Copier/Updater
こちらのプラグインの方が希望する機能なのですが、残念ながらうまく動作しませんでした。WordPressのバージョンは検証済みなので他のプラグインとの競合かもしれません。別途検証してみたいと思います。仮想環境が用意できたので、気負わずに検証出来とても助かります。(^^)
まとめ
思った以上に簡単に移行ができてよかったです。システム権限やデータベース移行は、うまく設計しないと結構ハマると思っていたのですが、想像以上にWordPressは整備されている事が確認できました。プラグインの作者様には大感謝です、ありがとうございました。
Amazon Lightsailは安いとはいえ有料ですから、手元の環境に自由に作れるのは助かります。素人のマイグレーション作業ではありますが、参考になれば幸いです。引き続き、WordPressに関するノウハウを記事にして共有していきますので、どうぞよろしくお願いします。