今まではWordpressをサイト毎にインストールしていたのを、サーバーの移行を機会に、マルチサイト・マルチドメイン管理に移行することにした。調べてみると、Wordpressの投稿内容にはフルパスのURLが含まれているため、古いURLを.htaccessを変更してリダイレクトするか、SQLデータベースの内容を更新する必要があることが分かった。「hijiriworld web」にドメイン変更を伴うサーバ移行手順が詳しくあるので、これを参考にしながら以下の手順で移行を行った。

1. サーバにサブドメインを追加

cPanelを使ってサブドメインを追加。通常ドキュメントルートはサブドメイン名のディレクトリになるが、ここではWEBのルートディレクトリを指定する。

Subdomain-cpanel

2. マルチサイト・マルチドメインでWordPressをルートにインストール

こちらのサイトなどを参考にインストール。

3. メインサイトの動作確認とサブサイトの追加と動作確認

インストールが終了したら、メインドサイトの動作を確認し、さらにサブサイトを追加し、管理者も追加し、こちらの動作も確認しておく。

4. 旧SQLデータベースをエクスポート

phpMyAdmin を使って旧サイトのSQLデータベースの wp_options 以外のテーブルをSQLデータでエクスポート。あるいは全データをエクスポートして、適切なテキストエディタで wp_options の部分を削除しても良い。
このとき、使用しない(あるいは再設定する)プラグインのテーブルも削除しておいた。

phpMyAdmin_export

5. 新SQLデータベースのテーブルを空にする

新しいSQLデータベースのテーブル中で不要なものを削除する。マルチサイトでない場合は wp_options の部分を残しておけば良いが、マルチサイトの場合はそれ用の設定部分も残す必要がある。また、サブサイト用の設定が wp_2_options となっていることから分かるように、サブドサイトのデータベースのプレフィックスは、メインサイトのプレフィックス(例えば”wp_”)にサイ ト番号が付加されたもの(例えば”wp_2_”)となるので、これを確認しておく。

ここでは先にプラグインをインストールしてしまった(cpd_counter)のでその設定を残したが、どれを残さないといけないのか分かりにくいのでプラグインのインストールは後からやった方が良い。

Kept-SQL-entries

6. エクスポートしたデータ内のドメインを修正

エクスポートしたSQLデータ内に含まれる旧サイトのURL及びディレクトリパスを新サイトのものに、またデータベースのプレフィックスを新規データベースに、置換する。

メ インドメイン名を変更していない場合は、サブディレクトリで与えられていた旧URLを、例えば http://myweb.com/blog を http://blog.myweb.com といったように置き換える。この際、ドメイン名を含むURLは検索で一括変換しやすいが、ドメイン名を含んでいないディレクトリパスもあるので見逃さない ように注意して置き換えを行う。

サブサイトのプレフィックスは旧サイトのプレフィックスとは多分一致しないので、忘れず置換が必要。ま た、wp-content/upload の下のファイルは、サイト番号が2の場合、 wp-content/uploads/sites/2 の下に格納されるようになるので、そのようにパスを変更する必要がある。

7. SQLデータをインポート

phpMyAdminのインポート機能を使って修正したSQLファイルをインポート。インポートはメインサイトとサブサイトの二回行う。サブサイトが複数個ある場合は更にインポートする。

phpMyAdmin_import

8. ファイルの移動

メインサイトの wp-content/uploads フォルダの下にあるフォルダ・ファイルを全て新サイトの wp-content/uploads フォルダの下に移動またはコピーする。サブサイト(サイト2)は、 wp-content/uploads/sites/2 フォルダに移動またはコピーする。コピー後のディレクトリ構造は例えば以下のようになる。

wp-content

9. テーマ・プラグインの再インストールと再設定

使用するテーマ、プラグインを再インストールし、Wordpressと合わせて再設定を行って完了。

10. URLのリダイレクトの設定

必要に応じて、旧URLを新URLにリダイレクトするように設定。.htaccessで行う場合は、以下の用に一行足しておく。(旧サイトhttp://myweb.com/blog/ を、新サイト http://blog.myweb.com/ にリダイレクトする場合)

Redirect permanent /blog/ http://blog.myweb.com/

以上の手順で移行を完了。動作に問題があるかどうかは今後検証していく。