Wie kann die Konfiguration des virtuellen Apache2-Hosts zwischen zwei Linux-Servern geteilt werden?

Wie kann die Konfiguration des virtuellen Apache2-Hosts zwischen zwei Linux-Servern geteilt werden?

Was ist die beste Möglichkeit, Konfigurationsanweisungen zwischen Apache2-Servern zu teilen? Dies ist erforderlich, um eine stabile Lastverteilung zu gewährleisten. Die wichtigsten Anweisungen sind diejenigen, die die virtuellen Hosts definieren.

Jede Art von Hilfe wird sehr geschätzt.

Antwort1

Wir definieren einen Host als „Master“, außerdem wird (wie bei den meisten heutigen Distributionen) die Konfiguration des virtuellen Hosts in einem Ordner /etc/apache2/vhost.d/ gespeichert und jedem virtuellen Host eine Datei zugewiesen.

z.B

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

Dann ein Cron-Rsync, der vom „Master“ auf die anderen Server kopiert.

Antwort2

Es gibt mehrere Möglichkeiten, dieses Problem zu lösen:

  1. Legen Sie die Konfiguration auf einem zentralen Speicher ab, beispielsweise NFS oder CIFS.
  2. Verwenden Sie ein Versionierungssystem (Git, SVN usw.), um die Konfigurationen zu speichern und auf den Webservern auszuchecken.
  3. Synchronisieren Sie die Konfiguration von einem Server zum anderen mit rsync oder scp

Sie könnten die zweite Option mit einem Bereitstellungstool wie Puppet oder CFengine kombinieren, sodass Apache neu geladen wird, wenn sich die zentrale Konfiguration ändert.

Antwort3

Ich verwende eine einheitliche Konfiguration für unsere Entwicklungs-, Staging- und Produktionsserver. Die Konfiguration ist größtenteils für alle gleich. Wo es Unterschiede gibt, füge ich die Unterschiede entweder in virtuelle Hostdefinitionen oder in <IfDefine>Abschnitte ein, zum Beispiel:

<IfDefine DEVELOPMENT>
...
</IfDefine>

Jeder Server startet mit einem Befehlszeilenschalter, der angibt, um welchen Server es sich handelt. Auf dem Entwicklungsserver habe ich beispielsweise

export APACHE_ARGUMENTS="-DDEVELOPMENT"

in /etc/apache2/envvars (das ist für Debian – für RedHat würden Sie es OPTIONS='-DDEVELOPMENT'in /etc/sysconfig/httpd einfügen). Außer seinen virtuellen Hosts hat der Entwicklungsserver also die gesamte Konfiguration innerhalb der <IfDefine DEVELOPMENT>Abschnitte.

Wenn sich die Konfiguration ändert, übergebe ich die Änderungen an die Versionskontrolle (normalerweise während der Entwicklung) und pushe sie an die anderen Hosts.

verwandte Informationen