Open2

WordPress 一部リニューアル: 作業前のサーバー同期手順

mimimimi

たまにしかやらない作業なので、いちいち詰まったり悩んだりググらなくて済むように、脳死で作業出来るようにするための自分メモ。いろいろカスタムしてる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書いとこう…