ホームページの保守をしていると、WordPress サイトを別のサーバーへ移す作業がよく発生します。サーバーの乗り換えや、公開前の確認用に手元のパソコンへ写す作業です。
これまで移行用のプラグインを使ってきましたが、大きなサイトでは容量の上限に毎回つまずいていました。そのたびにプラグインの設定ファイルを書き換えて上限を外す手間がかかります。手元の開発環境 LocalWP へ移すときにも、取り込める形に作り直す作業が別に必要でした。
そこで移行プラグインを自分で作り、「Unbox by oobe」という名前で WordPress.org の公式プラグインディレクトリに公開しました。すべての機能を無料で使えます。
Unbox でできること
サイトのファイルとデータベースを1つのファイルにまとめ、別の WordPress で開いてそのまま動く状態に戻します。主な特徴は次のとおりです。
- 容量の上限がありません。 書き出しも取り込みも少しずつ進めます。アップロードもサーバーの上限に合わせて分けて送り、断られたら自動で小さく分け直します
- LocalWP 用の zip を書き出せます。 LocalWP の「Import site」にそのまま渡せる形です。URL は
http://○○.localに置き換え済みで、WordPress 本体も同梱できます - Basic 認証や WAF の内側でも動きます。 各段階をブラウザーから進める作りなので、サーバーが自分自身へリクエストを送ることがありません
- All-in-One WP Migration の
.wpressを取り込めます。 移行先がそちらを使っている場合は.wpressで書き出すこともできます - WordPress の外のフォルダーも運べます。 WordPress と同じ階層に置いた静的なページのフォルダーなども、選んで一緒に移せます
書き出したファイルは推測できない名前のフォルダーに置かれ、管理者が管理画面からだけダウンロードできます。外部への通信も行いません。
使い方
- 移行元のサイトに Unbox を入れ、「ツール → Unbox」で形式を選んで書き出します
- できあがったファイルをダウンロードします
- 移行先のサイトにも Unbox を入れ、「インポート」のタブにファイルをドロップします
- 移行先の URL を確かめてから取り込みを始めます
- 終わったら、移行元のサイトのユーザーでログインし直します
LocalWP へ移すときは「LocalWP 用 zip」を選んで書き出し、LocalWP の「+」→「Import an existing site」で選ぶだけです。
途中で止まってもサイトを壊さない作り
移行で一番避けたいのは処理が途中で止まって元のサイトまで動かなくなることです。Unbox ではここに一番手間をかけました。
データベースはいきなり上書きしません。まず一時的なテーブルへ取り込み、全部そろった最後に1回の操作で入れ替えます。途中で失敗しても、今のサイトのデータベースはそのまま残ります。
ファイルも同じ考え方です。取り込むファイルはいったん別の名前で最後まで書き、書き終えてから本来の名前に付け替えます。書きかけのプラグインのファイルが読み込まれて、処理そのものが止まる事故を防ぐためです。
1回の処理は最長20秒で区切り、どこまで進んだかを記録しています。サーバーの実行時間の制限に引っかかっても、続きから再開できます。20GB を超えるサイトでも最後まで移せることを確かめてから公開しました。
公式ディレクトリの審査で直したこと
WordPress.org で公開するにはボランティアの方々による審査を通る必要があります。今回は3回のやり取りで承認されました。指摘を受けて直した主な点を残しておきます。
- 名前:最初は「Unbox」の一語で申請しましたが、同じ名前の商標や会社があり区別がつかないと指摘されました。屋号を付けて「Unbox by oobe」にしています
- データベースの扱い:大きなテーブルを速く読むためにデータベースへ直接つないでいた部分を、WordPress 標準の仕組みを通す形に書き直しました
- 移行中の仕掛け:取り込みの間だけほかのプラグインを止めるため、実行用のファイルを自動で置いていました。プラグインが実行用のファイルを書き出すことは認められていないため、先ほどの「別の名前で書いてから付け替える」方式に切り替えています
どの指摘も、ほかのサイトの環境で安全に動かすための理由がはっきりしていました。直した後のほうが作りとしても素直になったと感じています。
まとめ
- Unbox by oobe は容量の上限なしで WordPress サイトを丸ごと移せる無料のプラグインです
- LocalWP にそのまま取り込める zip も書き出せます
- データベースもファイルも最後に入れ替える作りで、途中で止まっても今のサイトは壊れません
- WordPress.org のプラグインページからダウンロードできます。ソースコードは GitHub で公開しています
サイトの引っ越しや、保守のための環境づくりを任せたい方はお問い合わせからご相談ください。