WordPressのテスト環境を作る方法(ドメイン変更・サーバー引越しにも使える!)

ネットショップ制作が私のふだんの仕事ですが、お付き合いのあるお客様にはブログで情報発信している方も多く、WordPress(ブログサイト)のカスタマイズを依頼されることがあります。
その場合でも、ダッシュボード内の作業だけでコーディング不要ということもあります。WordPressのダッシュボードだけで、いろいろな箇所を更新できますよね。

WordPressの大規模なカスタマイズの場合は、本番サイトを停止してのんびり作業する訳にもいきません。直接いじって崩れたサイトを見せるのもマズいです。
ということで、本番サイトをコピーしたテスト環境を構築し、そちらで作業し、完成後にデータ移行することになります。

知っておくと便利な知識なので備忘録代わりに、テスト環境を作る手順を紹介します。
テスト環境を構築する以外にも、ドメイン変更やサーバーやの引っ越しの場合も応用できます。

WordPressでテスト環境を作る手順

0. 環境の前提条件

old-domain.com直下にwordpressというディレクトリがあり、WordPressがインストール済み。
old-domain.com(ルートディレクトリ)にアクセスすると、WordPressサイトを開く設定になっています。

new-domain.com直下のwordpressというディレクトリにコピーします。

上記のような環境の場合、ファイルやデータベースに含まれるコピー元のドメインを、コピー先のドメインへ変更する必要があります。

順番に解説していきますので、ドメインは各自の環境に読み換えて作業してください。

1. WordPressのデータをバックアップ

WordPressのデータは、ファイルとデータベースがあります。移行する際は、この二つをコピーします。
慣れていれば手動でも作業できますが、ここではプラグインを使う簡単な方法を紹介します。

WordPressプラグインのBackWPupを使います。
入っていなければ、WordPressのサイドメニューのプラグインから「新規追加」してください。



インストール後、WordPressのサイドメニューから、BackWPup>ジョブ
登録しているジョブがなければ、「新規追加」。デフォルトの設定で追加してOKです。

ジョブIDにカーソルを持って行くと「今すぐ実行」が表示されますので、実行します。

バックアップしたファイルは、FTPソフト(FileZillaなど)で保存場所(※)を確認して、パソコンのデスクトップにダウンロードし、ダウンロードファイルを新しいフォルダーに解凍します。

※保存されている場所 /wordpress/wp-content/uploads/backwpup-??????-backups/
(??????には、適当な英数字が入ります)

2. データベースの作成

データベース作成は、コピー先サーバーでの作業になります。

ほとんどのレンタルサーバーで、データベースを作成できます。
作成方法は、各サーバーのマニュアルをご確認ください。

ロリポップ!の場合は、サイドメニューのサーバーの管理・設定>データベースから「作成」します。

データベース名は任意の文字列でOK。
データベース名・ユーザー名・パスワード・データベースホストは後で使いますので、控えておきます。

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

コピー元サイトのデータベースを、さきほど作成したコピー先サイトのデータベースへインポートします。

まず、作成したデータベースを操作できる、phpMyAdminという管理ツールを開きます。
不明でしたら、コピー先のサーバーのマニュアルをご確認ください。

ロリポップ!の場合は、「操作する」ボタンから「phpMyAdminを開く」。



1.でダウンロードし解凍したフォルダー内にある「データベース名.sql」をフォルダーから取り出します。
ここでのデータベース名はコピー元のデータベース名なので、見覚えのない文字列かと思います。
拡張子 sqlを探してみてください。

phpMyAdminで、データベースをインポートする前に、サイドメニューからインポートするデータベースをクリックし選択しておきます(グレーの網掛けが付きます)。
選択せずにインポートすると、#1046エラーになります。

その後、上メニューのインポートをクリックし、参照ボタンから「データベース名.sql」をファイル選択し、「実行」します。これでデータベースのインポートが完了しました。

4. ファイル内のドメイン置換

コピー元サイトの構築の際に、PHP内にURLをハードコーディングしている場合、style.css内のimg srcで絶対パスを指定している場合などは、そのままアップロードすると正常動作しないことがあります。

上記のようなことがありますので、コピー先へファイルをアップロードする前に、コピー元のドメインを検索し置換しておく必要があります。

今回の場合では、コピー元:old-domain.comと、コピー先:new-domain.comという風にドメインが異なっていますので、アップロード前に全ファイルの中身をチェックします。
文字置換ツールをネットから落としてきて一括置換するのがよいです。

秀丸エディタやサクラエディタには標準装備していますので、今回はそちらを使います。
下画像は、秀丸エディタの「検索>grepの実行」する例です。

5. データベース情報の変更

コピー先のデータベースを読み込むように、データベース情報を変更する必要があります。
コピー先のデータベースは、2.で作成したとおりです。

まず、ダウンロードしたファイル内にはwp-config.phpというファイルがあります。
エディターで開くと、データベースへ接続するための情報が記載されています。
2. で控えたデータベース情報に書き換え、保存します。

/** WordPress のデータベース名 */
define('DB_NAME', 'LXX000000-test');

/** MySQL のユーザー名 */
define('DB_USER', 'LXX000000');

/** MySQL のパスワード */
define('DB_PASSWORD', '??????????');

/** MySQL のホスト名 (ほとんどの場合変更する必要はありません。) */
define('DB_HOST', 'mysql???.phy.lolipop.lan');

/** データベーステーブルのキャラクターセット (ほとんどの場合変更する必要はありません。) */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません。) */
define('DB_COLLATE', '');

6. ファイルのアップロード

FTPソフトを使って、コピー先サーバー上へファイルをアップロードします。
ただし、「データベース名.sql」ファイルのアップロードは不要です。それ以外の全ファイルをアップロードします。

今回は、アップロード先ディレクトリを /wordpress とします。

すべてのファイルをアップロードし終わるには、結構な時間がかかることがあります。

7. データベース内のドメイン置換

2. 3.でコピー先にデータベースを作成し、コピー元のデータベースをインポートしました。

この段階では、さきほどのファイルと同様にデータベース内にもドメインに関する情報が含まれています。
ドメインに関する情報を置換しておかないと正常動作しませんし、また、コピー先サイトへログインすることもできません。

まず、データベース内を一括で置換するツールをダウンロードします。

ダウンロードサイト:Database Search and Replace Script in PHP

このツールは、ダウンロード時に「Suggested donation」で寄付を受け付けています。
寄付しても構いませんし、無料でもダウンロードできます。

登録メール宛にダウンロードURLが送られてきますので、そちらからダウンロードしてください。

解凍したファイルはフォルダーごと、コピー先のWordPressを入れたディレクトリ /wordpress にアップロードします(ディレクトリは /wordpress/Search-Replace-DB-master/ になります)。

ブラウザーのアドレスバーに、https://new-domain.com/wordpress/Search-Replace-DB-master/と入力すると、下記のような画面が表示されます。


先頭には、置換する文字列をreplace(コピー元)、with(コピー先)を入力します。
意図しないものまで置換されてしまう場合は、もう少くヒットしにくい文字列に変更します。

Database Detailsは、2.のコピー先のデータベース情報を入力します。
入力後、「Test connection」でデータベースへの接続テストを行います。

Do a safe test run」で、データベースのどういう項目が置換されるか確認して、「Search and Replace」をクリックして、本当に置換します。

置換作業後には、「delete me」でこのツールを削除します。
残しておくとセキュリティ上よくないので、しっかり削除しておきます。
FTPソフトで、フォルダーごと消してもよいです。

以上の作業で、コピーは終わりました。

https://new-domain.com/wordpress/ でページを開きます。
うまく置換できていれば、ページが表示されるはずです。

8. WordPressサイトをルートディレクトリで表示する

一般的なサイトの場合、https://new-domain.com/(ルートディレクトリ)を開いたときに、WordPressサイトを表示するようになっています。最後にこの設定をします。
ネット検索すると丁寧な解説がいくつも見つかりますので、詳細はそちらで確認してください。

コピー元のルートディレクトリにある、.htaccessファイルとindex.phpファイルをダウンロードし、コピー先のルートディレクトリにアップロードします。

コピー先サーバー上へアップロードに前に、中身を確認しておくとよいでしょう。
.htaccessファイルをエディターで開いて、「RewriteBase /」「RewriteRule . /index.php」になっているかを確認します( / はルートディレクトリを意味します)。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

index.phpは、「require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );」となっているか確認します(/wordpress/ は今回のインストール先ディレクトリです)。

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );


これですべて終了です。
https://new-domain.com/でページが開くか確認してください。

おまけ情報

テスト環境の構築の場合、テストサイトが検索エンジンにインデックスされると都合悪いので、WordPressのダッシュボードからインデックスしない設定します。

ログイン画面は、https://new-domain.com/wordpress/wp-admin/
ログイン情報は、コピー元のID・パスが使えます。

コピー元とコピー先のPHPのバージョンを揃っていないと、エラーが出るかもという話がちらほらありました。
PHPのバージョンはレンタルサーバーの管理画面で確認できますので、あらかじめチェックしましょう。

ダッシュボード内でプラグインのエラーが表示される場合は、プラグイン削除→追加しなおしで直ることがあります。

おわりに

今回は、別サーバーにテスト環境を構築する手順を見てきました。
移行トラブルなどに気を遣いますので、がっつりいじる作業でなければ、本番環境で作業するのがよいです。

この知識は、サーバーの引越しやドメイン変更にも使えますし、サイトが壊れた際のバックアップからの復旧にも応用できますので、なかなか便利です。
サーバーの引越し(ドメイン変更なし)の場合は置換が不要になりますし、ドメイン変更の場合は同じ手順で行えます(条件によってはプラグインですべて完了する場合もあります)。

All-in-One WP Migration(無料版)というWordPressプラグインを使って、簡単にテスト環境を作る方法もありますが、アップロードファイルのサイズ制限がきびしくて、小さめのサイトでしか使えません。
このプラグインはアップロードファイルのサイズ制限のない有料版もありますが、余分な費用がかかるのが厳しいです。

執筆者

えいじ@naeco.jp この記事を書いた人

メーカー系情報システム部門出身の個人事業主。
自作するのが好きですぐに試したくなる、凝り性なWebエンジニア。
カラーミーショップ、モールなどのECについて記事にしています。

ご相談・お問い合わせはこちら