如何在兩台Linux伺服器之間共用Apache2虛擬主機設定?

如何在兩台Linux伺服器之間共用Apache2虛擬主機設定?

在 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

有多種方法可以解決這個問題:

  1. 將組態放在集中式儲存體上,例如 NFS 或 CIFS。
  2. 使用版本控制系統(git、svn 等)來儲存配置並在網路伺服器上檢查它們
  3. 使用 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>

當配置更改時,我將更改提交到版本控制(通常是在開發過程中),並將它們推送到其他主機。

相關內容