すでにシングルインストール(一般的にWordPressはシングルインストール)にて運用中のサイトを、WordPress Multisite内へ移転・統合する方法についての備忘録です。

ここではLightsailについて書いていますが、シングルからマルチへの移転については、他のサーバーでも応用が効く内容かと思います。

ミッション&前提

Lightsailではインスタンスごとに料金が発生します。料金を安く抑えるなら1つのインスタンスで運用する必要があります。すでに独自ドメインなどで複数のブログを運用している人が、Lightsailへお引越しするなら、WordPressのマルチサイトを導入し、1つのインスンタンス内にまとめるのが最安です。

やりたいこと

  • WordPressですでに運用しているシングルインストール(一般的に通常、WordPressはシングルインストール)されたWEBサイトを、マルチサイトの一部として移転・統合したい。
  • 常時SSL(https)化させる。
  • 公式ではWordPressのエクスポート&インポート機能を使って移転する方法を薦めているが、今回はあくまでもFTPなどを使いごっそりと移転させたい。

設定における前提

  • Lightsailでインスタンス作成→WordPress Multisiteでインストール済み
  • インスタンスは静的IPを作成しアタッチ済み
  • 設定例として、インストールした際の親サイト(プライマリー)のドメインを「example.com」とする。
  • 設定例として移転したいWordPressのシングルサイトは以下の通りとする。
    ■ブログ名「わかるブログ」
    ■URL「wakaru.domain」
  • 移転前にすでにSSL対応が完了しているサイトであるとする(SSLに関しての設定がないなら無視してOK)
  • サイトネットワーク自体が「Really Simple SSL」でSSL化できる状態にある
  • サイトネットワーク管理のプラグインに「WordPress MU Domain Mapping」をインストール済&設定可能状態である

マルチサイトへの統合で強制的に変更になる部分

下記は初心者には難しい部分ですが、3つめの投稿者の設定を除いて、変更になる部分もあるということだけ理解しておけばOKです。

  • 移転後は実質子サイトになるため、裏側ではURLが変更になっている(あまり気にしなくてもよいが、一部プラグインなどによって再設定が必要なケースもあるそう)
  • uploadsディレクトリのパスが「uploads/site/site_id」に変更になる。(id部分はマルチサイトで設定されたidナンバー)こちらも一部プラグインのために手動で変更しなければならない可能性がある。
  • 投稿者の設定(usersとusermeta) が、マルチサイトの親サイトに統合されるため、再設定が必要。投稿者が多い場合は、再設定が少々面倒。そもそも投稿者が多いサイトであるなら、個別でインスタンス立ち上げてシングルで運用したほうが問題が少ない。

移転先の受け入れ準備

マルチサイトに新規サイトを追加

まず移転先であるLightsailにインストールしたWordPress Multisiteから「サイトネットワーク管理」→「サイト」から「新規追加」でサイトを追加します。

Lightsail WordPress 独自ドメイン 複数ブログ設定

○サイトアドレス
移転の受け入れ先を立ち上げる際は「○○○.example.com」といった、サブドメインの形で作成し、あとから独自ドメインを紐付け。

サブドメインは自分がわかればOKです。移転したいブログの独自ドメインは「wakaru.domain」なので、わかりやすいように「wakaru」をサブドメインとして、サイトアドレスに指定。

○サイトのタイトル

移転するブログのタイトルを入れておけばOK。変更してもよいです。

○サイトの言語

特に変更する必要はありません。

○管理者メールアドレス

移転するブログのメインの管理者と同じアドレスにするほうが効率が良いです。

マルチサイトのサイトネットワークにすでに登録されているアドレスであれば、そのアカウントと紐づきます。サイトネットワークに登録されていないアドレスなら、新規ユーザーとして作成される。

ここで指定したアドレスのユーザーが特権管理者になるため、管理者以外のアドレスを指定しない。できれば事前に「サイトネットワーク管理」→「ユーザー」で特権管理者のユーザーIDを作成しておくと楽です。

必要項目を記入したら「サイトを追加」で新規サイトを追加する。

新規サイトのIDナンバーを把握しておく

確認方法はいくつかありますが、「サイトネットワーク管理」→「すべてのサイト」で、設定した子サイトのURLの部分にマウスオーバーすればURLが表示されるので、その末尾の数字が子サイトのIDナンバーとなります。

例)「https://example.com/wp-admin/network/site-info.php?id=2」の場合は、IDナンバーは「2」

今回は上記例の通り、IDナンバーが「2」として進めます。

移転元のWPのデータベースを書き出す

移転したいシングルサイトのWordPressのデータベース(MySQL)エクスポート(ダンプ)する。

一般的なサーバーならphpMyAdminが使われていると思われるので、phpMyAdminを使ってMySQLデータベースをエクスポートします。

今回は複数ブログを運用している場合の話です。そのため、移転前のサーバーでも複数ブログを運用している可能性が大で、データベースも複数存在するケースがほとんどです。

移転したいブログで使っているデータベースが、どのデーターベースであるかwp-config.phpなどを参照して確認し、正確にエクスポートしてください。

■エクスポートから除外するもの

・絶対的に除外
○○_users、○○_usermeta

・除外したほうがエラーが少ない
○○_links、○○_options

・コメントを移行しなくてよい場合
_commentmeta、_comments

上記はこだわりが無いなら、6個すべて除外したほうがエラーが少なくて安心です。6個すべて除外してインポートした後に、足りないってなった場合は。linksやoptionsも加えて再エクスポート→再インポートすると安全です。

■生成オプションの追加コマンド

「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加する」にチェックを入れます

WordPress シングルからマルチ移転 MySQL書き出し

上記内容確認して、データベースをエクスポートしてください。

データベースの一部を修正する

エクスポートでダンプしたMySQLデータベースを、移転先の設定に合わせ、テキストエディターにて修正を加えます。具体的には下記2つの修正をおこなってください

1.「uploads」フォルダの位置を移転先のサイトIDナンバーとともに置き換え修正

先ほど調べた新規サイトのIDナンバーはここから必要になります。※ここでは「2」とします。

旧)/wp-content/uploads/

新)/wp-content/uploads/sites/2/

2.接頭辞「`wp」をIDナンバーとともに置き換え修正

旧)`wp_ もしくは `wp○○_

`wp_2_

※「`」バックティック(バッククオート)を含めると、修正ミスが少ないのでオススメ
【参考】バックティックの入力方法

※「`」を含める方法だと「user_roles」の項目でエラーが起きてしまうことがあります(これが起きると、管理者権限などを付与できなくなる)。「`」を含めない検索も実行し、修正ミスがないか再度確認。

※「wp_」or「wp○○」がデータベース内に複数存在するケースの場合は、phpMyAdminでpostsあたりの中身を確認して、どれが必要なものなのかを確認し、正しく書き出す。(筆者は同じデータベース内に2つあって、古い方がまるごといらなかった)

※URLの変更がある場合はURLも変更。今回は独自ドメインのサイトをそのまま移転するので変更なし。もしURLの変更がある場合は該当箇所をすべて置き換え修正します。

修正したDBをインポート

移転元でエクスポートし修正したMySQLデータベースを、移転先であるLightsailへとインポートします。

LightsailでもphpMyAdminが使えます。ただし、少しクセがあります。phpMyAdminへのアクセス方法は、下記リンクを参考にしてください。

LightsailのphpMyAdminのURLは以下の通り、インスタンスのパブリックIPを使います。

http://パブリックIP/phpMyAdmin

移転先であるLightsailのphpMyAdminにアクセスしたら、先ほど修正したMySQLデータベースをインポートします。

インポートは特別難しいことはありませんが、データベースはとても繊細なので慎重に。

phpMyAdmin インポート

アクセスした移転先(Lightsail)側のphpMyAdminで右側の項目の中から「bitnami_wordpress」を選択。

左側の上部にある「インポート:タグをクリック、「インポートするファイル」の項目で修正したMySQLのデータベースファイルを指定して、あとは特に何もいじらずに、実行を押すのみです。

正常にインポートできれば「インポートは正常に終了しました。○○個のクエリを実行しました。」との表示がされ、元からあるMySQLに移転元の情報が追加されます(インポート)。

移転先へ必要データをコピー

データベースの準備ができましたので、旧サーバーから移転先であるLightsailのサーバーへFTPで必要なコンテンツデータを移します。LightsailにFTP接続するには少々コツがいります。詳しくは下記を参考にしてください。

テーマとプラグインを移す

FTP接続できたら、旧サーバーのwp-contentから「themas」と「plugins」をフォルダごとダウンロードし、移転先であるLightsailの同じ場所にコピーします。

ただし、Multisiteの「テーマ」「プラグイン」は、サイトネットワーク全体にインストールし共有する仕組みです。すでにインストールされているプラグインがあります。その場合は、あえて上書きしなくてもよいです。

ちなみに移転後はプラグインの再設定が必要になってきます。元の設定や、そもそもプラグインは何を有効にしていたかもこの時点でメモを残しておくとよいでしょう。(サイトネットワークでインストールされたプラグインが全部表示されるのでわからなくなりがち)

可能であれば、移転前にテーマ&プラグインを最新にして、設定などを見直し、移転先のLightsailで事前に最新版のプラグインをインストールしておくと、エラーなどが少なくてよいです。カスタマイズなどを施している場合はリセットされてしまうこともありますので慎重に。

「uploads」データを移す

画像などを含む「uploads」フォルダのデータも、旧サーバーから、移転先であるLightsail側にアップロードしてください。

ただし、ここでも注意が必要です。

Lightsail側に「wp-content/uploads/」のフォルダがありますが、これ自体は親サイトのuploadsフォルダです。追加する新規サイト(子サイト)は、データベースで書き換えた通り、その下の「site」内にある、idナンバーが割り当てられたフォルダです。

つまり移転の流れは、下記のような流れになります。

旧サーバのwp-content/uploads/をダウンロード

Lightsailのwp-content/uploads/sites/2/へアップロード

独自ドメインをLightsailに紐付ける

独自ドメインをLightsailのインスタンスに紐付ける方法は複数あります。最終的に常時SSL化させるために、一番多くの解説にあるのがLightsail内にある「ロードバランサー」を使う方法ですが、月18ドルもかかります。

可能な限り最小金額に抑える方法として、ドメインレジストラが用意しているDNSサービスを利用することにしました。

今回は「お名前.com」でのDNS設定方法です。お名前.comでは基本的なDNSサービスの設定が無料で使えます。お名前.comは有料の“追加DNSオプション”というのものがあり、設定画面のUIのせいで(※後述)無料でDNS設定できないと誤解されやすいのですが、無料でできますので安心を。

設定方法について、このあと触れていきますが、公式ページにも詳細が書いていますので、そちらを参考にするのも良いと思います。

DNS関連機能の設定:DNSレコード設定|お名前.com

他のドメインレジストラを使っている人も、大手のドメインレジストラなら、お名前.comと同様に無料でDNSサービスを用意している会社が少なくありません。サポートで確認してみてください。

ちなみAWSにもドメインサービスの「Route 53」があります。有料ですが非常に安価です。レジストラ側で設定できないケースなどは、こちらを利用する方法で設定すると良いでしょう。

ドメインレジストラのDNSサービスでAレコードを設定

今回は「お名前.com」で取得・管理しているドメインを、お名前.comの無料DNSサービスを使い設定します。

お名前.com Naviにログインして「DNS」タブをクリック→「ドメインのDNS関連機能設定」を選んで「次へ」をクリック→「DNS設定/転送設定-ドメイン一覧」へ遷移してください。

(上記以外にも、「ドメイン設定」のタブ→ネームサーバーの設定の「DNS設定/転送設定」でもたどり着けます)

お名前.com DNS 無料設定 Lightsail 独自ドメイン

ここでよく勘違いしてしまうのが、右側にある「DNS追加オプション」をクリックしてしまうケース。これだと月額100円かかります。「DNS追加オプション」はこのオプションは必要ありません。無料でできます。

設定したいドメインのラジオボタン(左側の丸)を押して「次へ」をクリック。「DNS設定/転送設定-機能一覧」に遷移します。

お名前.com Lightsail 独自ドメイン設定

項目が色々とあって、一見難しいですが、今回設定するのは下記赤枠で囲った「DNSレコード設定を利用する」の項目です。

お名前.com Lightsail 独自ドメイン DNS設定

「設定する」をクリックして、入力画面へ。

お名前.com AWS DNSレコード設定

「DNSレコード設定を利用するドメインは以下のネームサーバーを設定してください」との表示がありますが、あとで自動設定できますので、あらかじめ設定する必要はありません。

そのまま下へ移動すると、設定画面の中腹あたりに、レコード設定の入力タブがあります。

Lightsail お名前.com DNS Aレコード設定

ここで下記Aレコードを追加してください。

  • ホスト名:空欄
  • TYPE:A
  • TTL:3600(特に変える必要ありません)
  • VALUE:Lightsailの静的パブリックIP
  • 状態:有効

入力したら「追加」をクリック。サブドメインの設定や、wwwでのアクセスも考えて、名前のところに「*」と「www」をいれたAレコード計2つもセットしておくと良いです。

入力し追加したものが「追加」の項目に並びますが、まだ設定は完了していません。下へ移動すると「DNSレコード設定用ネームサーバー変更確認」の項目がでてきます。

DNS ネームサーバー お名前 Lightsail

チェックをしたまま設定すれば、前述したネームサーバーの書き換えが行われます。変更しないと今回のAレコードが設定できませんので、チェックしたままにして「確認画面へ進む」をクリック。

DNSレコード設定状況の中身を確認して、IPアドレスなどに間違いがなければ「設定する」のボタンをクリックして、設定を完了させてください。

DNS設定の反映を確認

お名前.comで設定変更しても、インターネット上に反映されているとはかぎりません。正しく反映されたかはWindowsのコマンド・プロンプトやシェル、Macのターミナルなどで確認できます。

「dig ○○○.com」と入れると、ドメイン情報が表示されます。設定したものに変更されていれば、反映済みです。

通常なら数分程度で反映されますが、1時間ほど経過しても反映されない場合は、ターミナルを再起動してみてください。それでも変わってなかったら、設定ミスの可能性があります。お名前.com側の設定を確認しても、特に問題がないということであれば、念のため再設定してみてください。

WordPress MU Domain Mappingでマッピングする

DNSの設定が終わったら、WordPressに移動して、サイトネットワーク管理の「設定」→「Domain Mapping」の「Permanent redirect」を確認。チェックされていなかったら、チェックして「Save」にしてください。

続いて「設定」→「Domains」で、移転したいドメインを設定します。

Site ID、Domainには設定したいドメイン(○○.com)、Primaryのチェックはいれたままにして「Save」して追加します。

ちなみにDomainの表記がでないなど「WordPress MU Domain Mapping」についてつまづいたら、下記リンクを参考に。

サイトアドレスを変更→ネットワークをアップグレ

マッピングが終わったら、サイトネットワーク管理の「サイト」→「すべてのサイト」へいき、設定用のURLをクリック。

サイトを編集で、サイトアドレスを独自ドメインに手動で書き換えて、変更を保存してください。

変更が完了したらサイトネットワーク管理の「ダッシュボード」→「サイトネットワークをアップグレード」でアプグレを実行してください。

サイトネットワークをアップグレード マルチサイトに統合

テーマ・プラグイン・ユーザーの設定

シングルからマルチへの移転に伴い、テーマとプラグインの再設定が必要になります。データの引越しは完了していますが、テーマに関しては「サイトネットワークで有効化」にしないと個別の管理画面で表示されません。サイトネットワークの管理画面であらかじめ、テーマを有効化しておきます。

テーマの細かい設定などはリセットされることがあります。方法はあるのかもしれませんが、再設定しながら見直すのも良いと思います。

またプラグインに関しても、個別の画面で個別に有効化できるものと、サイトネットワーク管理で有効化しないといけないものとあります。複数のブログを設定する場合、全部がサイトネットワークで有効化されるとコンフリクトを起こしてしまう可能性もあるので、これは1つ1つ設定をみていくしかありません。

今回の引越しで手間になる部分です。アクセス解析ツールなども再設定が必要になる場合が大半です。面倒ですが、ここはやっていくしかありません。テーマと同様で、サイト速度をあげるためにここで必要なプラグインの見直しを行うのもよいでしょう。

またユーザーも最初から設定し直しになります。そのため、投稿者の欄も初期ユーザーに全てリセットされます。

ユーザーが1人しかいない場合はそこまで大変ではないですが、ユーザーが複数いる場合は少々やっかいです。引越し前にタグ付けするなどしておけば、楽かもしれません。しかし、複数の人が出入りするWordPressなら前述どおり、個別のインスタンスにし、シングルで立ち上げたほうが良いと思います。

bncertとプラグインで常時SSL化

ここまでくれば残すはSSL化(https)のみです。SEO的にもSSL化させない理由はありません。これも無料で設定が可能です。常時SSL、証明書の自動更新までできます。やり方は下記を参照。

Search Regexで手動の微修正

bncertとSimple SSLで簡単に常時SSL化できますが、Mixed Contet(混合コンテンツ)のために、完璧にSSL対応しないケースがあります。その場合は、下記を参照にして解決させてください。

シングルからLightsailのマルチへのお引越し完了

ここまでの流れで、お引越し完了です。あとは参加サイトの一覧から個別の管理画面に入るか、これまで通りwp-adminなどからログインしてください。

前述した通り、プラグインやテーマのカスタマイズ、パーマリンクの設定あたりを再設定する必要があります。特にパーマリンクの設定は、リセットされると一瞬パニックになりますが、元の設定と同じにすれば通常は元通りなのでご安心を。このあたりはシングルからマルチへ移行する際に面倒なところですね。

これで一応は移転完了ですが、プラグインの「WP Mail SMTP」の設定を行わないと、WordPress側からメールが送信ができません。管理者アドレスの変更や、新規ユーザーの追加ができないことになるので、こちらもセットアップしてください。