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
odertopic-dev
mode
(Option)Einer der beiden Werte
dev
oderproduction
. Andere Configwerte (siehe Sektionmodes
) können gebündelt manipuliert werden. Weiterhin sind bestimmte Jobs improduction
Mode deaktiviert - wie zum Beispiel derSyncDatabaseJob
.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.ldap
eingetragen 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()