Konfigurationsdateien¶
Der Datenbank-Server wird über sog. "ini-Dateien" konfiguriert. Daher wird auf den Zugriff systemspezifischer Verzeichnis- und/oder Datenbankstrukturen verzichtet (z.B. Windows-Registry). Dadurch ist eine Installation durch Kopieren oder ein Verlagern eines Servers durch Verschieben sehr einfach möglich. Im Nachfolgenden werden Aufbau und Inhalte der notwendigen ini-Dateien aufgeführt und erläutert.
Für den Datenbank-Server ist die ctxserver.ini und für den HTTP-Server die ctxhttpd.ini notwendig.
CortexDB-Server¶
Alle Serverparameter (Port, Datensicherungspfad, Sicherungszeitplan etc.) werden in der ctxserver.ini im Serververzeichnis festgelegt. Der Aufbau untergliedert sich in Blöcke (jeweils mit einem Titel in eckigen Klammern) und Parameter (unterhalb der Blöcke aufgeführt).
Änderungen an den Parametern werden bei jedem Neustart des Datenbank-Servers eingelesen.
Die nachfolgende Aufstellung zeigt die verschiedenen Parameter auf und erläutert deren Bedeutung. Optional (je nach Anwendungsbereich) ist es möglich, dass weitere Einstellungen definiert werden. Im Regelfall sind daher die beschriebenen Einstellungen ausreichend.
[EINSTELLUNG] basepath=.\daten port=29000 bindonlylocalhost=0 AgentManagerAutoStart=0 SocketTimeout=500 disablechh=1 fidxtemppath=./tmp fidxpath=./data DisableFidxMem=1 ReorgMaxMem=512 [BACKUP] backuppath=.\backup MaxBackupCount=1 0=01:00 6=02:00 [SUGGESTIONS] adrde=.\suggest\adrde.dat,1 [HTTPSRV] Enable=1 Port=80 SslPort=443 BindOnlyLocalHost=0 SslCertPem=127.0.0.1.pem LogHttpSrv=1 HttpServerThreads=22 HttpRoot=www HttpAuth=0 WebClientName=Cortex-WebClient DefaultUrl=%V/i/CtxWebClient/index.php PhpSessDir=ab HttpDefaultUrlOnly=0 SERVERVAR_CORS_ORIGIN=* [UNIPLEX] EnableApiList=1
Konfigurationsblock: EINSTELLUNG¶
Dieser Block dient für die globalen Servereinstellungen:
Parameter | Beschreibung |
---|---|
basepath= | Pfad in dem die Daten des Servers liegen (Datenbank-Dateien) |
port= | tcp-ip-Port, der für den Serverzugriff verwendet wird |
bindonlylocalhost= | 0=nein, 1=nur Zugriffe vom lokalen Rechner erlaubt |
AgentManagerAutoStart= | 1=Agentmanager wird beim Serverstart automatisch gestartet |
SocketTimeout= | Nach Ablauf dieser Zeit in sec wird eine Socket-Verbindung automatisch geschlossen |
disablechh | (de-)aktiviert die change history im Unterverzeichnis chh (1=an; 0=aus) |
Für die Nutzung von SSD-Speichermedien und größeren Datenbanken kann es sinnvoll sein, den Datenbank-Index und die Reorganisation auf den SSD während der Laufzeit zu nutzen. Im Regelfall wird der Index im Arbeitsspeicher gehalten. Mit folgenden Parametern, kann dieser von der SSD genutzt werden.
Parameter | Beschreibung |
---|---|
fidxtemppath= | Während der Reorganisation werden die die temporären Daten zur Indexerzeugung in dem angegebenen Pfad abgelegt |
fidxpath= | Alle Indexe für die Laufzeit der Datenbank aus dem angegebenen Verzeichnis laden |
DisableFidxMem= | Feldindexe nicht in den Arbeitsspeicher laden (1=on; 0=off) |
ReorgMaxMem= | Maximaler Arbeitsspeicher bei der Sortierung aller Indexe während der Reorganisation in MB (default 256MB). Hinweis: Bei einem Arbeitsspeicher von mehr als 16GB hat sich ein Richtwert von 2GB bewährt. Bei weniger Arbeitsspeicher sollten 512MB nicht überschritten werden |
Konfigurationsblock: BACKUP¶
Der Server kann pro Tag ein automatisches Backup erstellen. In diesem Block werden die dafür notwendigen Einstellungen vorgenommen:
Parameter | Beschreibung |
---|---|
backuppath= | Pfad in dem die Backups geschrieben oder aus dem sie beim Wiederherstellen gelesen werden (auch für manuelle Backups) |
MaxBackupCount= | Anzahl vorzuhaltener Backups, bevor die jeweils älteste Backup-Datei gelöscht wird |
0= | Uhrzeit am Sonntag, zu dem ein Backup erstellt werden soll |
1= | Uhrzeit am Montag |
2= | Uhrzeit am Dienstag |
3= | Uhrzeit am Mittwoch |
4= | Uhrzeit am Donnerstag |
5= | Uhrzeit am Freitag |
6= | Uhrzeit am Samstag |
Konfigurationsblock: SUGGESTIONS¶
Für eine Datenbank können Dateien mit Vorschlagsdaten mitgeliefert werden, die bei der interaktiven Nutzung herangezogen werden. Dadurch werden bei Neueingaben feldübergreifende Vorschläge präsentiert, die der Anwender nutzen kann. Dadurch ist eine schnellere und fehlerfreiere Dateneingabe möglich. Solche Daten müssen für den Datenbank-Server zuvor aus einem vorhandenen Datenbestand erzeugt und hinterlegt werden.
Parameter | Beschreibung |
---|---|
Suggestname= | Pfad und Dateiname, unter dem die Suggestdatei gefunden wird |
... | ... |
Jeder "Suggestname" ist frei definierbar. So kann bspw. für Artikel-Daten der Eintrag "Artikel" mit dem entsprechenden Pfad hinterlegt sein.
Sollten nach Einrichtung einer Datenbank neue Vorschlagsdateien eingerichtet werden, so ist der Datenbank-Server zu stoppen, in der ctxserver.ini der Suggestname= einzutragen und danach der Server neu zu starten. Es muss sichergestellt werden, dass die Dateien vom Server gelesen werden können
Konfigurationsblock: HTTPSRV¶
Eine CortexDB-Datenbank beinhaltet die Funktionen eines Webservers. Dadurch kann in einer Einzelumgebung auf die Installation eines separaten Webservers verzichtet werden. Werden mehrere Datenbanken betrieben oder greifen mehrere Benutzer auf eine Datenbank zu, ist die Nutzung des Cortex-eigenen HTTP-Servers zu empfehlen.
Der hier aufgeführte Konfigurationsblock beschreibt daher die Einstellungen für den integrierten Webserver in einer stand-alone-Umgebung (ohne separaten Webserver). Dieser kann bei Bedarf deaktiviert werden (siehe den ersten Parameter).
Parameter | Beschreibung |
---|---|
Enable=1 | 1: aktiv, 2: inaktiv |
Port=80 | HTTP-Port für den Browserzugriff |
SslPort=443 | HTTPS-Port für den Browserzugriff |
BindOnlyLocalHost=0 | 1=nur vom lokalen Rechner zugreifbar, 0 für alle |
SslCertPem=127.0.0.1.pem | Zertifikat für den HTTPS-Zugriff |
LogHttpSrv=1 | Log Datei für den HTTP(S) Zugriff erstellen |
HttpServerThreads=22 | Anzahl der sockets des httpd zum server (je Socket cs. 20 MB RAM-Nutzung) |
HttpRoot=www | Root-Verzeichnis für eigene Dateien (HTML, php) |
HttpAuth=0 | Standard-Authentifizierung oder Datenbank-Authentifizierung ohne Browser-Support |
WebClientName=Cortex-WebClient | Name der Datenbank in der Titelzeile des Browsers, wird auch bei Enable=0 vom HTTP-Server benutzt |
DefaultUrl=%V/i/CtxWebClient/index.php | %V=HTTPS, %v=HTTP |
PhpSessDir=ab | Verzeichnis, in dem die PHP-Sessions der eingeloggten User gespeichert werden (muß für jede DB einmalig sein) |
HttpDefaultUrlOnly=0 | Login nur mit der Default-URL |
SERVERVAR_CORS_ORIGIN=* | Deaktivierung des Cross-Origin Resource Sharing (CORS), damit Cross-Origin-Requests (Zugriffe von anderen Servern) ermöglicht werden (ggf. notwendig bei der Entwicklung Webapps, Apps oder NodeJS) |
Konfigurationsblock: UNIPLEX¶
In diesem Block werden Standardeinstellungen für die Nutzung des CortexUniplex gesetzt.
Parameter | Beschreibung |
---|---|
EnableApiList | (De-)Aktiviert die Nutzung von serverseitigem JavaScript in Listen |
HTTP-Server¶
Wird in einer Mehrserver-Umgebung ein separater HTTP-Server betrieben, ist auch dieser über die entsprechende ini-Datei zu konfigurieren. Die Konfigurationsblöcke und Parameter finden sich in der Datei "ctxhttpd.ini".
[HTTPSRV] Port=81 SslPort=444 BindOnlyLocalHost=0 SslCertPem=ssl_127.0.0.1.pem LogHttpSrv=1 HttpRoot=www CtxSrv=127.0.0.1:29000 ;HttpAuth=1 WebClientName=UniPlex DemoDB DefaultUrl=%V/i/UniPlex/index.php HttpDefaultUrlOnly=0 ;Rewrite=/i/ctxwcl PhpSessDir=ab vhosts=demo [demo] HttpRoot=www CtxSrv=127.0.0.1:29001 HttpAuth=0 WebClientName=DemoDB PhpSessDir=demo DefaultUrl=%V/i/UniPlex/index.php SERVERVAR_CORS_ORIGIN=*
Diese Datei erlaubt die Konfiguration mehrerer sog. "virtueller Hosts" für die Nutzung über Unterverzeichnisse einer URL. Hierbei ist die Auslagerung alle Server auf unterschiedlicher Hardware möglich. Eine Freischaltung des HTTP-Servers auf diese Datenbanken muss ggf. über interne Firewall-Regeln erfolgen.
Hinweis
An dieser Stelle ist zu beachten, dass in der ctxserver.ini im Block CTXSRV
die Option "Enable" deaktiviert ist, da der interne HTTP-Server der CortexDB nicht mehr benötigt wird.
Konfigurationsblock: HTTPSRV¶
Parameter | Beschreibung |
---|---|
Port=80 | HTTP-Port für den Browserzugriff |
SslPort=443 | HTTPS-Port für den Browserzugriff |
BindOnlyLocalHost=0 | 1=nur vom lokalen Rechner zugreifbar, 0 für alle |
SslCertPem=127.0.0.1.pem | Zertifikat für den HTTPS-Zugriff |
LogHttpSrv=1 | Log Datei für den HTTP(S) Zugriff erstellen; 1=aktiv |
HttpRoot=www | Root-Verzeichnis für ergänzende HTML-, PHP-Dateien (und weiter Formate) |
CtxSrv=127.0.0.1:29000 | Standard-Server und -Port der CortexDB |
HttpAuth=0 | 0=Datenbankauthentifizierung, 1=http-Authorisierung |
WebClientName=Datenbankname | wird als „_SERVER"-Variable an php übergeben |
DefaultUrl=%V/i/CtxWebClient/index.php | \%V steht fuer HTTPS %v fuer HTTP |
HttpDefaultUrlOnly=0 | am HTTP-Port nur auf die / antworten |
PhpSessDir=tmpdev | wird als Session-Verzeichnis für die Default-URL verwendet |
HttpServerThreads=22 | Anzahl der sockets des httpd zum server (je Socket cs. 20 MB RAM-Nutzung) |
vhosts=demo | Alle unter vhosts angegebenen Namen müssen als Sektionen folgen, in denen die Parameter der jeweiligen CortexDB festgelegt sind. |
Konfigurationsblock für einen virtual host¶
Die Parameter in dem Konfigurationsblock eines virtual host entsprechen den vorgenannten Parametern der globalen Einstellungen.
[demo] HttpRoot=www CtxSrv=127.0.0.1:29001 HttpAuth=0 WebClientName=DemoDB PhpSessDir=demo DefaultUrl=%V/i/UniPlex/index.php SERVERVAR_CORS_ORIGIN=*
Mehrere sog. "virtual host" innerhalb einer Konfiguration sind möglich. Dadurch kann der Zugriff auf verschiedene Datenbanken über einen zentralen Webserver bereitgestellt werden. Der Name des "virtual host" wird dann nur hinter die eigentliche Adresse geschrieben.
Der Aufruf für o.g. Beispiel lautet daher:
http://www.mein-server.de/demo
Der verteilte Betrieb von verschiedenen Datenbank-Servern und des Webservers ist daher auf verschiedene Hardware-Systeme denkbar.
Sicherheitseinstellungen für HTTP-Zugriffe¶
In der Standard-Installation überträgt der Webserver folgende Header-Informationen, um den Zugriff abzusichern (IP-Adresse und Ports werden hierfür aus den o.g. Konfigurationen abgeleitet):
Strict-Transport-Security: max-age=63072000; includeSubdomains Content-Security-Policy: default-src https: 'self' 'unsafe-eval' 'unsafe-inline' http://127.0.0.1:8888/ctxminisrv.html https://127.0.0.1:8888/ctxminisrv.html; object-src 'none'; img-src 'self' data:; X-Frame-Options: sameorigin X-XSS-Protection: 1; mode=block X-Permitted-Cross-Domain-Policies: none
In de ini-Dateien (ctxserver.ini bei "stand alone"; httpd.ini bei Webserver-Betrieb) können die Header abgeschaltet werden. Dazu sind folgende Einträge notwendig:
Parameter |
---|
HttpHeader=Strict-Transport-Security: |
HttpHeader=Content-Security-Policy: |
HttpHeader=X-Frame-Options: |
HttpHeader=X-XSS-Protection: |
HttpHeader=X-Permitted-Cross-Domain-Policies: |
Entsprechend sind auch eigene Header-Anpassungen möglich. Hierfür sind die hier angegebenen oder weitere Einträge von HttpHeader
notwendig.