概要
Contents
メモブログでかれこれ2年くらい投稿してきましたが、だんだんテーマが増えたりして気が付くとジャンルに統一感がなくって来た。というか、分けたくなった。
今回は、zapping.beccou.com 内の仕事関連の検証記事を別のURL「test.beccou.com」に引っ越したいと思っています。(SEO は度外視です。そもそも意識するほど上がっていないし。。。)
方法としては、シンプルにzaping のコピーサイトを作成し、それぞれで記事の内容を調整します。
WordPress をWEB 上にを複製するには、「新しいURL」が必要です。
これはサブドメインを増やせばOKです。
次にWordPress の本体となるフォルダが必要になりますが、大体サブドメインとセットでドキュメントルート的なフォルダが作成されるはずです。
(上の図では「公開フォルダ」が相当します。)
最後にWordPress の記事やもろもろが保存される「データベース」が必要です。
※データベースを追加出来れば簡単ですが、追加できない場合はテーブルのセットの接頭辞を変更して複製します。(WordPress はデータベースのテーブルの接頭辞で自分が使用するテーブル区別してます。)
以下はサイトの分割(複製)を実施した時のものです。
何かの参考になれば幸いです。
※ロリポップレンタルサーバー上で実施しています。
手順
WEB サイト上のデータを触るので、事前にローカル環境で検証をしておきます。
コピー元のサイトを「ソースサイト」、コピー先のサイトを「コピーサイト」と表現します。
- ソースサイトの構成データを抽出する。
- データベースのエクスポート
- WordPress インストールフォルダ(公開フォルダ)をダウンロード
- サイトの複製
- 新サブドメイン(新URL)作成
- 抽出したソースサイトのデータを新サブドメインへコピー
- ソースサイトの公開ファルダをコピーサイトの公開フォルダへアップロード
- 新しくデータベース を新規作成して、ソースサイトからエクスポートした内容をインポート
- コピーサイトの設定ファイルを編集
コピーするサイトのデータを抽出する。
ソースサイトのデータを別のURL 上で再構築する為に抽出します。手順はバックアップと同じです。
データベース(以下DB)とWordPress(以下WP)インストールフォルダをローカルに保存します。
データベースのエクスポート
まずはDB の内容を抽出します。
※対象のデータべース名と、テーブルの接頭辞はWP インストールフォルダ内「wp-config.php」ファイルの設定値で確認できます。
WP で使用しているデータベースへ接続します。
ロリポップの場合、以下のような操作です。
(ユーザーページ左側メニューの)サーバーの管理・設定 ▼ >データベース をクリックし、
画面の右側から、対象のデータベース欄にある「操作する」ボタンをクリックします。
「phpMyAdmin を開く」ボタンをクリック。
ユーザー名とパスワードを入力して、対象のサーバーを選択し、「実行」ボタンをクリックしてログインします。
データベースの管理画面にログイン出来たら、左側のツリーから「データベース名」を選択します。
エクスポートタブを使用して、データベースをエクスポートします。
(そのまま実行を押せば、指定したデータベース内のすべてテーブルがファイルにエクスポートされます。)
複数のテーブルセットが存在する場合、「詳細」にチェックをいれて、任意のテーブルセットのみをエクスポートできます。
ファイルを保存したら、データベースのエクスポートは完了です。
公開フォルダ(WP インストールフォルダ)をダウンロード
WP のインストールフォルダの中身を丸ごとダウンロードします。
FTP クライアントを使用してサーバーに接続し、対象のフォルダをダウンロードします。
WP インストールフォルダの内容をすべてダウンロード。
※この手順の難しいところは、「ダウンロードしたデータがエラーなくすべてダウンロードされたかをどう担保するか。」だと思います。
FTP クライアントからサーバーに接続する方法は、各レンタルサーバーでマニュアルが用意されている(はずです)ので、そちらを参照します。
ロリポップの場合、
ユーザー設定 >アカウント情報の「■ サーバー情報」の欄でログイン情報が確認できるようになってました。
また、詳しい手順書も用意されていました。(「各種FTPソフトの設定方法」でマニュアルを検索すると出てくると思います。)
上記のダウンロードがすべて完了したらソースサイトからのデータ抽出は終了です。
サイトを複製
抽出したソースサイトのデータを使用して、新URL 下で再構築します。
新サブドメイン(新URL)作成
複製先となる、新URL を作成します。
(以降、このサイトを「コピーサイト」と呼びます。)
操作としては、新しいサブドメインと、それに対応するフォルダを作成します。
サブドメイン設定画面で新規の「サブドメイン」を作成。
ドキュメントルートになる「公開(アップロード)フォルダ」を設定します。
抽出したソースサイトのデータを新サブドメインへコピー
ソースサイトの公開ファルダを、
コピーサイトの公開フォルダへアップロード
ダウンロードしたソースサイトの公開フォルダのデータを、そのままコピーサイトの公開フォルダへアップロードします。
アップロードが完了した時点で、コピーサイトのURL へアクセスすると、ソースサイトと同じページが表示されるはずです。
しかしこの時点では、ソースサイトとコピーサイトで同じデータベースのテーブルを共有している状態です。
また現時点では、記事をクリックして遷移すると、以前のURL のページへ移動してしまいます。
別のサイトとして使用するには、専用のデータベースの割り当てと、URL 設定を変更する必要があります。
DB を新規作成して、インポート
コピーサイトが使用する(今後データを書き込む先の)、データベースを作成します。
ここで「データベース」自体が作成できると簡単です。
WP へデータベースを指定する際は、データベース名と接頭辞で指定するので、データベース名を変更出来れば、接頭辞はそのままで使用できるからです。
データベースを新作できない場合は、別の接頭辞のテーブルとして複製して、接頭辞で参照先のデータベースを指定する方法になると思います。
接頭辞の変更とか、面倒くさいです。
今回はデータベースを新作できたので、その手順で進めています。
せっかくなのでテーブル名(接頭辞)も変更しています。
データベース作成ボタンをクリックして、
作成するサーバーと、新しいデータベース名、接続の為のパスワードを入力、
「作成」ボタンをクリックしたら完了です。
データベースが増えました。
新しく作成したデータベース欄の「操作する」ボタンから、管理画面(phpMyAdmin)を開きます。
テーブル名をクリックして、インポートタブを選択、
ソースサイトのDB からエクスポートしたファイルを指定して、インポートを実行します。
インポートが完了したら、次にURL を設定しているテーブルの値を変更します。
この操作で、サイトのURL が変更されます。
検索タブから、サイトのURL を完全一致で検索。
検索結果が表示されました。
この「wp1_options」のテーブルを開きます。
「表示」をクリック。
表示タブに遷移し、そのテーブル内でヒットした値がリストされます。
オプション名「siteurl」と、「home」の値を新URL で書き換えます。
ダブルクリックすると編集できます。
新URL の値に変更したら、URL 設定の変更は完了です。
設定ファイルを変更
現状では、test.beccou.com はまだソースサイトのデータベースを参照しています。
インストールフォルダ内の「wp-config.php」を修正して、新しいデータベースを参照する様に設定します。
FTP を使用して新サブドメイン(新URL )の公開フォルダにアクセスします。
ロリポップの場合、
(ユーザーページ左側メニューの)サーバーの管理・設定 ▼ >ロリポップ!FTP をクリックして接続できます。
ソースサイトの公開フォルダのデータをアップロードしたフォルダ(新URL の公開フォルダ)へ移動し、「wp-config.php」ファイルを開きます。
以下の箇所を見つけ、
コメントにしたがって4か所、設定を修正します。
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '<新しいデータベース名(※1)>');
/** MySQL データベースのユーザー名 */
define('DB_USER', '<データベースに接続するユーザー名(※2)>');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', '<ユーザー名とパスワード(※3)>');
/** MySQL のホスト名 */
define('DB_HOST', '<データベースサーバーのホスト名(※4)>');
※1:データベースを新規作成した画面の「接続するサーバー」の名前
※2:データベース名
※3:接続パスワード
※4:データベース管理画面のユーザー名
編集内容を保存し、反映された時点でコピーサイトが別のサイトとして使用可能になっているはずです。
せっかくなので、テーブルの接頭辞も変更。(ダメ押し)
ダメ押しでテーブルの接頭辞を変えておく。
ほんとに参照先が変わっているか、不安なのでテーブルの接頭辞も変えました。
(論理的に考えて不要な手順ですが、検証もしていますし、せっかくなので。)
phpMyAdmin でデータベースに接続し、左側のツリーでデータベース名をクリックします。
テーブルが表示されたら、リネームするテーブルをすべて選択(チェックをつける)します。
画面下の「チェックしたものを:▼」をクリックし、メニューから
「テーブル名の接頭辞を付け替える」を選択します。
付け替え元(リネームする部分)、付け替え先(リネーム内容)を入力し、「実行する」をクリック。
接頭辞が置き換えられたことを確認します。
これだけの変更では、ダッシュボードに接続できないなどの不具合が発生します。まだ値として「wp1」を保持している個所を探して、編集します。
検索タブにて、「wp1」を検索。
検索結果は、プラグインの状況などで変わってきますので、結果を開いて値を確認し、WordPress の設定に関係しそうなものは編集していきます。
この辺りは検証環境を使用して挙動に問題が出ないかをテストした方がいいと思います。
wpX_options テーブルのoption_name の値「<接頭辞>user_roles」は、ネットでも変更必須となっていますね。
wpX_usermeta テーブルの「meta_key」の値も編集するのが良いと思われます。
変更前のURL が残っている個所の修正
ブログ内で使用している画像へのリンクなど、DB 上に直接URL が書き込みされているものが多くあります。
URL で該当するテーブルを検索して、置換するSQL を実行します。
※UPDATE テーブル名 SET post_カラム名=REPLACE(カラム名,"変更前の文字列","変更後の文字列");
UPDATE wp3_posts SET post_content=REPLACE(post_content,"https://zapping.beccou.com","https://test.beccou.com");
確認
新URL にアクセスして確認します。
新しいURL でアクセスできる。
投稿記事へ遷移しても、URL を維持している。
ダッシュボードへアクセスできる。
この後はソースサイトと、コピーサイトで投稿記事の内容で残すもの、削除するものを整理すれば、当初の目的は達成できます。
サイトの複製作業は以上になります。