wp-envでデータベースをバックアップする
複数人でwordpressのテーマ開発をする場合に問題になるのがデータベースのマイグレーション。
最近はプラグインを利用してマイグレーションファイルを作成することができる。
All-in-One WP Migration – WordPress プラグイン | WordPress.org 日本語
無料版はアップロードファイルの容量制限があるので、プロダクションで利用するのは少し辛い。あと管理画面上からの操作のみ。
容量無制限かつ、コマンドラインからの操作も可能にするためには以下の拡張プラグインが必要。
All-in-One WP Migration Unlimited Extension
バックアップファイルの作成
コマンドラインからの操作が可能になったのでwp-envとの組み合わせを考えてみる。手元の操作でマイグレーションファイル(バックアップファイル)を作成・リストアできるようにしてみたい。
Makefileにコマンドをまとめてみた。
.PHONY:
wp-backup:
yarn run wp-env run cli wp ai1wm backup --exclude-spam-comments --exclude-post-revisions --exclude-themes --exclude-inactive-themes --exclude-muplugins --exclude-plugins --exclude-inactive-plugins --exclude-cache --exclude-email-replace
wp-backup-list:
yarn run wp-env run cli wp ai1wm list-backups
check-filename:
ifndef filename
$(error filename is undefined)
endif
wp-restore:check-filename
echo "restore from: $(filename)"
yarn run wp-env run cli wp ai1wm restore $(filename)
wp-envを起動した状態で、make wp-backup
を実行する。テーマファイルはGitで管理しているので、バックアップファイルには含めていない。その他余計なものも含んでいない。重要なのはデータベースとメディアファイル。
バックアップファイルが、/var/www/html/wp-content/ai1wm-backups/
ディレクトリに作成される。その場所をwp-envの設定でローカル環境にマッピングさせれば、バックアップファイルのGit管理が可能になる。
.wp-env.json
はこうした。
{
"core": "WordPress/Wordpress#5.6.1",
"plugins": [
"https://downloads.wordpress.org/plugin/all-in-one-wp-migration.7.37.zip",
"./plugins/advanced-custom-fields-pro",
"./plugins/all-in-one-wp-migration-unlimited-extension"
],
"themes": ["./sample-theme"],
"mappings": {
"./wp-content/ai1wm-backups": "./ai1wm-backups"
},
"config": {
"WP_DEBUG": true,
"WP_DEBUG_LOG": true
}
}
ローカル環境のマッピングされた場所にバックアップファイルが表示されている。
バックアップファイルの一覧
続いてmake wp-backup-list
でバックアップファイルの一覧を見る。
リストア(復元)するためのファイルをこのリストの中から選ぶ。ファイル名をコピーしておく。
バックアップファイルをリストア
wp-restore
コマンドでバックアップファイルから復元してみる。wp-resotre filename=:ファイル名
というふうに引数にバックアップファイルを指定する。バックアップファイル名はmake wp-backup-list
コマンドで確認することができる。
Discussion