2 つの Linux サーバー間で Apache2 仮想ホスト構成を共有するにはどうすればよいでしょうか?

2 つの Linux サーバー間で Apache2 仮想ホスト構成を共有するにはどうすればよいでしょうか?

Apache2 サーバー間で設定ディレクティブを共有する最適なオプションは何ですか。これは、安定した負荷分散を実行するために必要です。最も重要なディレクティブは、仮想ホストを定義するディレクティブです。

どのような助けでも大歓迎です。

答え1

1 つのホストを「マスター」として定義し、(最近のほとんどのディストリビューションと同様に) 仮想ホスト構成は /etc/apache2/vhost.d/ フォルダーに保存され、仮想ホストごとにファイルが割り当てられます。

例えば

www.example.com.conf
customers.example.com.conf
suppliers.example.com.conf
... and so on..

次に、「マスター」から他のサーバーにコピーする cron された rsync を実行します。

答え2

これを解決するにはいくつかの方法があります。

  1. 設定を NFS や CIFS などの集中ストレージに配置します。
  2. バージョン管理システム(git、svnなど)を使用して設定を保存し、Webサーバー上でチェックアウトします。
  3. rsync または scp を使用して、あるサーバーから別のサーバーに構成を同期します。

中央構成が変更されたときに Apache がリロードされるように、2 番目のオプションを Puppet や CFengine などのプロビジョニング ツールと組み合わせることを検討できます。

答え3

開発、ステージング、および本番サーバーには統一された構成を使用しています。構成のほとんどはすべて同じです。異なる場合は、その違いを仮想ホスト定義または<IfDefine>セクションに記述します。例:

<IfDefine DEVELOPMENT>
...
</IfDefine>

各サーバーは、どのサーバーであるかを示すコマンドラインスイッチで起動します。たとえば、開発サーバーでは、

export APACHE_ARGUMENTS="-DDEVELOPMENT"

/etc/apache2/envvars に追加します (これは Debian 用です。RedHat の場合はOPTIONS='-DDEVELOPMENT'/etc/sysconfig/httpd に追加します)。したがって、仮想ホストの他に、開発サーバーにはセクション内のすべての構成が含まれます<IfDefine DEVELOPMENT>

構成が変更されると、通常は開発中にその変更をバージョン管理にコミットし、他のホストにプッシュします。

関連情報