Open2
WordPress 一部リニューアル: 作業前のサーバー同期手順
たまにしかやらない作業なので、いちいち詰まったり悩んだりググらなくて済むように、脳死で作業出来るようにするための自分メモ。いろいろカスタムしてるWordPressだとうまく行かない可能性がある(知らんけど)ので自己責任でどうぞ。間違えてたらコメントなどでツッコミお願いします。
production: www.sample.com productionuser / productionpass
test: test.sample.com testuser / testpass
local: localhost:8080 localuser / localpass
localdir: ./Project/SampleProject/
みたいな感じ。
それぞれのWordPressへのディレクトリは
WORDPRESSDIR, TESTWORDPRESSDIR, LOCALWORDPRESSDIR
前提条件的なこと
- 本番、テスト共 ssh, wp-cli が使えること
- 本番、テストのWordPressへの管理者権限アカウントがあること
- GitHub Actions回してたら必要ない
- ローカルはwp-env, Mac
1. 本番サイトの全バックアップ
1.1. WP All in one Migration で落としておく(2重バックアップ)
- 落とせなかったら諦めて1.2と1.3やる
- 落とせてもファイルサイズが512MB超えたら、1.2と1.3もやる
- 他の定期バックアップツールが動いてたらそれで代用可
- ファイルサイズが512MB以下ならバンザイ!(悲しいかな大体オーバーする)
1.2. wp-contents 以下をDL(大体ちょっと時間かかる)
$ scp -r productionuser@www.sample.com:WORDPRESSDIR/wp-content/ ./Project/SampleProject/backup202300000/
1.3. DBをexport(大体すぐ終わる)
WORDPRESSDIR直下にsqlファイル(xxxxx-2023-00-00-xxxxxx.sqlみたいな名前のやつ)が出来る
$ ssh productionuser@www.sample.com
$ cd WORDPRESSDIR
$ wp db export
$ exit
$ scp productionuser@www.sample.com:WORDPRESSDIR/xxxxx-2023-00-00-xxxxxx.sql Project/SampleProject/backup202300000/
最後はブラウザでDLでも可
2. テストへの同期(本番とサーバーが同じ場合)
本番と違う場合は個人で担当してないケースが多いので省略(大体はGitHub Actions任せ)
2.1. wp-contentの同期
脳死で完全コピー(あんまり使わない)
$ cp -pr ./WORDPRESSDIR/wp-content/* ./wp-content/
差分だけ持ってくる
$ rsync -av ./WORDPRESSDIR/wp-content/ ./wp-content/
2.2. DBの同期とドメインの書き換え
$ wp db import ./WORDPRESSDIR/xxxxx-2023-00-00-xxxxxx.sql
$ wp search-replace 'https://www.sample.com' 'https://test.sample.com'
2.3. 本番のsqlファイルを削除
$ rm ./WORDPRESSDIR/xxxxx-2023-00-00-xxxxxx.sql
3. ローカルへの同期
ローカルの場合はhtaccess弄る。面倒でも最初にやっておく。
3.1. アップロード上限上げる
$ cd LOCALWORDPRESSDIR
$ npx wp-env run cli vi .htaccess
php_value upload_max_filesize 32M
php_value post_max_size 64M
php_value memory_limit 128M
3.2. WP All in one Migrationで同期する
結論として、小さめの案件でも今後はなるべくGitHub Actionsを仕込むかshell書いとこう…
試してみて、wp-env版考える