GSB 7.0 Standardlösung

Apache-Konfiguration

Der vorliegende Abschnitt ist Teil einer kleinen Sammlung von kurzen Anleitungen und Ansatzpunkten für die Arbeiten eines GSB 7.5 Administrators. Erfahrungen mit vorherigen GSB 7 Installationen werden vorausgesetzt. Diese Dokumente sollen den Betriebsverantwortlichen den Umstieg erleichtern.

1 Hintergrundwissen

Die Konfiguration des Apache erfolgt im GSB 7.5 nicht mehr durch Scriptgesteuerte Änderung von Konfigurationsdateien, sondern es ist eine strikte Trennung zwischen gelieferter Software und Systemkonfiguration implementiert.
Die gelieferte Software wird nur noch nach /opt/gsb/active entpackt und soll durch den Administrator nicht geändert werden, da Änderungen im Zuge der nächsten Installation verloren gehen würden.

Um trotzdem eine möglichst flexible aber auch einfach Konfiguration des Apache zu ermöglichen, liefert der GSB Konfigurationsdateien mit, die aus der durch den Administrator kontrollierten Runtime inkludiert werden können.

1.1 Support unterschiedlicher Betriebssysteme

Der Apache ist die einzige Komponente des GSB, die nicht in Java implementiert ist und daher betriebssystemabhängig ist.

Um unterschiedliche Betriebssysteme zu unterstützen, wird der Apache des Kerns nicht im Paket Apache2 ausgeliefert, sondern in einem Paket Apache2-<os>. Derzeit werden die Betriebssysteme Red Hat Enterprise Linux 8 (rhel8), Red Hat Enterprise Linux 7 (rhel7) und Suse Linux Enterprise Server (sles) unterstützt.

Die installierte Apache-Version muss während der Kern-Installation nach /opt/gsb/active/Apache2 verlinkt werden. Die Mandanteninstallation erfolt dann nach /opt/gsb/active/Apache2 und wird über diesen Symbolischen Link in den richtigen Apache geleitet.

2 Konfiguration

Die Konfiguration des Apache erfolgt in der GSB Runtime im Ordner /opt/gsb/runtime/Apache2. Der Einstiegspunkt ist die Datei gsb.conf . Von hier aus kann die komplette weitere Konfiguration des Apache kontrolliert werden.

Im Default werden vom Kern und den Mandante mitgelieferte Konfigurationsdateien unter /opt/gsb/active/Apache2/conf/gsb inkludiert sowie die Runtime Dateien host.conf, platform.conf und workers.conf. Hierbei sollen in der host.conf host-spezifische Variablen definiert werden, in der platform.conf Variablen, die auf alle Servern einer Plattform identisch sind und in der workers.conf die mod_proxy_balancer Backend Worker.

Im Apache ist ein Default-VHost konfiguriert, der alle Anfragen auf dem Http Port für Hosts engegennimmt, die nicht von einem konfigurierten VHost behandelt werden. Der Default-VHost gibt für alle Anfragen 403 Forbidden zurück, außer für /server-status und /healthCheck.

2.1 Ports und Interfaces

Die Ports für HTTP und HTTPS können über die Variablen httpPort und httpsPort definiert werden. Im Default sind die Werte 80 und 443 konfiguriert. Das Interface, auf dem die VHosts erreichbar sind, kann über die Variable Interface definiert werden. Im Default ist hier * konfiguriert, so dass der GSB auf allen Interfaces erreichbar ist.

2.2 HTTPS-Terminierung und Zertifikate

Wenn der Apache HTTPS terminieren soll, muss der VHost ${GsbApacheConfDir}/customers/https/vhost.conf in der gsb.conf inkludiert werden. Dieser VHost terminiert alle Anfragen auf Port 443 und leitet als Reverse-Proxy per HTTP weiter an Port 80. Die Zertifikate können über die Variable SSLCertificateFile konfiguriert werden. Die hier konfigurierte Datei kann Zertifikatskette und Private-Key in einer Datei enthalten. Wenn der Private-Key in einer separaten Datei gespeichert wird, kann dieser über die Variable SSLCertificateKeyFile konfiguriert werde. Weitere SSLKonfigurationen können über die Variablen SSLProtocol und SSLCipherSuite vorgenommen werden.

2.3 MPM

Die Auswahl des MPM wird in der gsb.conf vorgenommen, indem eine der Dateien ${GsbApacheConfDir}/basis/mpm_event.conf und ${GsbApacheConfDir}/basis/mpm_worker.conf inkludiert wird.

Im Default wird mpm_worker konfiguriert.

Die Konfiguration der MPM Parameter kann in der host.conf oder der platform.conf erfolgen.

2.4 Healthcheck und Server-Status

Der Apache stellt im Default-VHost einen Healthcheck auf der URL /healthCheck und einen Server-Status auf der URL /server-status zur Verfügung. Diese können von externen Systemen für das Monitoring genutzt werden.

Im Default sind diese Checks nur von 127.0.0.1 erreichbar, über die Variablen serverStatusGrant und healthCheckGrant können die Berechtigungen aber konfiguriert werden. Die beiden Variablen werden in einem Require Statement genutzt. Z.B. würde Define serverStatusGrant "ip 1.2.3.4" den Zugriff auf /server-status von der IP 1.2.3.4 freischalten und Define healthCheckGrant "all granted" den Zugriff auf den Healthcheck von überall erlauben. Weitere Informationen finden sich in der Dokumentation des Apache.

Der Healthcheck dient dazu, den Status eines Backenddienstes abzufragen und von außen überprüfbar zu machen. Dazu kann der Springboot Actuator der GSB-Komponenten genutzt werden. Welcher URL genau abgefragt wird muss über die Variable healthCheckUrl konfiguriert werden. Z.B. würde Define healthCheckUrl http://localhost:8002/actuator/health den Actuator der cae-preview auf dem lokalen System abfragen.

2.5 Mandanten

Mandanten liefern für jeden VHost Konfigurationsdateien mit, die durch den Administrator in der Apache-Runtime in der Datei gsb.conf inkludiert werden können. So können auf jedem System nur die tatsächlich benötigten VHosts aktiviert werden. Die Dateien finden sich im Ordner /opt/gsb /active/Apache/conf/gsb/customers/<Mandant> und sollten selbsterklärend benannt sein, z.B. vhost-editor für den Webeditor oder vhost-live für die Liveseite. Außerdem werden im selben Ordner in der variables.conf Variablen definiert, die durch die VHosts genutzt werden. Durch Überschreiben der Variablen in der Runtime in der host.conf oder der platform.conf können die VHosts konfiguriert werden.