FEDS
stehe für F
rontE
nd D
elivery S
ystem. Die Aufgabe des FEDS
ist es, die publizierten Inhalte, die das CMS auf dem Webserver in Form von Dateien bereit gelegt hat so zu verarbeiten, dass das Frontend die Inhalte wie gewünscht darstellen kann. Weiter liefert das FEDS
die serverseitigen Techniken wie Suchen, Applikationen-Logiken oder Lösungen für kundenindividuelle Anforderungen.
Deployment
Alle Projekt-Dateien, die für den Betrieb auf dem Webserver notwendig sind müssen in einer tar.gz
-Datei breit gestellt werden.
Das tar.gz
muss dabei folgende Dateien enthalten:
-
public/index.php
: Dies ist der Front-Controller der für alle Anfragen aufgerufen wird, die nicht eine Front-End-Datei (JavaScript, CSS, …) oder ein publiziertes Medium erwarten. -
ies-module.build.toml
: Diese Datei enthält die Projekt-Informationen und muss mindestens folgende Daten enthaltenid = "my-project-feds" name = "My Project - FEDS" description = "My Project - Frontend Delivery System" type = "FEDS" version = "1.0-SNAPSHOT" build_date = 2022-10-27T07:47:29Z packaging = "tar.gz"
Das Projekt wird über IES-Admin installiert. Die Datei wird vom IES entgegen genommen und als Modul identifiziert. FEDS
-Module werden auf die IES-Webnodes weitergegeben.
Der IES-Webnode deployed das FEDS
-Module.
tar.gz
entpacken
Zunächste wird das tar.gz
in einem Ordner wie IES_WEBNODE_HOME/feds/my-project-feds-extract-1.0.0-SNAPSHOT-24fad35795ef28026bff94433d0fdd4e/
ausgepackt.
Die letzten 5 Verzeichnisse dieser Form pro Projekt bleibem auf dem Server enthalten. Gibt es mehr als 5 Verzeichnisse werden die ältesten gelöscht, so das immer maximal 5 Verzeichnise vorhanden sind.
Warmup
Vor dem produktiv schalten der Applikation wird ein Warmup-Prozess durchgeführt. Dieser erstellt Caches und bereitet die Applikation für den Betrieb vor.
Es werden bisher nur PHP-Projekte unterstützt. Daher wir der Start-Up-Prozess über einen PHP-Aufruf gestartet.
Klassisch
Im Produktiv-Betrieb erfolgt der Start des Warmup-Prozesses über den Aufruf innerhalb des Projekt-Verzeichnisses:
bin/console feds:warm-up
Hierbei erfolgt der Warmup-Prozess für das Environment, das in der Varialbe APP_ENV
in der .env
-Datei eingetrage ist. Im Normalfall prod
. Dies kann über die Option -e
aber überschrieben werden.
bin/console -e dev feds:warm-up
Docker
In Docker-Umgebungen der IES-Webnode-Container selber kein PHP ausführen kann, erfolgt der Aufruf immer über ein FastCGI-Request an den FPM-Server.
Dazu wird zunächst ein Token mit einem Request an die URL /api/login_check
mit den JSON-Daten
{
"username" : "api",
"password" : "[PASSWORD]"
}
erfragt. Das Passwort kann über IES_WEBNODE_HOME/config/realm.properties
ermittelt werden.
Mit dem erhaltenen Token, wird der Warmup-Request über die URL /api/admin/warm-up
angestoßen. War dies erfolgreich wird das Projekt produktiv geschaltet.
Produktiv schalten
Das produktiv schalten der Projektes erfolgt über setzte bzw. verschieben eines Links. Der bis dahin produktive Stand hat den Pfad IES_WEBNODE_HOME/feds/my-project-feds
und ist ein Symlink auf das entsprechende Projekt. Beim produktiv schalten wird der aktuelle Link gelöscht und auf das neue Projekt-Verzeichnis gesetzt. Damit ist der neue Stand produktiv.
PHP Konfiguration
Das umschalten auf den Produktiv-Betrieb erfolgt über das setzten eines neuen Symlinks. Ein Problem dabei ist, dass der PHP Opcache im Standard-Fall nicht erkennt, dass sich der Symlink geändert hat und somit immer noch die alten im Cache befindlichen PHP-Klassen verwendet. Um dies zu verhindern muss die PHP-FPM Konfiguration opcache.revalidate_path
= 1
gesetzt werde. Dies kann wie folgt erfolgen:
PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION;")
cat <<EOT > /etc/php/$PHP_VERSION/fpm/conf.d/90-sitepark.ini
# necessary to detect if a symlink has changed.
# The deployment process uses symlinks to enable
# the update of a feds or fontend module.
opcache.revalidate_path = 1
EOT
systemctl restart php${PHP_VERSION}-fpm
Webserver Integration
Weitere Einstellungen können über Environment-Variablen vorgenommen werden. Dazu können in der Datei /etc/apache/includes/extra.conf
Einträge der Form
SetEnv VAR_NAME VAR_VALUE
ergänzt werden. Mögliche Variablen sind
Name | Beschreibung |
---|---|
APP_ENV |
Environment unter die Site laufen soll |
APP_SECRET |
Hierbei handelt es sich um eine Zeichenkette, die für die Anwendung eindeutig sein sollte und üblicherweise verwendet wird, um sicherheitsrelevanten Vorgängen mehr Entropie zu verleihen. Der Wert sollte aus einer Reihe von Zeichen, Zahlen und Symbolen bestehen, die nach dem Zufallsprinzip ausgewählt werden, die empfohlene Länge beträgt mindestens 32 Zeichen. |
Die Variablen können auch Publikationsbereich-Spezifisch hinterlegt werden, in dem die Einträge in einer Datei wie /etc/apache/includes/www.domain.de.extra.conf
vorgenommen werden.
Für den Betrieb der Webseite sind zusätzlich zu dem FEDS-Projekt noch weitere Kompenenten notwendig.
- Ein Frontend-Projekt, das korrespondierend zu dem serverseitigen die frontendseitige Logik für die Webseite bereit stellt.
- Die publizierten Resourcen, die das CMS bereit gestellt hat. Dies sind die Inhalte der Redakteure und Administratoren, die für bestimmte Publikationsbereiche freigegeben sind.
Diese Komponenten werden über eine Apache-Konfiguration zusammengeführt. Dies wird von dem Apache-Macro fedsSite übernommen.