はじめに
- ローカル環境で行ったWordPressのカスタマイズ作業を、そのまま別環境へ移動させたい人に役に立つかも。
- あと、WordPressサイトをどうやってソース管理しているか、の一例になれば。
環境
- Vagrant環境で開発 → 検証環境へ適用 のサイクルで開発していました。
- git管理にWordPressサイトのDBdumpを含めています。
WP-CLIの用意
ここからwp-cliをダウンロードしておきます。
ダウンロードしたら、プロジェクト直下にwp-cli.pharのままgit管理に含めてしまいます。
wp-cli.pharはphpコマンドで実行するので、リストアしたい環境でphpコマンドが使えるかチェックしておいてください。
envファイルの用意
git管理外のファイルとして、検証環境のプロジェクト直下に「env」という名前でファイルを1つ用意しました。
これには下記のように「検証環境のサイトURL」と「Dumpファイル内に記録されているURL」情報を記載しておきます。
export SITE_URL="http://example.com"
export DB_SITE_URL="http://192.168.33.10"
シェルスクリプトの用意
DBダンプからリストアする手順は毎回一緒なのでスクリプト化しておきます。
今回は wp-setup.sh という名前で作りました。
この中で先ほど用意した envファイル と wp-cli.phar を使います。
#!/bin/sh
echo "start"
source ./env
echo "DB reset"
php wp-cli.phar db reset --yes
echo "DB import"
php wp-cli.phar db import db/wordpress_db.sql
if [ ${DB_SITE_URL} = ${SITE_URL} ]; then
echo "NO DB replace"
else
echo "DB replace ${DB_SITE_URL} >> ${SITE_URL}"
php wp-cli.phar search-replace ${DB_SITE_URL} ${SITE_URL}
fi
echo "finish"
あとはこのwp-setup.shを bash wp-setup.sh
で実行してあげるだけです。
実行時の動作を簡単に説明すると、
- 一旦、検証環境のDBを削除
- dumpファイルからDBをリストア
- 全テーブルを対象に、DB_SITE_URL指定の文字列を、SITE_URL指定の文字列へ置換
してくれます。
おわりに
WP-CLIはシリアライズされたデータの置換にも対応しているので、
サイトの引っ越し自体はこのスクリプト一発で完了します。
あとはメディアファイルをS3などにアップするようにしておくか、
メディアファイルもgit管理に含めてしまえば、面倒な環境移動も一瞬で終わるようになります。