複数の類似した Apache 構成をどのように管理しますか?

複数の類似した Apache 構成をどのように管理しますか?

現在、私は Mercurial を使用して、運用サーバーと開発サーバーの間で同様の Apache 構成を同期しています。その上のパッチ キューにより、開発サーバーに必要な変更と追加情報が追加されます。

このスキームは機能しますが、改善の余地があります。デプロイメント構成から変更をプルした後、パッチ キューを再適用すると、常にマージ競合が発生します。個別の http:// および https:// 構成ファイルに常に同一の変更を加えているように感じます。

:80 と :443 の Apache 構成間の同一ビットを分離し、開発構成に「追加ビット」をよりきれいに追加するにはどうすればよいでしょうか?

答え1

使用を検討してみてはいかがでしょうか含むApacheの設定システムの機能。次に、個々のマシンに固有の設定要素を分離して、_local.confそうすれば合併が簡単になるはずだ

答え2

Apache には、特定の設定を選択的に有効にするオプションがあります。これにより、開発と本番で同じ設定ファイルを使用できます。Apache を -DDEVELOPMENT または -DPROD で起動すると、開発サーバー固有の設定にタグを使用できます。この方法では、マージの競合は発生しません (もちろん、マージ前に開発/本番の両方の設定ファイルを変更しない限り)。

答え3

これは古いやり方かもしれませんが、ステージと本番の Apache 構成は、それぞれのパラメータの一部 (IP アドレスなど) が異なっていることを除いて、同一でした。私は、開始スクリプトを囲む Perl ラッパーを使用して、体系的に「空白を埋める」ようにしました。実際の基本構成「テンプレート」は確かに同一でした。

これにより、ステージ Apache が本番環境の Apache と機能的に同一であることが保証されました。

この運用構成を開発と共有することで、開発者は希望どおりに運用に近い状態でテストできるようになりました (開発者は、ステージで「動作」しない限り運用に移行しないため、そのように望んでいました)。私たちはときどき支援を提供し (mod_rewrite ルールなど)、残りは開発者に任せました。

この特定の設定と私が働いた他の場所との違いは次のとおりです。

開発スタッフは、自分が取り組んでいるプログラムに直接関係のない分野に手を出すことが奨励されていました。つまり、バックエンド アプリケーションに取り組んでいる場合でも (したがって、Apache についてあまり詳しく知る必要はありません)、独自の Apache サーバーを構成していました (実際、独自のデスクトップを構築していましたが、これは一線を越えたと思います)。

運用は、単にインフラストラクチャを実行するのではなく、インフラストラクチャの多くを実際に駆動しました。

関連情報