WordPressのステージング環境(テスト環境)を構築するプラグイン「WP STAGING」
正直に言うと、今までステージング環境(テスト環境)が苦手でした…。
過去形「でした」もおかしいかな。今でも苦手だもの。
今までは、公開後に大規模かつ全体的に及ぶ改修をすることはあまりなかったこともありますし、リニューアルの場合は、データが統一されても問題ないというより、構成ごと見直さないといけなくて、データの引き継ぎをしない方が都合が良かったというのが大きいです。
要するに、テスト環境と本番環境のデータが同期されていなくても問題なかったために「データを全部引き継ぐのが大前提なリニューアル」の経験がなかったのです。
今回は、今後避けられないと思い、どうにかして自分が納得できる方法を見つけようと探していたときに出会ったプラグイン「WP STAGING」についてまとめてみました。
(1)どうして苦手なのか、自問自答する
ただ食わず嫌いで苦手というわけではありません。
- ローカル環境で構築したとき、サーバーと細かいところで仕様が異なるので挙動が異なる(例:予想していなかった不具合がサーバーにデータをアップしたときに発生する)
- 実際に運用中に小さな改修をしていたとき、ファイルの同期がうまく取れない(例:巻き戻ったり、整合性が取れなくなる)
- テスト環境をサーバー側で用意したとしても、運用中のデータはどんどん更新されていくので、結果に違いが生じる(というより、アップしないと分からない)
- そもそもデータが肥大していたら、持ってくるだけで大変だし、そもそもうまく持ってこれない
この一番最初の項目「ローカル環境で構築したとき、サーバーと細かいところで仕様が異なるので挙動が異なる」があって、テスト環境用のサーバーを借りて対応する方針にしたので、今まで【本番環境とほぼ同じ環境】は作ってこなかったということになります。
当時見ていたページは正直覚えていないので、代わりに参考になりそうなページを見つけました。該当部分を引用します。
ローカル環境や別サーバーでもいいですが、PHPやMySQL、サーバー独自の環境設定等により、できるかぎり同じ環境でテスト環境を作成することをおすすめします。
https://highfivecreate.com/blog/wordpress/3413.html
環境が異なることにより、「テスト環境ではエラーは起こっていなかったのに本番環境ではエラーが起こっている」などの問題が発生します。そもそもテスト環境を作成することがリスク回避の目的が強いと思うため、用意できない場合を除き、本番環境と同一サーバー内に用意しましょう。
他の理由は、どうしてなのかを考えたときに浮かんだ答えになるので、正直そこまで重要なポイントではないです。
(2)個人的に向いていない理由
(1)の自問自答では、根拠のある理由について記載していますが、ここからは私情です。
だから、積極的に「Webエンジニアです」とか「Webプログラマーです」って言い難くて……。
理由「テスト環境は【生きていない】から」
実際に運用してみて「あ。ここがめっちゃ気になる」で即座に開発スタートさせる傾向にあります。スピード感重視。そうじゃないとやらなくなる。飽き性ではないと思うんだけど、気力と体力が続かない。だから、勢い大事。
勢い優先で作ったクリエイトアコード開発プラグイン↓
リアルな運用データを取得しながらデバッグもするので、実際の本番環境運用のように「生きている」ならともかく「生きていない」テスト環境はどうしても使いにくい。
ステージング機能やテスト環境には、リアルな運用データが蓄積されていかないもの……。
お客様のサイトで対応するときは、基本的にエラーの出すような改修はないこともあり、エラーの出す可能性のある改修時はメンテナンス日と一緒にして、開発時は予めテストサイトで対応しつつ、適用するときは一時的にメンテナンスモード表示にしてテストして問題があったらすぐに戻すなどで対応していました。
自分のサイトはあまり気を遣っていなかったので、エラーが出たら戻すくらい。メンテナンスモードにもしていませんでした。
今回の公式で公開するWordPressプラグイン開発をしていて「このままでは良くない。どうにかしなければ…!」と反省しました。
サーバーに付属している「ステージング機能」について
実は、さくらインターネットのレンタルサーバーには、ステージング機能がついているんだけど、前述の事情とプログラマーと名乗るのを避けるくらいには、この機能にとっつきにくさを感じている。
もう少しだけでもいいから、感覚的にステージング環境の作成・削除ができないだろうか…
せめてもう少し感覚的に分かる形で作成・削除ができると有り難いんだけど…と思い、調べてみたら、ステージング環境を簡単に構築できるプラグイン「WP STAGING」を見つけました。
自動で現在のサイトをコピーして、いらなくなったらすぐに消せる。
つまり、必要なときに作って、いらなくなったら削除して…更新もそのままできる…だと!?
今回求めているのはプラグイン開発やテーマのカスタマイズで、内部のデータは影響がない。プラグインやテーマのファイルだけ、開発が終わったら本番環境にアップロードする分を考えると、操作が分かりやすく、無料でここまでできる「WP Staging」プラグイン、神か…!?
何よりも、簡単にできて簡単に消せるし、アップデートも容易なので、常にステージング環境を最新のデータに更新することもできる。
求めていた機能が全部入っているプラグインだと思いました。
本番環境のデータベース内に複製されたテーブルが作られるので、「本番環境のデータベース内はいじられたくない!(テーブル増やすな!)」という人やステージング環境から本番環境にマージさせたい人は無料だとできないので有料版を買いましょう。
このプラグイン、バックアッププラグインとしても使えるけど、やはりステージング機能を「少ないクリック数かつ分かりやすいUIで使える」ことにあると思う。
サーバーのステージング機能が分かりにくい人は「WP STAGING」プラグインを試してみてもいいかも!
WordPressプラグイン「WP STAGING」使用方法(2022年12月13日時点、バージョン: v. 2.11.0)
(注)settings内の設定はデフォルトにしています。
ステージング環境作成手順
- 「Staging Sites」を選びます。
- 「CREATE NEW STAGING SITE」を選びます。(オプションはそのまま)
- 「Start Cloning」を選択します。
- 終わったら「Open Staging Site」で開く
ステージング環境削除手順
- 「Staging Sites」を選びます。
- 作ったステージングサイトの「Actions」のプルダウンを選択します。
- 「Delete」を選択します。
- 全部チェックが入っている状態で「Delete」を選択します。
ステージング環境更新手順
- 「Staging Sites」を選びます。
- 作ったステージングサイトの「Actions」のプルダウンを選択します。
- 「Update」を選択します。
- ステージングサイトで何か変更を加えているなら、該当するテーブルのチェックは外して「Update Clone」を選択します。
もし、プラグイン・テーマ・アップロードフォルダを初期化してもう一度本番環境からコピーし直したいなら、「Clean Plugins/Themes」「Clean Uploads」にチェックを入れてから実行してください。
なお、似たような機能に「リセット」がある。
チェック外せば、外したテーブルや機能はリセットされないんだから、更新と何が違うんだろう……?(きちんと検証はできていないので違いは分からない)
手順も、更新とほぼ同じ手順です。
更新とは異なり、ポップアップが表示されるので「Reset Staging Site」を選んでください。
おまけ「ちょっとした修正でPHPエラーの確認をしたいとき」
「素直にステージング環境使っておけよ」って話なんだけど、今回の主題になったプラグイン「WP STAGING」を見つける前に見つけたので、ついでにまとめてみました。
そもそもさ、「ログイン中はデフォルトでエラー表示ONにする(閲覧者以外)」とか、こう、何かあるじゃん。WordPressのwp-config.php側で一律ONかOFFのみの設定は正直に言うと使いにくいと思う。
(ただし、自分が開発者なら「一律ONかOFFが一番バグ少なくて安心する!」と思うので、ちゃんとは言えない)
これは、GETパラメーター(クエリパラメーター)でエラー表示のON・OFFを切り替える方法です。
作業が終わったら元に戻すように気をつけた方が良いよ。そして、戻し忘れたことを考えて「debug」をGETのキーにはしない方が良いかな……。
ご相談・お問い合わせをお待ちしています!
ホームページ制作・リニューアル・運用・SEO・Web集客、Webマーケティング・Webサイト制作技術・タスク・スケジュール・プロジェクト管理や業務改善のお悩みなどを遠慮なくご相談ください。
資料のダウンロードをご希望の方へご案内です
サービスのご利用を社内で検討したい方のために、実績やサービス概要、料金表などのクリエイトアコードの案内資料をPDFでダウンロードすることができます。ご自由にダウンロードください。