如何在两台Linux服务器之间共享Apache2虚拟主机configuration?

在Apache2服务器之间共享configuration指令的最佳select是什么? 这是为了采用稳定的负载平衡所必需的。 最重要的指令是那些定义虚拟主机的指令。

任何forms的帮助,非常感谢。

我们将一台主机定义为“主”,同时(根据最近的发行版本),虚拟主机configuration保存在/etc/apache2/vhost.d/文件夹中,并为每个虚拟主机分配一个文件。

例如

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

然后一个cron'd rsync从“主”复制到其他服务器。

有很多方法可以解决这个问题:

  1. 将该configuration放在集中存储上,例如NFS或CIFS。
  2. 使用版本控制系统(git,svn等)来存储configuration,并在web服务器上检查它们
  3. 使用rsync或scp将configuration从一台服务器同步到另一台服务器

您可以考虑将第二个选项与Puppet或CFengine等configuration工具相结合,以便在中央configuration更改时重新加载Apache。

我为我们的开发,登台和生产服务器使用统一的configuration。 大部分的configuration都是相同的。 在不同的地方,我将这些差异放入虚拟主机定义中,或放在<IfDefine>部分中,例如:

 <IfDefine DEVELOPMENT> ... </IfDefine> 

每台服务器都从一个命令行开关开始,告诉它是哪个服务器。 例如,在我的开发服务器上

 export APACHE_ARGUMENTS="-DDEVELOPMENT" 

到/ etc / apache2 / envvars(这是Debian – 对于RedHat,你可以把OPTIONS='-DDEVELOPMENT'放到/ etc / sysconfig / httpd中)。 因此,除了虚拟主机之外,开发服务器还具有<IfDefine DEVELOPMENT>部分中的所有configuration。

当configuration发生变化时,我会将更改提交到版本控制(通常是在开发中),并将其推送到其他主机。