web-dev-qa-db-ja.com

自動更新でWebサイトが壊れるのを防ぐことはできますか?

最近、私はWordPressを最新版にアップデートした後に問題が発生している彼らのウェブサイトについて不満を言うユーザーからの投稿に気づいた。

私が実行する現在のコアに依存している多くのカスタム関数とコードを持つWebサイトがあるとしましょう。その機能はあまりにも多く、30以上にもなります。そしてWordPressは時々更新をリリースしています。

それでは、どうすれば自動更新をオンにしたままにして、この機能が私のブログを壊さないようにすることができるか?私は定期的にバックアップをとることができますが、これは実際の救済ではありません。

パスノートは役立つかもしれませんが、それでもカスタムテンプレートでは更新がリリースされるたびにそれをチェックするのは面倒です。

今私の選択は何ですか?自動更新をオフにして手動でバックアップ/更新する必要がありますか?それとも、そのようなことが起こらないようにするための方法/プラグインなどはありますか?

3
Jack Johansson

Webサイトは他のソフトウェア製品とまったく同じで、どんな変更でも最初にQAステージを通過する必要があります。これが、本番環境にプッシュする前に、常にステージング/ devサーバーですべての更新をテストする必要がある理由です。

いつものように、それはROIの問題に帰着します。簡単なブログは修正が行われている間何日もの間ダウンタイムに苦しむことができますが、1000ドル/時を生み出すサイトはしゃっくりに対する許容度が低く、それを避けるために適切なQAに費やす時間は全く価値があります。

それで、更新があなたのサイトを壊すならば、それはあなたにとってどれほど悪いことになるかというあなたの判断の呼びかけです。もしあなたの時間を40ドル/時と言って、サイトが5ドル/時を生み出すのであれば、隔月のアップデートリリースで3時間のQAサイクルを持つのは価値がありません。特にあなたのコードに悪いハックがなく、理論的には "future prof"であるべきなら

2
Mark Kaplun

テスト環境と本番環境にWebサイトをインストールする必要があると思います。環境テストで最初に実行したすべての更新コード(WPコアまたはプラグイン)。うまく機能する場合は、実稼働環境でも同じことを行います。

それはそれです、あなたのビジネスが成長するとき、あなたは更新された被認可者のウェブサイトに新しい戦略の行動を必要とします!

2

注:詳細を説明する前に、ライブサーバーでは完全自動のバックグラウンド更新を有効にすることはお勧めできません。ライブサーバー用に推奨される自動アップデートのみが、コアのminorアップデートです。そのため、以下の手順に従っても、WordPressコアの自動マイナーアップデートには、wp-config.phpファイルで次のものだけを有効にするのが最善です。

define( 'WP_AUTO_UPDATE_CORE', 'minor' );

他のすべてのアップデートは自動アップデートではなくアップデートに参加する必要があります。 (可能であれば)最初に開発環境またはステージング環境で更新をテストしてから、それをライブサーバーに適用することをお勧めします。

あなたの質問は自動更新をオフにすることではありませんなので、あなたが言ったように。

自動更新をオンにしたまま、この機能によってブログが破損しないようにするにはどうすればよいですか

これを実現する方法についての概念は次のとおりです。

Step-1:常に自動更新されるステージングサーバーを保管してください。

Step-2:アップデート関連のアクションフック、たとえば upgrader_process_complete actionフックで、ステージング(サーバーIP、インストール場所などで識別)サーバー上にあるかどうかを確認します。そうであれば、更新プロセスが完了した後にエラーログをチェックし、ライブサーバーとの相互参照などを行います。それは更新があなたのサイトを壊しているかどうかを判断するための複数の方法をチェックすることです。それが成功したら、ライブサーバーがそれをチェックできるようにどこかにメモをしてください。ライブサーバーへのAPI呼び出し、最新のバージョン番号、DBエントリを含むファイルなど、ステージングサーバー上にコア、プラグイン、テーマなどの最新バージョンがあることを決定するものにすることができます。

Step-3:一方、ライブサーバーでは自動更新は完全に無効にされていませんが、automatic_updater_disabledauto_update_coreauto_update_pluginauto_update_themeなどのフックを使用してフィルタリングされます。また、これらのフィルタフックのフィルタ機能は、ステージングサーバが手順2で成功したかどうかを確認できなければなりません。成功した場合は、更新がこれらのフィルタ関数の戻り値(必要に応じてtrue | false)を続行することを許可します。

Step-4さらに、ステージングでは auto_core_update_send_email フックを使用して、自動更新プロセスがステージングサーバーで失敗したかどうかを自分自身に知らせることができます。

さて、明らかに、上記のステップはすべて一緒になってタスクを達成します。理解しやすいように、それらを段階的に説明しました。また、ステージングサーバーでCronが実行されていることを確認するには、10分後にステージングサーバーでcronジョブを設定します。そうでなければ、人々はステージングサーバにアクセスしていないので、ステージングは​​決して自動更新されません。

注:ライブサーバーとステージングサーバーはまったく同じCODEを持つことができますが、CODEの範囲内で、現在どのサーバーでCODEが実行されているかを判断する必要があります。あなたはステージング&ライブサーバー上のステップ2、3&4で異なる選択をすることができます。

続きを読む WordPressの自動アップデートはこちら

2
Fayaz

あなたのIDE(例えばPhpStorm)を利用し、あなたのWebサーバ(例えばApache)とPHPをローカルで実行して、デバッガがIDEにフックされたテスト環境を持ってください - - 自動更新がそこで起こるようにし、 完全回帰テストをする

テストスイートが成功したと確信したら、運用サーバーに同期します。ボーナスとして、PhpStormとうまく統合されているVCSの下にあなたのサイトを置くことを考えてみてください。これにより、サイトを破壊するような変更を元に戻すことができます(必要な場合)。

1
C C