サカグチデザインオフィス

ブログ

サーバーの別フォルダにWordPressのテスト環境を作る

WordPressのテスト環境をどう作るかは結構悩みどころだと思います。最近は「All-in-One WP Migration」のプラグインを使用して構築することが多くなりました。

まずはテスト環境を作るいくつかのパターンを取り上げてみたいと思います。

①本番サイトとは全く異なるサーバーに作る

全く異なるサービスのサーバーにテスト環境を作る場合です。当然にサーバー環境が異なるので、いざ、本番サイトにアップしようとした際に、予期せぬエラーが生じたり、移行できない、なんてこともあります。

プログラムのエラー潰しに強い人であればある程度は問題ないと思いますが、それでも少し嫌な感じです。依頼される案件ではなかったり、自分で作ったサイトだったり、ミスしてもリスクが少ない場合に行った方が良いです。

②本番サイトと同じサービスのサーバーに作る

本番サイトと同じサービスのサーバーにテスト環境を作る場合です。本番サイトと同じサービスを簡単に使えるかどうかという条件は出てきますが、レンタルサーバーなどであれば容易にサーバーで試すことが出来ます。

もし、繊細な案件で、サイトを止める時間を最小限にしなくてはならない場合はこの方法がとても有効です。場合によっては有料になりますが、安いテスト用ドメインなどを取得して試すこともあります。

③本番サイトと同じサーバーの別フォルダに作る

本番サイトの別フォルダにテスト環境を作る場合です。レンタルサーバーでも簡単に借りられないものだったり、自社サーバー等で他に利用が出来ない等の場合は、本番環境の別フォルダに環境を作ってテストする場合もあります。

フォルダ構成などが少し変わってしまう場合がありますので注意が必要ですが、これも移行時に止まるなどのリスクが少なくなる方法です。

以前はこの方法が主流だったこともあり、以下はこの記事の本題にもなりますが、その手順を載せています。ちょっと古いプラグインも出てきますが、ご参考になれば。(作業時間の目安およそ60分ほど)

サーバーの別フォルダにテスト環境を作る方法

本番環境でサイトが動いているけど、まだテスト環境が無い場合の方法です。ドメイン直下の「test」というフォルダにテスト環境を作ってみます。

http://hogehoge.jp/test/

ちなみにロリポップ、さくらインターネットで検証済みです。

テスト環境を作る手順

本番環境での作業

  • ① キャッシュ系プラグインを停止
  • ② 最新ファイルをすべてダウンロード
  • ③ データベースをエクスポート

データの加工

  • ④ エクスポートしたデータベースファイルを加工し、テスト用データを作る

テスト環境での作業

  • ⑤ データベースファイルをインポート
  • ⑥ テスト用に加工したファイルをアップロード
  • ⑦ 最終設定をして準備完了

【本番環境での作業】① キャッシュ系プラグインを停止

これをしないとテスト環境なのに本番環境のファイルが出てきたりと大変なことになり、本当にハマります。

ちなみに自分が停止したプラグインは下記です。(※追記 以下古いプラグインですが、主にキャッシュ系のプラグインと考えて頂ければOKです。)

  • DB Cache Reloaded Fix
  • MO Cache
  • WP File Cache(停止してもキャッシュファイルが消えなかったのでプラグインごと削除)
  • WP Super Cache(停止してもキャッシュファイルが消えなかったのでプラグインごと削除)

また、キャッシュ系プラグインの他にも下記も停止しました。

  • Google XML Sitemaps(テスト環境のファイルをGoogleに送信しないように)
  • WordPress Backup (by BTE)、WP-DBManager等のバックアップ用プラグイン

サーバーにFTPなどでログインし、「plugins」フォルダ内の各キャッシュファイルが消えているかを確認してください。(WP Super Cacheのキャッシュファイルはpluginsフォルダ内にはなく、ひとつ上の階層のcacheフォルダ内にあります。)

【本番環境での作業】② 最新ファイルをすべてダウンロード

ダウンロードの前に、もし今まで作業していたローカルフォルダに上書きするならどこかへバックアップしておくことを忘れずに。

そのあと、本番環境にある最新ファイルをすべてダウンロードします。

【本番環境での作業】③ データベースをエクスポート

本番データベースをエクスポートします。レンタルサーバーならサーバー管理画面にデータベースを見るメニューがあると思います。見るツールは大体はphpmyadminだと思います。phpmyadminにログインし、データをエクスポートします。

もしWordPressを複数運用している場合は、どれが該当するテーブルなのかがわからないので、本番のwp-config.phpよりテーブル接頭辞を確認しておきます。

エクスポート時にphpmyadminの生成オプションの追加オプションで「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT コマンドの追加」にチェックしておくと便利です。もともとテーブルがあった場合に一旦削除してから作り直してくれます。

【データの加工】④ エクスポートしたデータベースファイルを加工し、テスト用データを作る

エクスポートしたデータベースファイルはバックアップファイルとして1つコピーして残しておき、テスト用のデータベースファイルを作ります。

テーブルの接頭辞を変更してテスト用のデータベースを作ります。テーブルの接頭辞を変えないと本番のデータを上書きしちゃうので注意。

テーブルの接頭辞をwp_から別のものに変更。例えばtest_wp_など。
(日付とか入れておくと管理しやすいかも「20120101_test_wp_」とか)

「wp_」を「test_wp_」に一括置換

また、URLも変更。

「http://hogehoge.jp」を「http://hogehoge.jp/test」に一括置換  (http://をつけないとメアドとかまで変わっちゃいます。)

その他、サーバーの絶対パスも変えます。 /home/users/1/hogehoge/web みたいな感じのパスです。「recently_edited」とかで検索すると出てくるかもしれません。絶対パスは利用しているサーバーによって変わります。

・「/home/users/1/hogehoge/web」を「/home/users/1/hogehoge/web/test」に一括置換

※プラグインによって他に変更するものもあるかもしれませんので、残りものが無いか、または変な置換していないか、ドメインなどで検索して目視でチェックしてみてください。

※Redirectionプラグインを使っているとredirection_itemsテーブルのURLが’/hogehoge/・・・’となっているので’/test/hogehoge/・・・’と変更が必要になる場合があります。設定している数が少なければ移行後に管理画面から設定しなおすのでもOKです。

【テスト環境での作業】⑤ データベースファイルをインポート

テスト用ファイルが用意できたらphpmyadminでログインしてデータをインポートします。

以上でデータベースの準備は終了です。

【テスト環境での作業】⑥ テスト用に加工したファイルをアップロード

ファイルのダウンロードがすべて終了したら、wp-config.phpをコピーし、リネーム(例えばwp-config_main.php)して本番用としてバックアップ。

wp-config.phpファイル内にあるテーブルの接頭辞を「wp_」から「test_wp_」に変更。

.htaccessをコピーしてリネーム(例えば.htaccess_main)して本番用としてバックアップ。

.htaccessを下記に変更してテスト用にする。

[sourcecode language="plain"]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /test/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /test/index.php [L]
</IfModule>

# END WordPress
[/sourcecode]

※上記内容の他にも記述がある場合、適宜変更の必要があります。

(ここで一旦アップロードする前に、ファイルを整理整頓しておくと良いです。良い機会なので。)

hogehoge.jp/testフォルダに最新ファイルをすべてアップロード

【テスト環境での作業】⑦ 最終設定をして準備完了

  • WordPressの管理画面より、設定のプライバシーから、「検索エンジンによるサイトのインデックスを許可しない。」にチェック
  • sitemap.xmlがある場合は削除
  • google analyticsのタグを外す

以上でテスト環境として十分かと思います。本番環境のキャッシュ系プラグイン等を元に戻しておくことを忘れずに。

※ちなみに「ページが見つからない」などになってしまった場合は、.htaccessに問題があるかもです。

また、ウィジェットが移行されていない場合がありますので、「Widget Importer & Exporter」あたりのプラグインでウィジェットのエクスポート&インポートを行ってください。