system.ini¶
Die system.ini
ist die zentrale Steuerdatei im Ini-Format
zur Konfiguration des Ignition Prozesses und der zu startenden Anwendung.
Abschnitte¶
Die Konfiguration ist in Abschnitte aufgeteilt.
reporter¶
Der Abschnitt reporter
definiert einen Dienst, der Fehler (Exception)
verarbeiten kann. Aktuell gibt es eine Klasse für Sentry und eine für
ein Dateisystem-Reporter. Die Konfiguration erfolgt folgendermaßen:
[reporter]
class=\Alvine\Dispatcher\Reporter\Sentry
url=https://example.com/api/<project-id>/store/
key=<key>
secret=<geheim>
Für den Dateisystem-Reporter:
[reporter]
class=\Alvine\Dispatcher\Reporter\Directory
directory=/var/log/exceptions
Die erstellte Datei ist eine JSON-Zeichenkette, die zum Beispiel mit
jq
ausgegeben werden kann.
Die Projekt-ID project-id
, der Schlüssel key
und das Passwort secret
können in Sentry nachgeschlagen werden.
filesystem¶
Im filesystem
Abschnitt werden die Pfade zu den einzelnen Speicherorten festgelegt und definiert.
Im Wesentlichen wird versucht die Standardstruktur von Unix zu verwenden.
; Hier liegt das Standardsystem (readonly)
; Default: /opt/new-project/
basePath=/opt/new-project/
; Phar-Archive, externe Bibliotheken
; Default: /opt/vendor/
vendorPath=/opt/vendor/
; Kunden- und Projektspezifische Dateien
; Default: /var/new-project/
dataPath=/var/new-project/
; Unter diesem Pfad liegt kunden- und
; projektspezifizische Code
; Default: /var/new-project/
customisationPath=/var/new-project/
; Logging und Debugging
; Default: /var/log/new-project/
logPath=/var/log/new-project/
; Konfigurationsdateien (Routen, Zugangsdaten)
; Default: /etc/new-project/
configPath=/etc/new-project/
; Temporäre Dateien
; Default: /tmp/new-project/
tempPath=/tmp/new-project/
; Für Webanwendungen liegen hier die
; über HTTP aufrufbare Dateien
; Default: /srv/new-project/
webPath=/srv/new-project/
!!! "note" Hinweis Der webPath muss bei reinen CLI-Anwendungen nicht gesetzt werden.
units¶
Im units
Abschnitt werden die Namen und die Reihenfolge der durchzuführenden
Schritte spezifiziert. Die Namen der einzelnen Einheiten (Units) werden als Schlüssel angegeben.
Der Name der Einheit ist identisch mit dem Klassennamen der entsprechenden Einheit. Der Schlüssel
SendAccessControlAllowOrigin
gehört so zur Klasse \Alvine\Dispatcher\Unit\SendAccessControlAllowOrigin
.
Der Wert entspricht den API in denen die Unit ausgeführt werden soll. Wird als Wert ein Stern *
notiert,
so wird die Einheit auf allen API ausgeführt. Der Wert http
steht für alle Web-APIs und cli
für alle
Konsolen-Anwendungen. Außerdem können alle spezifischen SAPI-Namen als Kommaliste angegeben werden.
Mögliche Werte sind unter anderem aolserver
, apache
, apache2filter
,
apache2handler
, caudium
, cgi
(bis PHP 5.3), cgi-fcgi
, cli
, cli-server
, continuity
,
embed
, fpm-fcgi
, isapi
, litespeed
, milter
, nsapi
, phttpd
, pi3web
, roxen
, thttpd
,
tux
und webjames
.
Die Werte können per Komma getrennt angegeben werden. So kann die Ausführung einer Unit auf Apache, FPM und
isapi mit folgendem Wert eingeschränkt werden: apache,fpm-fcgi,isapi
Die Werte müssen so, wie von der Methode \php_sapi_name()
zurückgegeben, angegeben werden.
Hinweis
Alle Units müssen im Namespace \Alvine\Dispatcher\Unit
angelegt und von
der Klasse \Alvine\Dispatcher\Unit
abgeleitet sein.
Die Standard-Unit-Klassen werden automatisch eingebunden. Klassendateien für
projektspezifische Units müssen manuell per include_once
eingebunden werden.
Standardeinheiten¶
Jede Einheit kann eigene Konfigurationen besitzen, die in einem Abschnitt mit identischem Namen definiert werden. So verfügt
die Einheit \Alvine\Dispatcher\Unit\SendAccessControlAllowOrigin
über einen Konfigurationsabschnitt mit dem Namen
[SendAccessControlAllowOrigin]
.
RunExternals¶
Diese Einheit führt eine beliebige PHP-Datei aus. Die Ausführung des Script erfolgt in einem Closure.
[RunExternals]
; Externe Scripte in den Startupprozess integrieren
path[]= ~/projekte/svn/alvine.application.platform/development/environment/alvine-platform/ignition/example.php
InitLegacyConstants¶
Mit dieser Einheit können Konstanten festgelegt werden, die in der Anwendung zur Verfügung steht.
[InitLegacyConstants]
; Zuweisung von Konstanten zu einem bestimmten Wert.
MY_CONST_VARIABLE=value
Dependencies¶
Mit dieser Einheit können Voraussetzungen der PHP-Installation überprüft werden. Wenn nicht alle Abhängigkeiten gegeben sind, so wird eine Exception geworfen.
[Dependencies]
; Notwendige PHP-Erweiterungen
extension[]=yaml
extension[]=mbstring
; Notwendige PHP-Version
php-version=7.3.0
RegisterApplicationNamespace¶
Mit dieser Einheit kann der Namespace registriert werden.
[RegisterApplicationNamespace]
; Namespace der Anwendung
namespace=\Alvine\Application\Platform
RegisterCustomisationNamespaces¶
Mit dieser Einheit kann ein eigener Namespace registriert werden.
[RegisterCustomisationNamespaces]
; Diese Namespaces werden registeriert
; Die Dateien müssen im Verzeichnis customissation
; aus der filesystem-Sektion liegen
; Der Namespace kann beliebig gewählt werden.
namespace[]=\Customisation
; namespace[]=\Customisation2
RewriteRequestURI¶
Mithilfe dieser Einheit kann die REQUEST-URI umgeschrieben werden. Dies ist zum Beispiel
bei Systemen in denen eine index.php angegeben wurde sinnvoll. Dazu muss man ein pattern
definieren, dass dann mit dem Wert aus replace
ersetzt wird.
Als Trennzeichen für den Regex kommt das ~
-Zeichen zum Einsatz.
[RewriteRequestURI]
; Regex-Pattern
pattern=^/index.php
; Ersetzung
replace=/
InitCliAssemblyAndExecute¶
Diese Einheit initialisiert die Anwendungsklasse und startet die Anwendung.
[InitCliAssemblyAndExecute]
; Der Namespace muss vorher über
; RegisterApplicationNamespace oder
; RegisterCustomisationNamespaces registriert
; worden sein
class=\Alvine\Application\Platform\Command
; Verzeichnisse, in denen nach Konfigurationswerten gesucht wird.
; Die Verzeichnisse müssen Unterverzeichnisse von config sein.
; Die einzelnen Verzeichnisse werden in der Reihenfolge wie hier
; aufgeführt ausgewertet. Die Dateien im Verzeichnis werden nach
; dem Dateinamen sortiert und in dieser Reihenfolge ausgewertet.
directories=generally,cli
; Soll der Cache deaktiviert werden
; Diese Einstellung sollte mit Vorsicht geändert werden
; Bei deaktivertem Cache wird die Performance enorm beeinträchtigt.
disableCache=false
InitWebAssemblyAndExecute¶
Diese Einheit initialisiert die Anwendungsklasse und startet die Anwendung.
[InitWebAssemblyAndExecute]
; Der Namespace muss vorher über
; RegisterApplicationNamespace oder
; RegisterCustomisationNamespaces registriert
; worden sein
class=\Alvine\Application\Platform\Web
; Verzeichnisse, in denen nach Konfigurationswerten gesucht wird.
; Die Verzeichnisse müssen Unterverzeichnisse von config sein.
; Die einzelnen Verzeichnisse werden in der Reihenfolge wie hier
; aufgeführt ausgewertet. Die Dateien im Verzeichnis werden nach
; dem Dateinamen sortiert und in dieser Reihenfolge ausgewertet.
directories=generally,http
; Soll der Cache deaktiviert werden
; Diese Einstellung sollte mit Vorsicht geändert werden
; Bei deaktivertem Cache wird die Performance enorm beeinträchtigt.
disableCache=false
InitErrorReportingAndDebugging¶
Mit dieser Einheit kann das Verhalten im Fehlerfall definiert werden.
[InitErrorReportingAndDebugging]
; Entwickeln und/oder Debugging der Anwendung über die HTTP-Schnittstelle
; Wenn die Anwendung im Debug-Modus ist, wird der Cache deaktiviert und
; es werden mehr Informationen ausgegeben.
; Anzeigen der PHP Fehlermeldungen. Die Codes sind hier zu entnehmen:
; http://php.net/manual/de/errorfunc.constants.php
; 32767 sind alle Meldungen; 0 Keine Meldungen
errorReportingLevel=0
; Sollen PHP-Fehlermeldungen angezeigt werden
displayErrors=true
; Soll der Opcache während des Debuggings geleert werden
; Wichtig: Diese Einstellung kann große Auswirungen auf die
; Performance haben.
; Funktioniert nur, wenn in PHP Opcache aktiviert ist
clearOpcache=false
; Die Debug-Funktion ist auf die hier aufgeführten IP-Adressen
; beschränkt. Wichtig bei der Verwendung von Proxies: Die IP-Adresse
; des Clients muss weitergereicht werden. Folgende Felder werden
; ausgewertet: X-Forwarded-For
; Die IP-Adresse kann IPV4 oder IPV6 sein
; werden keine IP-Adressen angegeben, so arbeiten
; die Einstellungen für alle Adressen.
limitToIP[]=::1
limitToIP[]=127.0.0.1
;limitToIP[]=
; Wird kein Cookie oder kein Parameter definiert, so
; Wird bei allen IP-Adressen das Debugging eingeschalten.
; Name des Cookies, der die Anwendung
; in den Debug-Modus schaltet.
enableByCookie=
; Name des Parameters, der die Anwendung
; in den Debug-Modus schaltet.
enableByParameter=debug
; Name des Parameters, der die temporär gespeicherten Routendateien der Anwendung löscht
resetRoutesByParameter=reset
IncludeComponents¶
Diese Einheit bindet alle in der assembly.ini im Abschnitt components
definierten
Phars über das phar://
Protokoll ein. Die Komponenten werden dabei im Vendor-Verzeichnis gesucht.
;[IncludeComponents]
; Pfad in dem die Phars liegen
path=/opt/vendor/phars
InitEnvironmentFromEnv¶
Diese Einheit bindet eine PHP-Datei ein.
[InitEnvironmentFromEnv]
; Pfad in dem die env.php liegt
; Diese Datei kann spezielle Environment-Daten enthalten
path=/etc/env.php
Die eingebundene PHP Datei sollte Umgebungsvariablen für die Anwendung definieren, kann aber auch andere
Aufgaben wahrnehmen. Die folgende Datei /etc/env.php
ist ein Beispiel für eine Datei zum Setzen der
Umgebungsvariable.
<?php
function setAlvineDevelopmentEnvironment(string $key, string $value): void {
\putenv($key . '=' . $value);
$_ENV[$key] = $value;
}
setAlvineDevelopmentEnvironment('MONGODB_URI', 'mongodb://127.0.0.1:27017');
setAlvineDevelopmentEnvironment('REDIS_URI', 'redis://127.0.0.1:6379');
setAlvineDevelopmentEnvironment('LOGLEVEL', 'ALL');
SendAccessControlAllowOrigin¶
Diese Einheit sendet bei http-Anfragen den Access-Control-Allow-Origin
mit dem angegebenen Wert.
[SendAccessControlAllowOrigin]
; Wird kein Wert angegeben, so wird kein header gesendet
value=*