Wordpressテスト環境の構築方法について(データベースの複製)
別区画にインストールしたWordpressでは、本番環境のDBを読み込む事はできません。
基本的にDBデータを複製して、optionsテーブルのURLを別区画にあわせる必要があります。
レンタルサーバーによっては同じサーバー内にDBを新設できない場合があります。
Wordpressテスト環境の構築するためには
クライアントのWordpressサイトをデザインリニューアルする場合、通常はテスト環境を準備します。
テスト環境も本番と全く同じサイトデータから始めるのがセオリーですよね。
テスト環境でリニューアルデータの確認をし、問題なければ本番データと差替えます。
Wordpressのテスト環境はHTMLサイトと違って、別ディレクトリにデータをUPすれば済むものではありません。
そこで本記事では、比較的簡単にWordpressのテスト環境を作る方法をご紹介します。
Wordpressシステムの準備
Wordpressの別区画へのインストール
まず最初に、テスト専用のディレクトリ内にWordpressをインストールします。
本番サイトのWordpressが影響を受けない場所、例えば「test/」などを作りその中にもう一つWordpressを入れる訳です。
今はレンタルサーバーのコントロールパネルからWordpressが簡単にインストールできますよね。
インストール時に決める「従来DB or 新規作成DB」や「ログイン情報」は自由にして頂いてOKです。
※この設定は最後には使わなくなるからです。
データファイルの移設
次にテスト環境も本番環境と全く同じにするための準備が必要です。
テーマファイル・プラグインファイル・uploadの画像ファイルなどは全てコピーして、test区画にアップしておきましょう。
漏れの無いように注意が必要です。
本番環境のDB情報を読むとどうなるか?
ここからWordpressで重要となるデータベース(以下:DB)との紐づけに入ります。
私も初心者の事は以下の仮説を考えていました。
テスト区画から同じDBデータを読み込む
WordpressはDBを利用しているから、test区画からも同じDB情報を読み込めば良いのでは?
このように思っていた訳です。
つまりテスト区画のwp-config.phpのDB情報を、本番環境に記載されたDB情報と同じにすれば良いのです。
そうすれば同じDBデータを両方(本番・テスト)のWordpress管理画面から利用できそうですよね。
しかし当り前ではありますが、この方法では上手くはいきません。
1つのDBデータを別区画から利用する事はできない
ログインは確かに本番環境と同じ情報でログインできますが、テスト区画ではなく本番環境の管理画面が表示されてしまうはずです。
サイトを表示させても/testではなく、本番環境がそのまま表示されます。
DBは紐づけられたURLでしか動かない
本番データのDBには、基本情報として「ドメイン名」のURLが紐づけられています。
DBテーブルで言うと、optionsテーブルの「siteurl」や「home」の欄がそれにあたりますね。
今回は別途test区画で構成しようとしていますから、ここが「ドメイン名/test」になっていないと機能しない訳です。
しかしここが本番のままなので、本番Wordpressの管理画面が出ますし表示サイトも本番サイトが出る訳です。
※つまりDBデータは決められたURLでしか動かない事になります。
これで共通のDBデータを複数区画のWordpressから利用する事はできない事がわかったと思います。
データベース自体を複製する
では別区画のWordpressから同じDBデータを読む方法をご紹介します。
簡単に言ってしまえば、DBデータを複製コピーする事になります。
phpMyAdminソフトを活用
phpMyAdminなどのDBソフトが利用できるレンタルサーバーが多いので、そのソフトを使ってコピーしていきます。
phpMyAdminが使える様になれば、DBを複製するのも簡単にできます。
データベースの作成方法
まずはphpMyAdminで複製先となるDBを作成する事になります。
しかし例えばロリポップなどレンタルサーバー会社によっては、DB作成機能に制限を掛けているところがあります。
その場合はphpMyAdminからではなく、レンタルサーバー会社の管理画面からDBを作成する事になります。
あなたの環境もphpMyAdminからDBが作れない場合は、レンタルサーバーの管理画面へ進みましょう。
ロリポップのコントロールパネルからDB作成
下の画像はロリポップコントロールパネルのDB作成画面です。
ここで新しくDBが作成できます。
サーバー:現在選択されているサーバー名のまま
DB名:任意
パスワード:任意
以上の情報でまずはDBを作成しておきましょう。
phpMyAdminでのDBコピー
本番環境のDBサーバーへログイン
新しくDBを作成したら、phpMyAdminを使って本番環境のDBへとログインします。
ログインには本番環境のユーザー名とパスワードとDBサーバー名が必要になります。
これらは全て、本番サイトのwp-config.phpに記載がありますので確認してください。
データベースのコピー方法
ログインしたら左の欄にあるDB名(複数あるかも知れません)から、本番サイトに使っているDB名をクリックします。
するとテーブルの構造が表示されるので、上部に並ぶ「操作」タブを開けましょう。
下に「データベースのコピー先」の欄がありますので、コピー先となるDB名(先ほど作成したDB)を入力します。
「構造とデータ」にマークが付いた状態にし、下のチェック項目はそのままにします。
しかしここで実行してもエラーが出ますので、実行しないで下さい。
問題発生
ここまで操作をしてお気づきの方もいらっしゃるかもしれません。
そうです。先程コントロールパネルから作った新しいDBがこのホスト上に無いのです。
作成したDBが存在しないのでエラーとなるのです。
作成したDBが無い理由
作成したDBが無い理由は明白です。作成したサーバー先が違うのです。
新しいDBは「mysql153.phy.lolipop.lan」サーバーの中に作成されています。
Wordpressのテーブルの入ったサーバーと違うサーバーにDBを作ったため、出てこないのですね。
現在コピー作業中のサーバー:mysql147.phy.lolipop.lan
ロリポップで作ったDBが入ったサーバー:mysql153.phy.lolipop.lan
同じサーバー名でDBが作れる場合と作れない場合がある
しかし先ほどDBを作った時にサーバー名の選択項目を見ましたが、147…はありません。
ですから仕方なく153…で作ったのです。
レンタル会社側が1サーバーあたりのDB数を調整
結論から言うと、ロリポップ側の都合で同じサーバー名の中にDBが作れる時もあれば、作れない事もあるのです。
今回の場合は作る事ができませんでした。
余裕のあるサーバー名のみが表示される
しかし項目の中には前の番号のサーバー名が残っているものもあります。
おそらくDBの数を調整しているため、まだ全体の作成数に余裕があるサーバー名だけが表示されているのだと思います。
つまり時間が経過すればするほど、同じサーバーの中にDBが作れる可能性が低くなる訳ですね。
DBが2つ以上ある場合
ここからはDBの環境に応じたパターンごとに操作していきます。
私の場合は同じサーバー名の中に現在稼働していない別DBがありました。
先ほどエラーになったDBのコピー先に、もう一つのDBを指定して実行します。
これによりDBの中に本番環境と同じテーブル群が生成されます。
optionsテーブルの編集
次に複製した方のoptionsテーブルを探してクリックします。
表示タブでデータの中身が表示されていますので、最上段付近にある以下2つを探します。
・siteurl
・home
それぞれの「ドメイン名」を「ドメイン名/test」へそれぞれ編集します。
各項目の左にある編集ボタンを押すと編集画面が出ますので、適切に変更して「実行」を押しましょう。
wp-config.phpの編集
テスト環境内のwp-config.phpの中で、DB名の部分を変更します。
そこ以外は変更する必要はありません。
サイト確認
これでドメイン名/testで上手くサイトは表示されるはずです。
本番と同じ情報で/testの管理画面にもログインできるはずです。
DBが一つしかない場合
先ほどは別のDBが同じホストサーバーの中にあったのでコピーできましたが、DBが一つしかない場合はどうすべきでしょうか。
ここでは以下2つの方法をご紹介します。
別名にリネームして複製
一番は本番データの構成テーブルを一つずつコピーして、別の接頭語を付けたテーブルへリネームする事です。
少し手間が掛かりますが、同じDB内に接頭語を変えてテーブル群を複製します。
例えばDBの中に10個のテーブルがあったら、接頭語を変えたテーブルが10個増えて合計20個になります。
接頭語を変えたoptionsテーブルのURLを変更
接頭語を変えたoptionsテーブルのURL編集が必要です。
wp-config.php内の接頭語部分を変更
test区画のwp-config.php の「接頭語」欄の編集が必要です。
エクスポートして別ホストへインポート
もう一つの方法としては、別ホストへテーブルデータを移設する事です。
本番のDBデータをエクスポートして、別ホストのDBに丸ごとインポートします。
先ほどの例で言えば、142のホストでテーブル群をエクスポートし、153のホスト内にインポートする訳ですね。
optionsテーブルのURLを変更
インポートしたoptionsテーブルの編集が必要ですね。
wp-config.phpのDBサーバー記述部分を変更
test区画のwp-config.php のDBサーバー情報を、153の情報に書き換えましょう。
まとめ:DBの環境に応じた設定
DBの環境によって変わる、phpMyAdminの操作とwp-config.phpの設定をまとめてみました。
環境 | phpMyAdmin操作 | wp-config.phpの設定 |
---|---|---|
新しいDBが 同じホスト内に作れる場合 |
データベースのコピーを使う | データベース名のみ変更 |
新しいDBが 同じホスト内に作れない場合 |
接頭語を変えてテーブル群を複製 | 接頭語のみ変更 |
別ホストへDBインポート | ホスト名のみ変更 |