マルチサイトのWordPressの子サイトを同サーバーでシングルサイトにする

やりたい事

さくらのホスティングサービスで設置したサブディレクトリ型のマルチサイトのWordPressから子サイトを分離し、URLを変更せずにさくらの同じサーバーにシングルサイトとして独立させる。

状況

  • 以前 https://el-camino-real.com でサブディレクトリ型のマルチサイトを作成した
  • マルチサイトのインストールフォルダは /www/wp/
  • マルチサイトをインストールした時の接頭語は wp
  • 子サイトの https://el-camino-real.com/tech をシングルサイトにしたい
  • シングルサイトにしても同じURLを使いたい
  • WordPressのバージョン マルチサイト 5.1.10  シングルサイト 5.7.2
  • この投稿ではアカウント名を sample としている、URLやフォルダも含めて各自の環境に置き換える事

マルチサイトとシングルサイトのフォルダ構成、データ構造の違い

  • マルチサイトは親サイト+子サイトという構造になっている
  • 親サイトのフォルダ構成はシングルサイトと同じ
  • 子サイトは追加した順番に (子サイト番号) が付与される
  • 子サイトのプラグイン、テーマは親サイトと共有
  • 子サイトのデータは /site/(子サイト番号)/ に保存
  • 親サイトのデータベースはシングルサイトと同じ
  • 子サイトのデータベースは子サイト番号が付与されている
シングルサイト
マルチサイトの親サイト
マルチサイトの子サイト
プラグイン/wp-content/plugins//wp-content/plugins/
テーマ/wp-content/themes//wp-content/themes/
データ/wp-content/uploads//wp-content/uploads/sites/(子サイト番号)/
データベース接頭語のみ
例: wp
接頭語+(子サイト番号)+アンダースコア
例: wp2_
マルチサイト のフォルダ構成
シングルサイトのフォルダ構成

手順

  1. サイトのバックアップ
  2. 子サイト番号の確認、修正
  3. 移行元のデータベースのエクスポート
  4. 移行先のインストール、確認
  5. データベース修正
  6. プラグイン、テーマ、データのコピー
  7. データベースのインポート

1.サイトのバックアップ

  1. さくらのコントロールパネルにログインする
  2. [Webサイト/データ][バックアップ] → [SnapUp] → サーバー選択 → [+スナップショットを追加、作成する]
  • 簡単設定の[バックアップ作成]を使った場合、データベースがバックアップされるか不明なので[SnapUp] を使ったっ方が良さそう

2.子サイト番号の確認、修正

  1. 移行元のWordPressにログインする
  2. [参加サイト][サイトネットワーク管理] → [サイト]
  3. 移行後に移行前と同じURLを使いたい場合、URLを https://el-camino-real.com/tech/ から https://el-camino-real.com/tech1/ に変更する(この変更をすると作業が完了するまで移行元サイトのURLが変わるので注意)
  4. 子サイト番号を確認する。上から1,2,3の順番。1は親サイト、2以降は子サイト。下記の場合 tech の子サイト番号は3

3.移行元のデータベースのエクスポート

  1. さくらのコントロールパネルにログインする
  2. [Webサイト/データ][データベース] → [phpMyAdminログイン]
  3. 左側メニューから移行元データベース(今回は sample_wp) を選択
  4. wp3_ から始まるテーブルと wpusermeta, wpusers を選択
  5. [チェックしたものを:] [エクスポート] → [実行]
wp3_ から始まるテーブル
wpusermeta, wpusers

4.移行先のインストール、確認

  1. さくらのコントロールパネルにログインする
  2. [ホーム] [WordPress インストール]
  3. [データベース作成] → [データベース名] wp2 → [作成する] でデータベースを作る
  4. 必要情報を入力しインストール
  • マルチサイトをインストールする時の接頭語は wp だったが、今回のインストールでは wp_ にした
データベースの設定
WordPressの設定

5.データベースの比較

  1. 移行元と移行先のデータベースの接頭語を比較する
  2. 3.- 5.でダウンロードしたSQLをテキストエディタで開き、下記のように置換して保存する
置換前置換後
接頭語wp3_wp_
wpusermetawp_usermeta
wpuserswp_users
サイトURLhttps://el-camino-real.com/tech1https://el-camino-real.com/tech
  • 今回のケースでは wp_ への置換数は110、 wp_usermeta, wp_users への置換数は各8、https://el-camino-real.com/tech への置換数は2
  • 環境によって増減する可能性はあるがあまりにもかけ離れた数だった場合は要確認
移行元のデータベース1
移行元のデータベース2
移行先のデータベース

6.プラグイン、テーマ、データのコピー

  1. SSHでログインする ログイン方法はこちらを参照
  2. Macの場合はTerminalを開いて ssh sample@example.sakura.ne.jp でログインできる
  3. ログイン後、下記コマンドを実行する -a は日付を保持 -f は強制上書き
cp -a -f /home/sample/www/wp/wp-content/plugins/ /home/sample/www/wp/tech/wp-content/plugins/

cp -a -f /home/sample/www/wp/wp-content/themes/ /home/sample/www/wp/tech/wp-content/themes/

cp -a -f /home/sample/www/wp/wp-content/uploads/sites/3/ /home/sample/www/wp/tech/wp-content/uploads/

7.データベースのインポート

  1. さくらのコントロールパネルにログインする
  2. [Webサイト/データ] [データベース] →  [phpMyAdminログイン]
  3. 左側メニューから sample_wp2 を選択
  4. [全てをチェックする] → [チェックしたものを:] [削除] → [はい]
  5. [インポート] →  [Choose File] 5.-2.で作成したファイルを選択 →  [実行]
  • これで移行後サイト https://el-camino-real.com/tech/ がシングルサイトとしてアクセス可能になる
  • WordPressのバージョンが上がっている場合、wp-admin アクセス時にデータベースの更新を促される
  • 管理者アカウントとパスワードは移行前と同じ(4.-4.で設定した管理者アカウントとパスワードは使えない)
  • 移行前のサイトは https://el-camino-real.com/tech1/ からアクセス可能

失敗した場合

  • 移行途中で失敗してしまった場合、WordPress を削除してからデータベースを削除する
  1. さくらのコントロールパネルにログインする
  2. [Webサイト/データ] [インストール済み一覧] →  [アンインストール] → [OK]
  3. [Webサイト/データ] [データベース]  → sample_wp2 横の [削除] → [OK]
  • どうにもならなくなったら、1.で作成したバックアップをリストアする
  1. さくらのコントロールパネルにログインする
  2. [Webサイト/データ] → [バックアップ] → [SnapUp] → サーバー選択 → スナップショットを選択 →  [本番サーバーへリリース]