Как разделить конфигурацию виртуального хоста Apache2 между двумя серверами Linux?

Как разделить конфигурацию виртуального хоста Apache2 между двумя серверами Linux?

Какой лучший вариант для совместного использования директив конфигурации между серверами 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 и т. д.) для хранения конфигураций и проверки их на веб-серверах
  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>разделах.

При изменении конфигурации я фиксирую изменения в системе контроля версий (обычно на этапе разработки) и отправляю их на другие хосты.

Связанный контент