前回の続き。
開発中、公開後のロリポップサーバー <-> ローカル環境の同期方法を紹介する。
僕は、開発中のテーマやプラグイン、アップロードしたファイルの同期は、FTPで、データベースの同期はWP-CLIで行っている。
黒い画面が苦手な人は、別の方法の方がいいと思う。黒い画面が好きな人は、より簡単にできるのでWP-CLIをおすすめする。
いきなり本番環境で試すのではなく、サブドメインとかでテスト環境を作って、慎重に動作確認してから進めた方がいい。静的に記事やページなど自分で書いたりするだけの場合は、このままいける。コメントとか、アクセスログとかをデータベースが動的に変化する機能を使っている場合は、データベースの同期は、もっと念密に考慮する必要あり。
データベースの同期
事前準備
ロリポップのサーバーへのSSH接続の設定と、ロリポップのサーバーへのWP-CLIのインストールを行っておく。
サーバー → ローカル
事前にサーバーでバックアップをしておくこと
- ローカルからサーバーにSSHで接続する
$ ssh webkei2.dev
- サーバーで、WordPress インストールディレクトリに移動
- データベースのエクスポート
--default-character-set=utf8mb4
オプションは、文字化けを防ぐため。絵文字が文字化けて気づいた。
$ cd web/webkei2.dev/
$ wp db export --default-character-set=utf8mb4

- エクスポートした、SQL(
EXPORT_SQL_NAME.sql
)をローカルにFTPでダウンロード

- Localアプリを開き、サイト名を右クリックし、「Open Site Shell」をクリックし、ターミナルを開く

- WordPressメンテナンスモード開始
- ローカルサーバーにデータベースをインポート
- ドメインを置換する
wp search-replace
は、プラグインが作成したテーブルを置換の対象にしていない。--all-tables-with-prefix
オプションをつけることで、プラグインが作成したテーブルも置換対象になる。(僕の場合は、Yoast SEOプラグインを入れているので必要だった。)
- ローカルで不要なプラグインを停止する。(僕の場合は、google-site-kitとupdraftplus)
- WordPressメンテナンスモード終了
- ローカル、サーバーともに
EXPORT_SQL_NAME.sql
を削除
これで、サーバー → ローカルへのデータベースの同期が完了。
$ wp maintenance-mode activate
$ wp db import EXPORT_SQL_NAME.sql
$ wp search-replace 'https://webkei2.dev' 'https://webkei2.local' --all-tables-with-prefix
$ wp plugin deactivate google-site-kit
$ wp plugin deactivate updraftplus
$ wp maintenance-mode deactivate

ローカル → サーバー
- Localアプリを開き、サイト名を右クリックし、「Open Site Shell」をクリックし、ターミナルを開く
- データベースのエクスポート
$ wp db export --default-character-set=utf8mb4
- エクスポートした、SQL(
EXPORT_SQL_NAME.sql
)を サーバーにFTPでアップロード - ローカルからサーバーにSSHで接続する
$ ssh webkei.dev
- サーバーで、WordPress インストールディレクトリに移動
- WordPressメンテナンスモード開始
- サーバーにデータベースをインポート
- ドメインを置換する
- ローカルで停止したプラグインを有効にする。(僕の場合は、google-site-kitとupdraftplus)
- WordPressメンテナンスモード終了
- ローカル、サーバーともに
EXPORT_SQL_NAME.sql
を削除
これで、ローカル → サーバーへのデータベースの同期が完了。
$ cd web/webkei.dev/
$ wp maintenance-mode activate
$ wp db import EXPORT_SQL_NAME.sql
$ wp search-replace 'https://webkei2.local' 'https://webkei2.dev' --all-tables-with-prefix
$ wp plugin activate google-site-kit
$ wp plugin activate updraftplus
$ wp maintenance-mode deactivate
ファイルの同期
ファイルの同期は、FTPで行っている。
FTPは、ダウンロード、アップロードで行うと、不要なファイルが残ってしまうので「Sync」している。
「Sync」を使うことで、差分を確認して、ダウンロード、アップロードできるので便利。
FTPアプリなら、たぶん「Sync」はあると思う。
僕の場合は、jetbrainsのIDEを使っているので、IDE内でサーバーとローカルのFTP環境を同期する設定をしている。
↓こんな感じ

サーバー → ローカル
uploadフォルダをサーバーからローカルに同期

ローカル → サーバー
慣れないうちは、事前にサーバーでバックアップをしておくことが理想。
テーマやプラグイをローカルにからサーバーに同期

WordPressをGit管理
あと、僕は、WordPress全体をGit管理している。(不要なファイルやuploadフォルダを除いて)
差分がわかりやすくていい。安全。
本当は、Gitデプロイしたかったけど、ロリポップでできるか試さないといけないので、やってない。今後、AWSとかに移行したらやってみたい。
.htaccess
.htpasswd
wp-content/backups-dup-lite/
wp-content/updraft/
wp-content/upgrade/
wp-content/updraft/
wp-content/uploads/
wp-content/themes/twentynineteen/
wp-content/themes/twentytwenty/
wp-content/themes/twentytwentyone/
node_modules
.DS_Store
*.sql
.idea/
サーバーのバックアップ
updraftplusプラグインで定期バックアップを設定。
念の為、ロリポップのバックアップ機能も併用。
データベースのバックアップと復元
WordPressのアップデート前などで、データベースをバックアップ、復元したい時がある。
wp-cliで行う場合は、ローカル、サーバーとも同じ方法で行う。
バックアップ
WordPressインストールディレクトリに移動して、wp-cliでエクスポートする。
$ wp maintenance-mode activate
$ wp db export --default-character-set=utf8mb4
$ wp maintenance-mode deactivate
復元
WordPressインストールディレクトリに移動して、wp-cliでインポートする。
$ wp maintenance-mode activate
$ wp db import EXPORT_SQL_NAME.sql
$ wp maintenance-mode deactivate
まとめ
こんな感じで、本番サーバーとローカル開発サーバーの同期、git管理、バックアップ設定を行っておくと、安心して気持ちよく開発に専念できる。
開発環境の整備は、あらかじめ徹底的にやっておいた方がいい。
次回は、テーマやプラグインの開発環境について説明する。