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
これを解決するにはいくつかの方法があります。
- 設定を NFS や CIFS などの集中ストレージに配置します。
- バージョン管理システム(git、svnなど)を使用して設定を保存し、Webサーバー上でチェックアウトします。
- 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>
。
構成が変更されると、通常は開発中にその変更をバージョン管理にコミットし、他のホストにプッシュします。