ここ数日、WordPressで構築したサイトを別のレンタルサーバーへ引越する…という作業をいくつか実施。
けっこう難儀して、成功と失敗を繰り返したおかげで、だいたい手順が決まってきました。
独自ドメインの設定とエクスポート/インポートあたりの作業に、けっこうなハードルありまして、そのへん工夫が必要です。
ちょっとまとめておきます。
旧来の方法はNG
ちょいと前まで、レンタルサーバー上のWordPressのバックアップや、引っ越し作業を行うというと、WordPress関連ファイルをディレクトリごとコピーした後、phpMyAdminあたりのツールで、データベースの内容をSQLでかき出して、これも引っ越し先にINSERTすればオッケー…みたいな感じでしたが、今回これはNG。
理由は二つ。
サイトが小さいうちは、SQLを使ったデータの移行は問題なかったんですが、ちょっと規模が大きくなるとSQL文のサイズが巨大になって、ローカルからSQL文をアップロードする途中でたいていエラーになります。
もう一つは、WordPressのディレクトリに不正なファイルを仕掛けられた形跡があったため再利用不可。
新サーバーには、ゼロからWordPressをインストールしないといけない。
エクスポート/インポート機能を利用
今回、利用したのはWordPressにもともと装備されてるエクスポート/インポート機能を利用します。
この方式は、サイトの情報をXML形式で書き出してくれますので、それを新サーバーのWordPressにインポートしてあげればオッケーで、一見すごく楽です。
基本的な手順の中に、FTPもSQLも必要ないですし。
ただし、工夫しないとメディアファイルまわりで失敗します。
というか何度も失敗しました。
インポート時にメディアファイルの扱いに注意
エクスポートデータはXMLファイル。
当然メディアファイル自体が書き出されるわけじゃなくて、メディアのURLが書き出される。
WordPressは、そのURLを見ながら、旧サーバーから新サーバーにメディアファイルをコピーする。
つまり、インポートを実行する時点で旧サーバーと新サーバーが両方稼働してないといけない。
ドメイン自体が変わる場合は問題じゃないですが、同じ独自ドメインを一緒に引っ越しするとなると、けっこうクリアが難しい。
旧サーバーを稼働状態で残す手順
独自ドメインをレンタルサーバーで運用する場合は、たいていレンタルサーバー上の初期ドメインと、独自ドメインは別々に設定します。
例えば、xxx-site.comというサイトを運用する場合。
初期ドメイン:xxx-aaa.sakura.ne.jpに、WordPressでサイトを構築して、
独自ドメイン:xxx-site.comをネームサーバーで設定。
これを引越する場合、
初期ドメイン:xxx-bbb.sakura.ne.jpに、WordPressでサイトを構築してから、
独自ドメイン:xxx-site.comを、xxx-aaa.sakura.ne.jpからxxx-bbb.sakura.ne.jpにネームサーバーを変更。
という作業が必要。
このどこでエクスポートとインポートをやるかが工夫のしどころで、間違うと旧サーバーの管理画面にログインできなくなったりするので、ちょいとややこしい。
具体的な操作手順
※さくらインターネットでの例
1.まず、旧サーバーのWordPress設定画面(xxx-site.com)の「設定」→「一般」にて、「WordPress アドレス (URL)」と「サイトアドレス (URL)」を初期ドメイン(xxx-aaa.sakura.ne.jp)に変更して保存。
2.xxx-aaa.sakura.ne.jpのサーバーコントロールパネルにログインして、「xxx-site.com」のドメイン設定を削除
これで、旧サーバーのWordPressはxxx-aaa.sakura.ne.jpでアクセス可能になる。
3.旧サーバー(xxx-aaa.sakura.ne.jp)にログインして「ツール」→「エクスポート」から、エクスポートを実行。
インポートファイルサイズが5MBに制限されてるので、それを超える場合は分割ダウンロードが可能なプラグイン等を利用してXMLファイルを取得。
※今回は「Advanced Export for WP & WPMU」を利用。
4.続いて、新サーバーのWordPress設定画面(xxx-bbb.sakura.ne.jp)の「設定」→「一般」にて、WordPress アドレス (URL)」と「サイトアドレス (URL)」を独自ドメイン(xxx-site.com)に変更して保存。
5.xxx-bbb.sakura.ne.jpのサーバーコントロールパネルにログインして、「xxx-bbb.sakura.ne.jp」に対して、独自ドメイン「xxx-site.com」を指定。
--- ads by google ---
--- end of ads ---
※変更が反映されるまで、ちょっと時間がかかったり、すぐ反映されたりとあるので、それぞれの環境に合わせて待ちましょう。
6.新サーバー(xxx-site.com)にログインして、インポート作業を実行。
「添付ファイルをダウンロードしてインポートする」にチェックを入れないとメディアファイルをコピーしてきてくれないので、必ずチェックを入れること。
「実行」を押すと、XMLファイルがアップロードされ、それが終わると後はサーバー側の処理になるので、じっと待つだけです。
旧サーバーから新サーバーへのメディアコピーは、クライアントを経由せずにサーバー間で実行されるので、けっこう早い。
進行状況とか表示してくれるといいんですが、仕組み的に表示できないようなので、ときどき新サーバー(xxx-site.com)を表示してみて確認してみましょう。
FTPクライアントが使えるならuploadsフォルダの様子を見てみれば、進行具合が分かります。
ドメイン変更は問題なし
WordPressのエクスポート/インポートの仕様として、ドメインが変わることに関しては、すべて自動的に変換して再構築してくれます。
上の手順ですと「xxx-aaa.sakura.ne.jp」でエクスポートして、「xxx-site.com」でインポートしますが、このへんは大丈夫。
ただし、メディアファイルのインポートは、XMLファイルの通りにしかコピーできないので、「xxx-aaa.sakura.ne.jp」でエクスポートしたなら、「xxx-aaa.sakura.ne.jp」が稼働状態で、メディアファイルにアクセスできないと、コピーできない。
上の手順は、それをクリアするための一つの選択肢です。
課題は、xxx-site.comが一時的に完全にWeb上からなくなることと、エクスポートからインポートが完了するまでの間、xxx-site.comのデータが不完全な状態で表示されるコト。
このへんが許容できない場合は、この方法は使えません。
実際、他にもやり方はあるだろうし、もっとWordPressに詳しい人なら、もっとスマートな方法があるかもしれないですが、自分の環境では、ローカルとのファイルのやり取りが最小限なこの方法は、迅速に処理が進められるので最上手です。
テーマやプラグインまわりは再設定になりますが、このへんは古いテーマやプラグイン、設定等の見直しにもなりますし、手動で行きました。
具体的な失敗例1:メディアの画像サイズ
何度も失敗したので、陥りやすい罠の実例をいくつか。
WordPressに画像ファイルをアップロードする時には、フルサイズの他に、いくつか表示用の縮小画像が自動生成されます。
たいていは「中サイズ」あたりを多用してるんじゃないかと。
「中サイズ」の上限はデフォルトで300×300なんですが、これだとちょっと小さいので、自分は少し多めに変更して450×450あたりで使ってました。
ここを忘れて、デフォルトのままインポートすると300×300の縮小画像が作成されてしまうので、投稿データと画像ファイルが食い違い表示されない。
投稿数が多くて、手動で直してはいられないので、一旦メディアデータ削除してインポートやり直し。
具体的な失敗例2:uploadsファイルのFTPアップロード
WordPressの場合/wp-content/uploadsフォルダ以下にアップロードした画像(上記の縮小画像も含む)が保存されてます。
ここは旧サーバーでも新サーバーでも、全く一緒になります。
なのでuploadsフォルダを旧サーバーからFTPで取得して、事前に新サーバーにアップロード。
その後に、新サーバーでインポートする時に画像を読み込まないで(「添付ファイルをダウンロードしてインポートする」にチェックを入れない)インポートするだけで、投稿データと画像ファイルの同期がとれてるので、問題なく表示されます。
上で説明した方法と違って、新サーバーの内容が正しく表示されない時間が大きく短縮できます。
メディアファイルのインポート作業を行っていないので、WordPressのメディア一覧には何も表示されませんが、過去記事において画像を変更する必要がなければ、別にこれはこれで問題はなし。
ただ、唯一問題になるのは、アイキャッチ画像を設定して、記事のサムネイル等に利用するようなデザインテーマを使ってる場合は、アイキャッチ画像が表示されない。
自分は、アイキャッチ画像も綺麗に表示するデザインテーマだったので、これまたやり直しになりました。
uploadsフォルダの内容を、メディア一覧に反映させるプラグインというのもあって試してみましたが、望んだような結果にはならなかったのでやはり断念。
何度でも失敗するべき
他にもいろいろと失敗しながら、上記の手順を組み立てました。
ネットの記事やマニュアルを参考にしながらやるんですが、同一環境というのは、ほぼありえませんし、結局試してみないと有効かどうか判断できない。
一発勝負でサイト引越するのはお勧めできません。
レンタルサーバーにサブディレクトリを作って、そこに別のWordPressを動かすことも可能ですし、MySqlは複数データベースを作れますし、仮想引っ越しサイトを作って、どんな問題が起こるかを事前に検証してから…というのが絶対条件。
そういう作業を疎ましく思うなら、ブログ専用のサービスに切り替える方が、精神安定上も良いかも。