WordPressのテスト環境構築は簡単に出来る(Kusanagi for Vagrant)

WordPressのテスト環境構築は簡単に出来る 技術ネタ

WordPress の運用サイトとは別に、開発(テスト)用の環境がほしくなったので、その環境を構築した時のことについて書いています。



前提条件

当サイトは、KUSANAGI for さくらのVPS で運用されており、それを前提にしています。
また、テスト環境構築のために WordPress のプラグインなどを使用しないやりかたで行っていますので、ある程度知識がある方でないと難しいかもしれません。
といっても、そんなに難しいことではありませんので、最低限のLinuxコマンド、MySQLを操作したことあれば問題ありません。

開発環境を準備する理由

プラグインはメンテされなくなったり、どのような挙動なのかわからなく、セキュリティ的に不安だったりするので、当サイトでは、極力プラグインを使わないようにしています。
そのため、必要に応じて子テーマに機能を追加する形で対応しているため、修正したコードをテストするための環境が必要になりました。本番サイトでテストするのは危険ですからね。。。

具体的な構築方法

Kusanagi for Vagrant でローカルに KUSANAGI 環境を構築

まずは、Kusanagi for Vagrant でローカルに WordPress 環境を構築します。
これについて、公式サイトに詳しく書いてありますので、そちらを元に構築してください。

私も手順通り、「KUSANAGI for Vagrant のインストール」→「KUSANAGIの初期設定」→「KUSANAGIのプロビジョニング作成」→「WordPressのインストール」で、特にハマることなく無事にブログが表示されるようになりました。

テスト環境を構築する際は、なるべく運用サイトと合わせたほうが良いと思います。
私もKUSANAGIのユーザIDやMySQLのユーザID、データベース名、プロビジョニング名などなど、合わせられるものは全て同じに設定しました。
※ただし、パスワードだけは間違えないように、あえて運用サイトとは別のものにしています。

WordPress ファイルコピー

記事も何もないブログが表示されるようになったら、次に WordPress のファイルをコピーします。

運用されているサイトから WordPress のファイルを全て吸い上げ、今作成した環境に展開します。
具体的には運用しているサイトにログインし、以下のコマンドでWordPressのファイルを吸い上げます。

cd /home/kusanagi/{プロビジョニング名}
tar cvfz DocumentRoot.tar.gz DocumentRoot
{プロビジョニング名} のところは、自分の環境に合わせて入力してください。
作成された DocumentRoot.tar.gz ファイルを sftp等で テスト環境に持ってきます。
テスト環境に持ってきたら、以下のコマンで WordPress のファイルを展開します。

cd /home/kusanagi/{プロビジョニング名}
tar xvfz {DocumentRoot.tar.gzを置いたパス名}DocumentRoot.tar.gz

これだけで、WordPress ファイルのコピーは終わりです。

私は、wp-config.php を DocumentRoot 配下に置いていないので問題ありませんが、もし、DocumentRoot 配下に置いている場合は、そのファイルはコピー(上書き)されないように注意してください。

MySQL(MariaDB)のデータコピー

次に、データベースのデータコピーですが、これもそれほど難しくはありません。
mysqldump コマンドで吸い上げ、mysql コマンで実行するだけです。
具体的には、運用サーバにログインし、以下のコマンドを実行します。

mysqldump -u{ユーザID} -p{パスワード} {データベース名} --single-transaction --quick | gzip -c > mysql_dump.sql.gz

これで、mysql_dump.sql.gz ファイルにデータベースのデータが吸い上げられます。

{ユーザID} と {パスワード} はMySQLのIDとパスワードを入力してください。
また、{データベース名} は WordPress で使用しているデータベース名を指定してください。
このファイルを、テスト環境に持っていき、以下のコマンドを実行します。

gzip -dc mysql_dump.sql.gz | mysql -u {ユーザID} -p{パスワード} {データベース名}

これで、データベースのデータコピーは終わりです。

MySQL(MariaDB)のデータ書き換え

最後に、必要なデータの書き換えです。
WordPressは、サイトのURLをデータベース内に保持しています。それを書き換えないと、アクセスしてもリダイレクトされ表示されません。
書き換えには、mysqlコマンドで行います。
まずは、以下の SQL を実行し、データの確認を行います。

select option_id,option_value from wp_options where option_value = '{サイトのURL}';
{サイトのURL} は、運用サイトのURLを入力してください。
当サイトですと https://return-favor.com となります。
当サイトの例ですが、こんな感じの結果が表示されるかと思います。

+-----------+--------------------------+
| option_id | option_value             |
+-----------+--------------------------+
|         1 | https://return-favor.com |
|         2 | https://return-favor.com |
+-----------+--------------------------+

これを新しいテスト環境のURLに書き換えますので、以下の SQL を実行します。

update wp_options set option_value = '{テスト環境のURL}' where option_value = '{サイトのURL}';

きちんと書き換えられたのかを確認するため、もう一度確認用SQLを実行します。

select option_id,option_value from wp_options where option_value = '{テスト環境のURL}';

この結果の option_value が 新サイトのURLに変わっていればOKです。

必ず上に書いた通り、データベース内のURLをテスト環境のものに書き換えた後にサイトを閲覧してください。書き換える前に閲覧してしまうと、301転送がブラウザに記録されしまい、面倒なことになってしまいます。
もし、書き換え前にテスト環境を閲覧してしまい、変にリダイレクトされてしまったら、ブラウザの履歴をクリアしましょう。

構築を終えて

全て終わったら、テスト環境にアクセスしてみてください。
記事など全て運用されているサイトと同じものが表示されていると思いますので、これで構築完了となります。

テスト環境は非常に便利です。
色々なことを気軽に試せて非常に助かっています。
自身でソースを頻繁に修正する方は、テスト環境を準備してみてはいかがでしょうか。
必要な方がいれば参考にしてください。