[WordPress]ローカル環境でブログをアップデートし、変更をgit管理しつつ自動で本番環境へ反映する
今まで、ブログの外観設定などをいじる時はフルバックアップをとった上で本番環境を直接いじってしまっていた。
自分個人のためのブログだし、ビジネスでやってないし、失敗したとてロールバックはできるし、という考え。
正当なやり方でやるなら、ローカル環境でいろいろ試した上で変更を本番環境に反映するのが正しいということは分かっていた。
ただ、下記のようなWordpressの性質上うまいやり方がどうしても見つからず、正当な方法を取れていなかった。
- データベースの設定や内容がローカル環境と本番環境で一部異なるため、ローカル環境のデータをそっくりそのまま本番環境に持っていけば良いというわけではない。移行時にデータベースの修正が必要。
- 一部の外観設定やコンテンツをデータベースで管理しているため、全部をgitで管理するのが難しい。
とはいえ、なるべく変更履歴はgitで辿れるようにしておきたかったし、リリースブランチへの変更が自動でサーバーに反映される仕組みを導入したかった。
今回、一念発起してその仕組みを導入してみた。
これが最適解とは思ってないけど、自分なりの管理方法が固まったので、その辺りの方針や手順を記録しておく。
方針
ざっくりとした構成は下記の通り。
- WordPress core file、画像などのメディアファイル、記事コンテンツ、プラグイン、wp-config.phpや.htaccessといった環境依存のファイルはgitで管理しない。同期もしない。
- 自作テーマなど、主に自分が作成したファイルのみをgitで管理する。
- releaseブランチにコミットを上げると、GitHub Actions経由で自動でサーバーにアップロードされるようにする。
- それ以外のファイルや外観の設定(データベースに設定が保存されるもの。ウィジェットやサイドバーの設定など)は直接本番環境をいじって対応。バックアップはとってるし何かあってもなんとかなる。
手順
ブログをローカル環境にも構築する
- ブログのバックアップデータであるzipを用意。
- XAMPPのhtdocs以下に上記を解凍。適当なフォルダ名に書き換える。"test"とか。
- wp-config.phpを下記のように書き換える。
1234567891011/** WordPress のためのデータベース名 */define('DB_NAME', 'test');/** MySQL データベースのユーザー名 */define('DB_USER', 'root');/** MySQL データベースのパスワード */define('DB_PASSWORD', '');/** MySQL のホスト名 */define('DB_HOST', 'localhost'); - phpMyAdminを開く。MacだとXAMPPのGUIから開けないので、下記URLに直接アクセス。
http://localhost/phpmyadmin/ - 新規のテーブルを作成し、バックアップに含まれていたSQLデータをインポートする。
- wp_optionsテーブルを開き、siteurlとhomeのvalueをhttp://localhost/test/に変更。
これで表示されるようになるはず。
リダイレクトの設定とかを施しているとローカル環境のサイトがうまく表示されない場合があるので、.htaccessを確認・修正する。
トップページは表示されるが下層ページが表示されない or 本番リンクにリダイレクトされる場合はパーマリンクの設定が間違っているので、ダッシュボード > 設定 > パーマリンクを開き、何も変更せずに保存するとよい。パーマリンクがlocalhost用に更新される。
管理用のgitをローカル環境に追加
ブログ管理用のgitをcloneし、ローカル環境に上書きする。
branchはrelease以外にcheckoutしておく。
ローカル環境でブログをいろいろアップデートする
外観の設定などをいろいろ試す。
本番環境への反映
問題なければ本番環境に反映していく。
gitで管理していない部分についてはローカルに合わせて本番環境を手動でアップデートする。
gitで管理している部分についてはコミットして、releaseブランチにpush(もしくはプルリク送ってマージ)する。
すると、GitHub Actionsを経由して最新の内容がサーバー上に上がる。
GitHub Actionsについては下記あたりのサイトを参照した。
この記事へのコメントはこちら