Konfiguration

Server-Konfiguration

Allgemeine Hinweise

Die Server-Konfiguration steht in einer .ini-Datei, die beim Start des Servers auf der Kommandozeile angegeben wird. Im Gegensatz zur Domain-Konfiguration werden dieser statischen Konfiguration keine weiteren Konfigurationsquellen zur Laufzeit hinzugefügt. Es gilt also die Konfiguration in der Datei unverändert für die gesamte Laufzeit des Systems.

Bemerkung

Der Übersicht halber verwenden wir in dieser Dokumentation eine gepunktete Schreibweise für Konfigurations-Optionen. So steht z. B. server.http.on für die Option on im Unterabschnitt [[http]] des Abschnitts [server] in der .ini-Datei.

Beispiel-Konfiguration:

[server]
  portBase = 10000
  [[http]]
    numThreads = 10

Globale Konfiguration

Zur Zeit gibt es keine globalen Optionen. Alle Parameter werden in dedizierten Abschnitten konfiguriert.

Server-Konfiguration (server)

Die folgenden Optionen können im Abschnitt server gesetzt werden.

portBase (Integer, 0-65535)

Die portBase wird auf alle Port-Nummern aufaddiert. Durch Änderung von nur diesem einen Parameter können somit alle Ports in einen freien Bereich verschoben werden.

Voreinstellung: 0

bindHosts (String-Liste)

Eine Liste von Netzwerk-Schnittstellen, an welche die Ports gebunden werden sollen. Für alle IPv4 Adressen sollte „0.0.0.0“ enthalten sein, für alle IPv6-Adressen „::“.

Voreinstellung: list("0.0.0.0")

Webserver-Konfiguration (server.http, server.https, server.https_proxy)

Die folgenden Optionen können, sofern nichts anderes gesagt ist, in den Teilabschnitten server.http, server.https und server.https_proxy gesetzt werden. Jeder dieser drei Webserver stellt die gleiche REST API zur Verfügung, der HTTPS-Server jedoch über eine SSL-Verbindung.

Der HTTPS_PROXY-Server ist identisch zum HTTP-Server, verfügt aber über seine eigenen Resourcen. Er bietet sich an als Einstiegsadresse für eine vorher ausgehandelte SSL-Verbindung hinter einem Reverse-Proxy-Server.

Voraussetzung für die Verwendung der HTTP, HTTPS und HTTPS_PROXY-Server ist allerdings, dass das HTTP-Plugin mit http.on=true aktiviert ist (dies ist die Voreinstellung).

Der HTTPS- und der HTTPS_PROXY-Server schliessen sich gegenseitig aus. Wenn sowohl server.https.on=true als auch server.https_proxy.on=true gesetzt sind, so ist dies so als ob beide false wären.

on (Boolean)

Wahr, wenn der entsprechede Webserver aktiviert sein soll, sonst falsch.

Voreinstellung: true (für HTTP), false (für HTTPS und HTTPS_PROXY)

port (Port-Nummer)

Die Port-Nummer für den Webserver relativ zu server.portBase.

Voreinstellung: 80

bindHosts (String-Liste)

Wenn diese Option gesetzt ist, überschreibt sie die Einstellung in server.bindHosts.

Voreinstellung: None

numThreads (Integer)

Die anfängliche Anzahl an Worker-Threads für den Webserver.

Voreinstellung: 30 (für HTTP), 10 (für HTTPS und HTTPS_PROXY)

maxThreads (Integer)

Die maximale Anzahl an Worker-Threads für den Webserver. Es können höchstens so viele Verbindungsanfragen gleichzeitig verarbeitet werden. Der Wert -1 steht für beliebig viele Verbindungen. Wenn mehr Threads als numThreads benötigt werden, dann weden bis zu maxThreads on-demand hochgefahren.

Voreinstellung: 90 (für HTTP), -1 (für HTTPS und HTTPS_PROXY)

queueSize (Integer)

Die maximale Anzahl an noch nicht akzeptierten Verbindungen, die im Kernel vorgehalten werden, bevor eingehende Verbindungen automatisch abgelehnt werden. Die genaue Bedeutung des Parameters und seine Einschränkungen sind system-spezifisch und können der Betriebssystem-Dokumentation entnommen werden.

Voreinstellung: 5

timeout (Integer)

Der Socket-Timeout in Sekunden für akzeptierte Verbindungen. Braucht eine Aktion auf dem Socket länger als dieser Wert, wird die Verbindung abgebrochen.

Hinweis

Der Timeout betrifft einzelne Systemoperationen (z. B. Senden oder Empfangen eines Pakets) auf dem Socket, nicht die Gesamtdauer einer Verbindung. Der Wert wird für die Socket-Funktion settimeout verwendet.

Voreinstellung: 10

ssl_module (String, nur HTTPS_PROXY)

Die zu verwendende SSL-Adapter-Implementierung. Der Wert kann „builtin“ oder „pyopenssl“ sein.

Voreinstellung: „builtin“

Resourcen-Begrenzung (server.rlimit)

Die folgenden Optionen können im Teilabschnitt server.rlimit eingetragen werden.

Hinweis

Dieser Abschnitt betrifft nur POSIX-Systeme. Auf Windows-Systemen werden diese Einstellungen ignoriert.

addressSpaceMB (Integer, nicht-negativ)

Der maximale virtuelle Addressraum in MB (RLIMIT_AS) für den Prozess. Der Wert 0 steht für unbeschränkten virtuellen Addressraum.

Voreinstellung: 0

Information (info)

Die folgenden Optionen können im Teilabschnitt info eingetragen werden.

version (String)

Die VL-Version, die in den Exportprozessen oder beim HTTP-Useragent gemeldet wird. Zum Beispiel 2.17.1.

id (String)

Der Name einer VL-Server-Instanz. Beispielsweise custom-server-prod oder topic-dev

mode (Option)

Einer der beiden Werte dev oder production. Andere Configwerte (siehe Sektion modes) können gebündelt manipuliert werden. Weiterhin sind bestimmte Jobs im production Mode deaktiviert - wie zum Beispiel der SyncDatabaseJob.

url (String)

Extern erreichbare Url des Servers. Wird aus server.proxyBase übernommen, wenn nicht belegt.

Modes (modes)

Die folgenden Optionen können im Teilabschnitt modes eingetragen werden.

Datenbank-Konfiguration (database)

Die folgenden Optionen können im Teilabschnitt database eingetragen werden.

on (Boolean)

Wahr, wenn ein Datenbank-Zugang konfiguriert werden soll, sonst falsch.

Voreinstellung: true

Java-Konfiguration (database)

Die folgenden Optionen können im Teilabschnitt database eingetragen werden.

Domain-Konfiguration (domain)

Die folgenden Optionen können im Teilabschnitt domain eingetragen werden.

Internationalisierungs-Konfiguration (i18n)

Die folgenden Optionen können im Teilabschnitt i18n eingetragen werden.

on (Boolean)

Wahr, wenn die Internationalisierung aktiviert sein soll, sonst falsch.

Voreinstellung: true

Authentifizierung (auth)

Die folgenden Optionen können im Teilabschnitt auth eingetragen werden. Sie steuern die Authentifizierung der Benutzer gegenüber dem System.

LDAP

Die folgenden Optionen können im Teilabschnittauth.ldapeingetragen werden.

on (Boolean)

Wahr, wenn die LDAP-Authentifizierung aktiviert sein soll, sonst falsch.

Voreinstellung: true

url (String)

Die URL des LDAP-Servers.

Beispiel: url = ldap://localhost:389

bindDN (String)

Der Distinguished-Name des LDAP-Benutzers, über den die Verbindung zum Server aufgebaut werden soll.

Beispiel: bindDN = 'cn=VLSLDAP,cn=Users,dc=example,dc=com'

bindPasswd (String)

Das Passwort des Benutzers bindDN für die einfache Authentifizierung gegenüber dem LDAP-Server.

userBase (String)

Der Distinguished-Name für die Einschränkung der Benutzer-Suche auf dem LDAP-Server.

userScope (LDAP-Scope)

Der Bereich der Benutzer-Suche auf dem LDAP-Server. Mögliche Werte sind SCOPE_ONELEVEL, SCOPE_BASE, SCOPE_SUBTREE.

Beispiel: userScope = SCOPE_ONELEVEL

Die Gruppenzugehörigkeit wird über einen Unterabschnitt groups definiert.

Gruppe[:Domain] (Gruppenspezifikation)

Ordnet der Gruppe (opt. nur für eine Domain) die Nutzer mit den LDAP-Attributen aus der Gruppenspezifikation zu. Mehrere Attribut-Werte-Paare können, durch Zeilenumbruch getrennt, angegeben werden. Das Attribute wird vom Wert mit einem Doppelpunkt getrennt.

Trifft ein Attribut zu, so wird dem Benutzer die Gruppe zugeordnet.

Beispiel:

[auth]
  [[ldap]]
    [[[groups]]]
      qa = 'memberOf:cn=vls-qa,dc=example,dc=org'
      wiki:s2w = '''memberOf:vls-wiki,dc=example,dc=org
                    cn:editor'''

Format

Die Instanzkonfiguration server.ini und die domain-spezifischen Konfigurationsdateien sind zum größten Teil im .ini-Format notiert. Im VLM-Bereich, im Frontend-Templating und bei den Statuswerten werden jedoch auch .xml-Dateien verwendet.

Die .ini-Dateien werden um Typspezifikationen angereichert und die Struktur wird festgelegt. Für die Instanzkonfiguration befindet sich die Spezifikation inserver/config/configspec.ini. Für die Domainkonfiguration inserver/config/dconfigspec.ini.

Beispiel einer Deklaration wie sich in dconfigspec.ini oder configspec.ini findet:

[resolver]
    resolverUrl = string(default="http://nbn-resolving.de")
    redirectUrn = boolean(default=false)
[wiki]
    # activate additional pymarkdown extensions
    extensions = string_list(default=list())

[indexing]
    # secondary sort criteria (if sorting lists)
    secondSort = option(title, date, place, name, printer-publisher, default=title)
    # sortfields that will be descending sorted
    descendingSort = string_list(default=list())

[[misc]]
    __many__ = string()