コンテンツへスキップ

WordPress のサイトを分割する(WP のサイトを複製する。)

概要

メモブログでかれこれ2年くらい投稿してきましたが、だんだんテーマが増えたりして気が付くとジャンルに統一感がなくって来た。というか、分けたくなった。

今回は、zapping.beccou.com 内の仕事関連の検証記事を別のURL「test.beccou.com」に引っ越したいと思っています。(SEO は度外視です。そもそも意識するほど上がっていないし。。。)

方法としては、シンプルにzaping のコピーサイトを作成し、それぞれで記事の内容を調整します。

図1: サイトを複製する際の構成イメージ。ドメイン→サブドメイン→公開フォルダ→データベースという階層になっている。
図1: サイトを複製する際の構成イメージ。ドメイン→サブドメイン→公開フォルダ→データベースという階層になっている。

WordPress をWEB 上にを複製するには、「新しいURL」が必要です。
これはサブドメインを増やせばOKです。
次にWordPress の本体となるフォルダが必要になりますが、大体サブドメインとセットでドキュメントルート的なフォルダが作成されるはずです。
(上の図では「公開フォルダ」が相当します。)
最後にWordPress の記事やもろもろが保存される「データベース」が必要です。
※データベースを追加出来れば簡単ですが、追加できない場合はテーブルのセットの接頭辞を変更して複製します。(WordPress はデータベースのテーブルの接頭辞で自分が使用するテーブル区別してます。)

以下はサイトの分割(複製)を実施した時のものです。
何かの参考になれば幸いです。
※ロリポップレンタルサーバー上で実施しています。

手順

WEB サイト上のデータを触るので、事前にローカル環境で検証をしておきます。

コピー元のサイトを「ソースサイト」、コピー先のサイトを「コピーサイト」と表現します。

  1. ソースサイトの構成データを抽出する。
    1. データベースのエクスポート
    2. WordPress インストールフォルダ(公開フォルダ)をダウンロード
  2. サイトの複製
    1. 新サブドメイン(新URL)作成
    2. 抽出したソースサイトのデータを新サブドメインへコピー
      1. ソースサイトの公開ファルダをコピーサイトの公開フォルダへアップロード
      2. 新しくデータベース を新規作成して、ソースサイトからエクスポートした内容をインポート
    3. コピーサイトの設定ファイルを編集

コピーするサイトのデータを抽出する。

ソースサイトのデータを別のURL 上で再構築する為に抽出します。手順はバックアップと同じです。
データベース(以下DB)とWordPress(以下WP)インストールフォルダをローカルに保存します。

図2: 複製元(ソースサイト)側の公開フォルダとデータベースの位置を示した図。
図2: 複製元(ソースサイト)側の公開フォルダとデータベースの位置を示した図。

データベースのエクスポート

まずはDB の内容を抽出します。
※対象のデータべース名と、テーブルの接頭辞はWP インストールフォルダ内「wp-config.php」ファイルの設定値で確認できます。

WP で使用しているデータベースへ接続します。

ロリポップの場合、以下のような操作です。

(ユーザーページ左側メニューの)サーバーの管理・設定 ▼ >データベース をクリックし、
画面の右側から、対象のデータベース欄にある「操作する」ボタンをクリックします。

図3: ロリポップの管理画面。データベース一覧から「操作する」ボタンでphpMyAdminを開く。
図3: ロリポップの管理画面。データベース一覧から「操作する」ボタンでphpMyAdminを開く。

「phpMyAdmin を開く」ボタンをクリック。

図4: データベースの詳細画面。「phpMyAdminを開く」ボタンからエクスポート作業へ進む。
図4: データベースの詳細画面。「phpMyAdminを開く」ボタンからエクスポート作業へ進む。

ユーザー名とパスワードを入力して、対象のサーバーを選択し、「実行」ボタンをクリックしてログインします。

図5: phpMyAdminのログイン画面。
図5: phpMyAdminのログイン画面。

データベースの管理画面にログイン出来たら、左側のツリーから「データベース名」を選択します。

エクスポートタブを使用して、データベースをエクスポートします。
(そのまま実行を押せば、指定したデータベース内のすべてテーブルがファイルにエクスポートされます。)

図6: phpMyAdminのエクスポートタブ。フォーマットはSQLのまま「実行」でエクスポートする。
図6: phpMyAdminのエクスポートタブ。フォーマットはSQLのまま「実行」でエクスポートする。

複数のテーブルセットが存在する場合、「詳細」にチェックをいれて、任意のテーブルセットのみをエクスポートできます。

図7: エクスポートするテーブルを詳細オプションですべて選択している画面。
図7: エクスポートするテーブルを詳細オプションですべて選択している画面。

ファイルを保存したら、データベースのエクスポートは完了です。

図8: エクスポートしたSQLファイルを保存するダイアログ。
図8: エクスポートしたSQLファイルを保存するダイアログ。

公開フォルダ(WP インストールフォルダ)をダウンロード

WP のインストールフォルダの中身を丸ごとダウンロードします。
FTP クライアントを使用してサーバーに接続し、対象のフォルダをダウンロードします。

図9: FFFTPでロリポップのFTPサーバーへ接続するホスト一覧画面。
図9: FFFTPでロリポップのFTPサーバーへ接続するホスト一覧画面。

WP インストールフォルダの内容をすべてダウンロード。
※この手順の難しいところは、「ダウンロードしたデータがエラーなくすべてダウンロードされたかをどう担保するか。」だと思います。

図10: FFFTPで公開フォルダのファイル一覧を表示したところ。
図10: FFFTPで公開フォルダのファイル一覧を表示したところ。

FTP クライアントからサーバーに接続する方法は、各レンタルサーバーでマニュアルが用意されている(はずです)ので、そちらを参照します。

ロリポップの場合、
ユーザー設定 >アカウント情報の「■ サーバー情報」の欄でログイン情報が確認できるようになってました。
また、詳しい手順書も用意されていました。(「各種FTPソフトの設定方法」でマニュアルを検索すると出てくると思います。)

上記のダウンロードがすべて完了したらソースサイトからのデータ抽出は終了です。

サイトを複製

抽出したソースサイトのデータを使用して、新URL 下で再構築します。

新サブドメイン(新URL)作成

複製先となる、新URL を作成します。
(以降、このサイトを「コピーサイト」と呼びます。)

図11: 複製先(コピーサイト)側の公開フォルダとデータベースの位置を示した図。
図11: 複製先(コピーサイト)側の公開フォルダとデータベースの位置を示した図。

操作としては、新しいサブドメインと、それに対応するフォルダを作成します。

サブドメイン設定画面で新規の「サブドメイン」を作成。
ドキュメントルートになる「公開(アップロード)フォルダ」を設定します。

図12: ロリポップのサブドメイン設定画面。新しいサブドメイン「test」を作成する。
図12: ロリポップのサブドメイン設定画面。新しいサブドメイン「test」を作成する。

抽出したソースサイトのデータを新サブドメインへコピー

ソースサイトの公開ファルダを、
コピーサイトの公開フォルダへアップロード

ダウンロードしたソースサイトの公開フォルダのデータを、そのままコピーサイトの公開フォルダへアップロードします。

アップロードが完了した時点で、コピーサイトのURL へアクセスすると、ソースサイトと同じページが表示されるはずです。
しかしこの時点では、ソースサイトとコピーサイトで同じデータベースのテーブルを共有している状態です。

また現時点では、記事をクリックして遷移すると、以前のURL のページへ移動してしまいます。

別のサイトとして使用するには、専用のデータベースの割り当てと、URL 設定を変更する必要があります。

DB を新規作成して、インポート

コピーサイトが使用する(今後データを書き込む先の)、データベースを作成します。

図13: 新しく作るデータベース(DB2)の位置を示した図。
図13: 新しく作るデータベース(DB2)の位置を示した図。

ここで「データベース」自体が作成できると簡単です。
WP へデータベースを指定する際は、データベース名と接頭辞で指定するので、データベース名を変更出来れば、接頭辞はそのままで使用できるからです。

図14: データベースを追加する方式の構成イメージ。ソースとコピーでそれぞれ別のデータベースを使い、テーブル接頭辞は同じにする。
図14: データベースを追加する方式の構成イメージ。ソースとコピーでそれぞれ別のデータベースを使い、テーブル接頭辞は同じにする。

データベースを新作できない場合は、別の接頭辞のテーブルとして複製して、接頭辞で参照先のデータベースを指定する方法になると思います。

接頭辞の変更とか、面倒くさいです。

図15: テーブル接頭辞を変更する方式の構成イメージ。同じデータベース内で接頭辞だけ変えてソースとコピーを分ける。
図15: テーブル接頭辞を変更する方式の構成イメージ。同じデータベース内で接頭辞だけ変えてソースとコピーを分ける。

今回はデータベースを新作できたので、その手順で進めています。
せっかくなのでテーブル名(接頭辞)も変更しています。

データベース作成ボタンをクリックして、
作成するサーバーと、新しいデータベース名、接続の為のパスワードを入力、
「作成」ボタンをクリックしたら完了です。

図16: ロリポップでデータベースを新規作成する画面。
図16: ロリポップでデータベースを新規作成する画面。

データベースが増えました。

図17: データベースが1つ増えて2つになったことを確認する画面。
図17: データベースが1つ増えて2つになったことを確認する画面。

新しく作成したデータベース欄の「操作する」ボタンから、管理画面(phpMyAdmin)を開きます。

テーブル名をクリックして、インポートタブを選択、
ソースサイトのDB からエクスポートしたファイルを指定して、インポートを実行します。

図18: phpMyAdminのインポートタブ。エクスポートしたSQLファイルを新しいデータベースへアップロードする。
図18: phpMyAdminのインポートタブ。エクスポートしたSQLファイルを新しいデータベースへアップロードする。
図19: インポートを実行するボタン。
図19: インポートを実行するボタン。

インポートが完了したら、次にURL を設定しているテーブルの値を変更します。
この操作で、サイトのURL が変更されます。

図20: インポート完了後のテーブル一覧。wp1_接頭辞のテーブルが14個作成されている。
図20: インポート完了後のテーブル一覧。wp1_接頭辞のテーブルが14個作成されている。

検索タブから、サイトのURL を完全一致で検索。

図21: phpMyAdminの検索タブで、サイトのURLを完全一致で検索する。
図21: phpMyAdminの検索タブで、サイトのURLを完全一致で検索する。

検索結果が表示されました。
この「wp1_options」のテーブルを開きます。

「表示」をクリック。

図22: 検索結果。wp1_optionsとwp1_usersにヒットしている。
図22: 検索結果。wp1_optionsとwp1_usersにヒットしている。

表示タブに遷移し、そのテーブル内でヒットした値がリストされます。
オプション名「siteurl」と、「home」の値を新URL で書き換えます。
ダブルクリックすると編集できます。

図23: wp1_optionsテーブルのsiteurlとhomeの値を新しいURLに書き換えているところ。
図23: wp1_optionsテーブルのsiteurlとhomeの値を新しいURLに書き換えているところ。

新URL の値に変更したら、URL 設定の変更は完了です。

図24: siteurlとhomeの値が新しいURL(test.beccou.com)に変更された。
図24: siteurlとhomeの値が新しいURL(test.beccou.com)に変更された。

設定ファイルを変更

現状では、test.beccou.com はまだソースサイトのデータベースを参照しています。
インストールフォルダ内の「wp-config.php」を修正して、新しいデータベースを参照する様に設定します。

FTP を使用して新サブドメイン(新URL )の公開フォルダにアクセスします。

ロリポップの場合、
(ユーザーページ左側メニューの)サーバーの管理・設定 ▼ >ロリポップ!FTP をクリックして接続できます。

図25: ロリポップのFTPで公開フォルダ内のファイル一覧を表示したところ。
図25: ロリポップのFTPで公開フォルダ内のファイル一覧を表示したところ。

ソースサイトの公開フォルダのデータをアップロードしたフォルダ(新URL の公開フォルダ)へ移動し、「wp-config.php」ファイルを開きます。

以下の箇所を見つけ、
コメントにしたがって4か所、設定を修正します。

図26: wp-config.phpを編集し、データベース名・ユーザー名・パスワード・ホスト名を新しいデータベースの情報に書き換える。
図26: wp-config.phpを編集し、データベース名・ユーザー名・パスワード・ホスト名を新しいデータベースの情報に書き換える。
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '<新しいデータベース名(※1)>');
/** MySQL データベースのユーザー名 */
define('DB_USER', '<データベースに接続するユーザー名(※2)>');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', '<ユーザー名とパスワード(※3)>');
/** MySQL のホスト名 */
define('DB_HOST', '<データベースサーバーのホスト名(※4)>');

※1:データベースを新規作成した画面の「接続するサーバー」の名前
※2:データベース名
※3:接続パスワード

図27: テーブル接頭辞を変更する方式でも、あらかじめ新しいデータベースを作成しておく画面。
図27: テーブル接頭辞を変更する方式でも、あらかじめ新しいデータベースを作成しておく画面。

※4:データベース管理画面のユーザー名

図28: データベースが2つになったことを確認する画面。
図28: データベースが2つになったことを確認する画面。

編集内容を保存し、反映された時点でコピーサイトが別のサイトとして使用可能になっているはずです。

せっかくなので、テーブルの接頭辞も変更。(ダメ押し)

ダメ押しでテーブルの接頭辞を変えておく。

ほんとに参照先が変わっているか、不安なのでテーブルの接頭辞も変えました。
(論理的に考えて不要な手順ですが、検証もしていますし、せっかくなので。)

phpMyAdmin でデータベースに接続し、左側のツリーでデータベース名をクリックします。

テーブルが表示されたら、リネームするテーブルをすべて選択(チェックをつける)します。

画面下の「チェックしたものを:▼」をクリックし、メニューから
「テーブル名の接頭辞を付け替える」を選択します。

図29: phpMyAdminでテーブルを全選択し、「テーブル名の接頭辞を付け替える」を選択する。
図29: phpMyAdminでテーブルを全選択し、「テーブル名の接頭辞を付け替える」を選択する。

付け替え元(リネームする部分)、付け替え先(リネーム内容)を入力し、「実行する」をクリック。

図30: 付け替え元「wp1」、付け替え先「wp3」を入力して実行する。
図30: 付け替え元「wp1」、付け替え先「wp3」を入力して実行する。

接頭辞が置き換えられたことを確認します。

図31: 接頭辞がwp3に置き換わったテーブル一覧。
図31: 接頭辞がwp3に置き換わったテーブル一覧。

これだけの変更では、ダッシュボードに接続できないなどの不具合が発生します。まだ値として「wp1」を保持している個所を探して、編集します。

検索タブにて、「wp1」を検索。

図32: 接頭辞変更後も残っている「wp1」の値をデータベース内で検索する。
図32: 接頭辞変更後も残っている「wp1」の値をデータベース内で検索する。

検索結果は、プラグインの状況などで変わってきますので、結果を開いて値を確認し、WordPress の設定に関係しそうなものは編集していきます。

この辺りは検証環境を使用して挙動に問題が出ないかをテストした方がいいと思います。

wpX_options テーブルのoption_name の値「<接頭辞>user_roles」は、ネットでも変更必須となっていますね。

図33: wp3_optionsテーブルのoption_name「wp3_user_roles」の値を修正したところ。
図33: wp3_optionsテーブルのoption_name「wp3_user_roles」の値を修正したところ。

wpX_usermeta テーブルの「meta_key」の値も編集するのが良いと思われます。

図34: wp3_usermetaテーブルのmeta_keyの値もwp3接頭辞に書き換えているところ。
図34: wp3_usermetaテーブルのmeta_keyの値もwp3接頭辞に書き換えているところ。

変更前のURL が残っている個所の修正

ブログ内で使用している画像へのリンクなど、DB 上に直接URL が書き込みされているものが多くあります。

図35: データベース内検索で、サイトのURLを検索するテーブルを選択しているところ。
図35: データベース内検索で、サイトのURLを検索するテーブルを選択しているところ。

図36: 「zapping.beccou.com」の検索結果。複数のテーブルに大量のヒットがある。
図36: 「zapping.beccou.com」の検索結果。複数のテーブルに大量のヒットがある。

URL で該当するテーブルを検索して、置換するSQL を実行します。

※UPDATE テーブル名 SET post_カラム名=REPLACE(カラム名,"変更前の文字列","変更後の文字列");
UPDATE wp3_posts SET post_content=REPLACE(post_content,"https://zapping.beccou.com","https://test.beccou.com");
図37: SQLタブで、post_contentのURLを一括置換するUPDATE文を入力したところ。
図37: SQLタブで、post_contentのURLを一括置換するUPDATE文を入力したところ。

図38: UPDATE文を実行し、3150行が置換されたことを示す結果。
図38: UPDATE文を実行し、3150行が置換されたことを示す結果。

確認

新URL にアクセスして確認します。

新しいURL でアクセスできる。

図39: 新しいURL(test.beccou.com)でトップページにアクセスできることを確認。
図39: 新しいURL(test.beccou.com)でトップページにアクセスできることを確認。

投稿記事へ遷移しても、URL を維持している。

図40: 投稿ページに遷移してもURL(test.beccou.com)が維持されていることを確認。
図40: 投稿ページに遷移してもURL(test.beccou.com)が維持されていることを確認。

ダッシュボードへアクセスできる。

図41: 新しいURLでダッシュボードにもアクセスできることを確認。
図41: 新しいURLでダッシュボードにもアクセスできることを確認。

この後はソースサイトと、コピーサイトで投稿記事の内容で残すもの、削除するものを整理すれば、当初の目的は達成できます。

サイトの複製作業は以上になります。

(Visited 793 times, 1 visits today)
タグ:

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です