6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WP-CLIを使ってWordPressサイトをリストアする

Last updated at Posted at 2016-07-18

はじめに

  • ローカル環境で行った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」情報を記載しておきます。

env
export SITE_URL="http://example.com"
export DB_SITE_URL="http://192.168.33.10"

シェルスクリプトの用意

 DBダンプからリストアする手順は毎回一緒なのでスクリプト化しておきます。
今回は wp-setup.sh という名前で作りました。
この中で先ほど用意した envファイル と wp-cli.phar を使います。

wp-setup.sh
#!/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管理に含めてしまえば、面倒な環境移動も一瞬で終わるようになります。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?