在 Apache2 伺服器之間共用設定指令的最佳選項是什麼?為了採用穩定的負載平衡,這是必要的。最重要的指令是定義虛擬主機的指令。
非常感謝任何形式的幫助。
答案1
我們將一台主機定義為“主”,並且(根據當今的大多數發行版)虛擬主機配置保存在資料夾 /etc/apache2/vhost.d/ 中,並為每個虛擬主機分配一個檔案。
例如
www.example.com.conf
customers.example.com.conf
suppliers.example.com.conf
... and so on..
然後是從「主伺服器」複製到其他伺服器的 cron'd rsync。
答案2
有多種方法可以解決這個問題:
- 將組態放在集中式儲存體上,例如 NFS 或 CIFS。
- 使用版本控制系統(git、svn 等)來儲存配置並在網路伺服器上檢查它們
- 使用 rsync 或 scp 將設定從一台伺服器同步到另一台伺服器
您可以考慮將第二個選項與一些設定工具(如 Puppet 或 CFengine)結合起來,以便在中央設定變更時重新載入 Apache。
答案3
我對我們的開發、登台和生產伺服器使用統一的配置。它們的大部分配置都是相同的。如果它們不同,我會將差異放入虛擬主機定義或<IfDefine>
部分中,例如:
<IfDefine DEVELOPMENT>
...
</IfDefine>
每個伺服器都以一個命令列開關啟動,該開關告訴它是哪個伺服器。例如,在我放置的開發伺服器上
export APACHE_ARGUMENTS="-DDEVELOPMENT"
進入/etc/apache2/envvars(對於Debian - 對於RedHat,你需要放入OPTIONS='-DDEVELOPMENT'
/etc/sysconfig/httpd)。因此,除了虛擬主機之外,開發伺服器還具有這些部分中的所有配置<IfDefine DEVELOPMENT>
。
當配置更改時,我將更改提交到版本控制(通常是在開發過程中),並將它們推送到其他主機。