如何在两个 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 rsync 将“主服务器”复制到其他服务器。

答案2

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

  1. 将配置放在集中存储上,例如 NFS 或 CIFS。
  2. 使用版本控制系统(git、svn 等)存储配置并在 Web 服务器上检查它们
  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>

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

相关内容