本番サーバーでソース ファイルを更新し (リポジトリからプルして更新)、移行を実行し、キャッシュされたアセットを再生成する必要があります。
Symfony 2 にこれを安全に行うメカニズムはありますか? サイトを「メンテナンス モード」 (503 をスローする必要があります) にするか、何か?
本番サーバーでソース ファイルを更新し (リポジトリからプルして更新)、移行を実行し、キャッシュされたアセットを再生成する必要があります。
Symfony 2 にこれを安全に行うメカニズムはありますか? サイトを「メンテナンス モード」 (503 をスローする必要があります) にするか、何か?
Symfony 2 のバンドルを見つけました。これは、アプリケーションをメンテナンス モードにするための 2 つの追加コマンドをコンソールに提供します。どうぞ: https://github.com/lexik/LexikMaintenanceBundle
私はこれをどのように実装するかを決めようとしています。一方では、Symfony2 は適切な製品キャッシングを提供するため、データベース スキーマを破壊的に変更 (列やテーブルの削除など) しない場合は、おそらくスキーマを変更し、リポジトリからデプロイしてから製品をクリアするだけで済むでしょう。キャッシュ。それが私がほとんどの場合物事を処理する方法です。
一方、メンテナンス モードに移行したい場合は、フレームワークへの負荷が最小限のソリューションが必要になるでしょう (つまり、おそらくカーネルを起動したくないでしょう)。とにかく目的: 物事をいじっている間、フレームワークから負荷を取り除きます。
私だったら、503 ヘッダーを設定するだけの簡単なメンテナンス スクリプトを作成し、(サイト テンプレートから事前に生成された) 静的な html を提供してユーザーに送り返し、to で条件付きロジックを使用するでしょうapp.php
。メンテナンスモードにする必要があるときにそれを使用してください。それは醜いですが、うまくいきます。
ユーザーが何らかのトランザクション (たとえば、ショッピング) の最中にいる可能性がある大規模なサイトでこれを行う方法がわからないが、小規模なサイトでは .htaccess ファイル (web ディレクトリにあるファイル) を使用するだけではいけないそれがあなたのルートであると仮定して)app.phpではなく、メンテナンスページにリダイレクトします。
デプロイヤー ( http://deployer.org/ ) を使用して Symfony2 アプリケーションをデプロイすることをお勧めします。この方法では、メンテナンス ページは必要ありません。このツールには、symfony2 および symfony3 テンプレートが既に含まれています。アセットを生成し、キャッシュをウォームアップし、リリース ディレクトリを追跡します。以前のリリースにロールバックすることも簡単です。現在のリリースディレクトリを常に指す「現在の」シンボリックリンクがあります。リリースの展開が完了すると、このリンクは新しく作成されたリリース ディレクトリに更新されます。
教義の移行に関しては、そのためのカスタム タスクを作成する必要があります。
capifony http://capifony.org/をご覧ください。
Symfony2 の優れたサポートがあります。