Administration¶
Einleitung¶
Architektur und Schnittstellen¶
Dem Design des Visual Library Servers liegt eine moderne Drei-Schichten-Architektur (three tier architecture) zu Grunde. Interne Datenquellen wie das Dateisystem, Datenbank und XML Dokumente werden dabei vor dem Benutzer verborgen und abstrahiert. Der Zugriff auf Daten erfolgt mittels Geschäftslogik über eine reiche Schnittstelle und Standardprotokolle. Die Geschäftslogik sorgt unter anderem für die Validierung der Daten, Zugriffsberechtigung und die Koordination von Arbeitsabläufen.
Die Kommunikation zwischen dem Visual Library Server und externen Komponenten wie einem Web Browser, dem Visual Library Manager oder anderen Systemen erfolgt über standardisierte Protokolle und Datenformate wie HTTP, AJAX und XML. Für den Import und Export von Daten werden herstellerunabhängige und in der Bibliothekswelt verbreitete Formate wie METS, MODS, TIFF, PDF u.ä. verwendet. Dabei erfüllen wir die Richtlinien und Standards der DFG für Digitalisierungsprojekte.
Installation in isolierter Umgebung¶
Der Visual Library Server (VLS) wird in einer isolierten Umgebung installiert. Dabei muss das Betriebssystem nur wenige Programme und Dateien bereitstellen. Diese Programme sind auf allen verbreiteten Linuxplattformen vorhanden (Apache HTTP Server, Firebird Datenbank Server und Konfiguration Supervisor).
Alle weiteren Abhängigkeiten wie Python, Java und weitere Bibliotheken werden von dem System automatisiert heruntergeladen, konfiguriert, kompiliert und in der isolierten Umgebung installiert. Dabei werden vorhandenen Dateien des Betriebssystems nicht überschrieben. Die isolierte Umgebung erlaubt es, genau definierte und geprüfte Versionen von Abhängigkeiten zu installieren, ohne das restliche Betriebssystem zu modifizieren. Desweiteren können Betriebssystemupdates gefahrlos installiert werden, ohne die Funktionalitäten von Visual Library zu gefährden.
Die isolierte Umgebung wird von semantics im Rahmen der Wartung regelmäßig mit Sicherheitsupdates versorgt, die vorher auf ihre Kompatibilität geprüft worden sind.
Datenbank¶
Die Datenhaltungsschicht von Visual Library ist speziell auf die Fähigkeiten des Firebird Datenbankservers abgestimmt. Aus Performanz-und Sicherheitsgründen werden große Teil der Datenbanklogik in der Datenbank selbst implementiert. Dabei werden Features wie referenzielle Integrität über Foreign Key Beziehungen, Triggers, Stored Procedures und Selectable Stored Procedures eingesetzt. Diese Fähigkeiten relationaler Datenbanken (RDBMS) gewährleisten, dass eine Datenbank niemals in einen inkonsistenten Zustand gelangen kann. Desweiteren steigern sie die Performanz des Systems, da komplexe Berechnungen und Abfragen innerhalb der Datenbank erfolgen und erst das Ergebnis einer Abfrage über die vergleichbar langsamere Schnittstelle nach außen gelangt. Auf Grund der Baumstruktur der Haupttabelle und auch der Möglichkeit, von mehreren Systemen gleichzeitig auf eine Datenbank zuzugreifen, werden die oben beschriebenen Möglichkeiten massiv eingesetzt.
Backup und Archivierung¶
Das System erstellt jede Nacht automatisch ein Backup der Datenbank nach dem Prinzip des Drei-Generationen-Backups. Dabei werden Tagesbackups über eine Woche, Freitagbackups über einen Monat und das letzte Freitag Backup eines Monats über ein Jahr vorrätig gehalten. Zusätzlich kann man über die semantics-Wartungs-Weboberfläche jederzeit ein vollständiges Backup der Datenbank erstellen. Die Daten und Datenbankdefinition werden in einem platzsparenden Format in einer einzigen ZIP Datei gesichert.
Alle Backups können mit Betriebssystemmitteln (Samba, NFS, rsync) auf einen anderen Server kopiert werden. Über die semantics-Wartungs-Weboberfläche kann ein Backup lokal oder über einen Upload zurückgespielt und damit die aktuelle Datenbank überspielt werden. Der Server ist dabei für wenige Minuten nicht erreichbar.
Der Datenbestand (für VL-retro) kann nach entsprechender Systemkonfiguration systemunabhängig in unkomprimierten ZIP-Kapseln exportiert und archiviert werden. Diese ZIP-Kapseln enthalten die Original-Digitalisate, ggf. die Daten der Texterkennung sowie eine METS-XML-Datei mit den Metadaten und den Strukturinformationen.
Verzeichnis- und Dateistruktur¶
Installationsumgebung¶
Verzeichnisse für Sammlungen¶
domain/
Enthält Einstellungen und Dateien, die von den von VLS gehosteten Sammlungen („Domains“) verwendet werden.
domain/root/
Enthält globale Definitionen und Dokumente, die für alle Sammlungen verwendet werden (Vererbung), sofern dort keine abweichenden domainspezifischen Definitionen vorgenommen werden.
domain/root/config/
Enthält globale Konfigurationsdateien.
domain/root/docs/
Enthält XML-Dateien, aus denen VLS statische Webseiten bzw. Seitenbestandteile erzeugt (z.B. die statischen Inhalte von Startseite und Impressum).
domain/root/static/
Enthält globale Stildefinitionen, Bilddateien u. ä. für die Bedienoberfläche der gehosteten Sammlungen.
domain/beispiel/
Die Namen der Domain-Verzeichnisse sowie ihr jeweiliger Inhalt sind abhängig von den gehosteten Sammlungen („Domains“).
Die Domain-Verzeichnisse enthalten spezifische Definitionen und Dokumente für die einzelnen Sammlungen. Diese haben ggf. Vorrang vor den jeweiligen globalen Definitionen und Dokumenten im
root/
-Verzeichnis (Vererbung).domain/beispiel/config/
Enthält ggf. spezifische Konfigurationsdateien für die jeweilige Sammlung.
domain/beispiel/docs/
Enthält ggf. spezifische XML-Dateien für die jeweilige Sammlung, aus denen VLS statische Webseiten bzw. Seitenbestandteile erzeugt.
domain/beispiel/dynamic/
Enthält Skripte und Definitionen, die VLS innerhalb der jeweiligen Sammlung für die Erzeugung dynamischer Webseiten verwendet.
domain/beispiel/static/
Enthält ggf. spezifische Stildefinitionen, Bilddateien u. ä. für die Bedienoberfläche der Sammlung.
Isolierte Umgebung¶
environment/
(nur Windows)Enthält Softwarekomponenten, die zur Installation und zum Betrieb von VLS benötigt werden.
environment/dlls/
(nur Windows)Enthält verschiedene Programmbibliotheken, unter anderem für die Verarbeitung diverser Bildformate.
environemnt/jre/
(nur Windows)Enthält die Java-Laufzeitumgebung von Sun Microsystems.
environment/PythonXX/
(nur Windows)Enhält die Python-Laufzeitumgebung.
env/
(nur GNU/Linux)Enthält die Laufzeitumgebung für GNU/Linux.
server/
Installationsverzeichnis von Visual Library Server.
server/bin/
Enthält Skripte, die bei der Installation von VLS benötigt werden.
server/config/
Enthält globale Konfigurationsdateien für VLS, die für alle Sammlungen verwendet werden (Vererbung), sofern dort keine abweichenden domainspezifischen Definitionen vorgenommen werden.
server/config/ssl/
Enthält das Server-Zertifikat und den privaten Schlüssel für SSL-Verbindungen.
server/config/vlm/
Enthält verschiedene Definitionen, die von Visual Library Manager verwendet werden.
server/config/accessLevels.xml
Definiert Zugriffsrechte für Benutzer und Benutzergruppen. (Wird derzeit nicht verwendet.)
server/config/configspec.ini
Muster der Haupt-Konfigurationsdatei für VLS, das als Vorlage für spezifisch angepaßte Server-Konfigurationsdateien verwendet werden kann.
server/config/explain.xml
Definiert die Suchfelder und Operatoren für das SRU-Suchformular.
server/config/languages.xml
Definiert Benennungen für UI-Elemente und Meldungen in verschiedenen Sprachen (für mehrsprachige Bedienoberflächen).
server/config/oai.xml
Definiert die OAI-Schnittstellen.
server/config/ocr.xml
Definiert Strukturelementtypen, Schriftfamilien und Sprachen für die OCR.
server/config/paginate.xml
Definiert die Paginierungs-Typen (Stile der Seitenzählung).
server/config/qs.xml
Definiert die Bearbeitungs-/Prüfstatus für die Qualitätssicherung, Paginierungs-Typen und die zu prüfenden Eigenschaften der Bilddateien (Digitalisate).
server/config/templateconfig.xml
Definiert die Struktur der Webseiten (Auswahl und Anordnung ihrer funktionalen Bestandteile).
server/config/types.xml
Definiert die Klassifizierungs- und Strukturelement-Typen für die Dokumentklassifikation und Tiefenerschließung.
server/config/wf.xml
Definiert die Workflow-Status für die Tiefenerschließung und Qualitätssicherung.
server/config/z3950.xml
Definiert die Z.3950-Schnittstelle.
server/database/
server/database/admin/
server/database/create/
server/database/load/
server/database/update/
Enthält Definitionen für die von VLS verwendeten Datenbanken.
server/docs/
Enthält eine Liste der verwendeten Softwarekomponenten, Lizenztexte und Beispielkonfigurationen.
server/dynamic/
server/dynamic/smc/
server/dynamic/smclib/
server/dynamic/sql/
server/dynamic/thirdparty/
server/dynamic/vls/
server/dynamic/xsl/
Enthält globale Skripte und Definitionen, die VLS für die Erzeugung dynamischer Webseiten verwendet.
server/static/
server/static/css/
server/static/flash/
server/static/graphics/
server/static/html/
server/static/scripts/
server/static/xml/
Enthält globale Stildefinitionen, Skripte, Bilddateien u.ä. für die Bedienoberfläche der gehosteten Sammlung(en).
server/tests/
Enthält die Haupt-Konfigurationsdatei für Visual Library Server sowie Skripte zum Testen und zum Starten des Servers.
server/Makefile
server/setup.py
Skripte für die Installation/Einrichtung von VLS.
Vererbung innerhalb der Installationsumgebung¶
Innerhalb der Installationsumgebung von Visual Library Server können bestimmte globale Einstellungen und Inhalte vererbt und bei Bedarf spezifisch angepaßt werden:
server/config/
→domain/root/config/
→domain/beispiel/config/
(Vererbung von Konfigurationen)server/dynamic/
→domain/beispiel/dynamic/
(Vererbung von Skripten und Definitionen für dynamische Webseiten)server/static/
→domain/root/static/
→domain/beispiel/static/
(Vererbung von Skripten, Definitionen und Bilddateien für statische Webseiten)domain/root/docs/
→domain/beispiel/docs/
(Vererbung von statischen Seiteninhalten)
Server-Instanz¶
Firebird-Datenbank¶
Der Speicherort der Firebird-Datenbank wird in der
Haupt-Konfigurationsdatei von Visual Library Server (.ini
) im
Abschnitt [database]
angegeben.
Laufzeitumgebung der Server-Instanz¶
In der Standardkonfiguration liegt die Laufzeitumgebung von Visual
Library Server vollständig innerhalb des ${VLS}/var/
-Verzeichnisses,
dessen Speicherort in der Haupt-Konfigurationsdatei (.ini
) im
Abschnitt [path
] angegeben wird. Die benötigten Unterverzeichnisse
werden automatisch angelegt. Bei Bedarf ist es ebenfalls möglich, die
Pfade aller Verzeichnisse separat in der Haupt-Konfigurationsdatei von
Visual Library Server (.ini) im Abschnitt [path] zu spezifizieren. In
diesem Fall ist die Backup-Strategie entsprechend anzupassen (siehe
Kapitel 3.2). Die Standard-Verzeichnisstruktur können Sie der
nachfolgenden Liste entnehmen.
var/
Enthält die Laufzeitumgebung der VLS-Instanz.
var/backup/
Enthält Sicherungskopien der Datenbank, die über die Admin-Oberfläche bzw. den Job-Scheduler erstellt werden.
var/import/
Übergabe-Verzeichnis für den Import der Bilddateien (Digitalisate).
var/index/
Enthält den Lucene-Index für die Volltextsuche.
var/log/
Enthält Log-Dateien, die von VLS angelegt werden.
var/media
Enthält die Bilddateien der Sammlung sowie daraus generierte Daten.
var/media/archive/
Enthält die Original-Bilddateien (Digitalisate).
var/media/footercache/
Enthält den Cache für die Fußzeilen von Bilddateien (zur Verwendung im DFG-Viewer).
var/media/import/
Enthält eine Sicherungskopie der über das
import/
-Verzeichnis importierten Daten.var/media/tilecache/
Enthält den Cache für die „Kachel-Ansicht“ der Digitalisate (bei Anzeige in hoher Bildauflösung).
var/media/userpattern/
Enthält ggf. die Erkennungs-Muster der Texterkennungs-Software ABBYY Finereader.
var/media/vfs/
Enthält das „Virtual File System“ von VLS, in dem die herunterladbaren PDF-Dateien der Digitalisate sowie die mittels Texterkennung (OCR) erzeugten Volltexte gespeichert werden.
var/media/webcache/
Enthält die verkleinerten Voransichten der Bilddateien (Digitalisate), die für die Webseiten verwendet werden.
var/tmp/
Enthält temporäre Dateien, die während des Betriebs von VLS erzeugt werden.
var/upload/
Import-Verzeichnis für Upload-Vorgänge.
Betrieb von Visual Library Server¶
Visual Library Server steuern und überwachen¶
Zum Steuern und Überwachen von Visual Library Server kommt das Open-Source-Tool Supervisor zum Einsatz (siehe http://supervisord.org/. Die offizielle Dokumentation von Supervisor ist unter der Adresse http://supervisord.org/manual/current/index.html zu finden.
Bestandteile von Supervisor¶
Serverprozess (Daemon):
supervisord
Frontend:
supervisorctl
Konfigurationsdateien:
/etc/supervisor.conf
und/etc/supervisor.conf.d/*.ini
Bemerkung
Nach einer Änderung der Konfigurationsdateien muss Supervisor neugestartet werden, z.B. mit:
$ supervisorctl reload
oder:
$ supervisorctl reread
$ supervisorctl stop MODUL
$ supervisorctl remove MODUL
$ supervisorctl add MODUL
Im letzteren Fall wird nur MODUL
neu gestartet.
#### Supervisorctl starten/anhalten
``` console
$ /etc/init.d/supervisor {start|stop|restart|status}
Steuern und Überwachen von VLS mittels supervisorctl
(Beispiele)¶
Für die Verwendung von supervisorctl
sind root-Benutzerrechte
erforderlich.
Status-Informationen der überwachten Server abrufen:
$ supervisorctl status server1 EXITED Nov 10 01:52 PM server2 RUNNING pid 16121, uptime 0:06:09
Einen Server starten:
$ supervisorctl start server1 server1: started
Die aktuellen Log-Ausgaben eines Servers verfolgen:
$ supervisorctl tail -f server1 ==> Press Ctrl-C to exit <== [Ausgabe]
Einen Server neustarten:
$ supervisorctl restart server1 server1: stopped server1: started
Einen Server anhalten:
$ supervisorctl stop server1 server1: stopped
Aufrufen der Hilfe über die Supervisor-Shell:
$ supervisorctl server1 EXITED Nov 10 01:52 PM server2 RUNNING pid 16121, uptime 0:06:09 supervisor> help Documented commands (type help <topic>): ======================================== EOF exit maintail quit restart start stop version clear help open reload shutdown status tail supervisor> help reload reload Restart the remote supervisord. supervisor> help shutdown shutdown Shut the remote supervisord down. supervisor> help stop stop <name> Stop a process stop <gname>:* Stop all processes in a group stop <name> <name> Stop multiple processes or groups stop all Stop all processes supervisor>
Starten/Anhalten des Firebird-Datenbankservers¶
$ /etc/init.d/firebird {start|stop}
Vorsicht
Um Datenverluste zu vermeiden, sollte Visual Library Server vor dem Anhalten des Datenbankservers angehalten werden.
Bei einem (Neu-)Start des Datenbankservers kann Visual Library Server erst gestartet werden, nachdem der Datenbankserver vollständig geladen ist.
Server-Prozesse¶
Im laufenden Betrieb von Visual Library Server werden die folgenden Prozesse auf dem Server ausgeführt:
pythonXX -m vls.cli.server /pfad/zu/server.ini
pythonXX /usr/bin/supervisord
fbguard
fbserver
ggf. weitere Python-Prozesse, die von der VLS-Instanz erzeugt werden
Datensicherung¶
Datensicherungen für Visual Library Server umfassen in der Regel:
spezifische Systemkomponenten und Programmpakete, die mit den allgemeinen Systembackups gesichert werden,
die Server-Installation
die Konfigurationsdateien
die nichtwiederherstellbaren Nutzdaten (Datenbank, Digitalisate, ggf. Volltexte)
optional die gesamte Laufzeitumgebung der Server-Instanz
Die Daten müssen regelmäßig bzw. nach Bedarf mittels einer geeigneten Backup-Strategie gesichert werden, wobei die nachfolgenden Informationen als Anhaltspunkt dienen können.
Allgemeine Systembackups¶
Im Zuge der allgemeinen Systembackups sind die folgenden Daten zu sichern:
der Inhalt des Verzeichnisses
/etc
die Liste der installierten Debian- bzw. RPM-Pakete
ggf. bestimmte Dateien in den Verzeichnissen
/var
und/opt
VLS-spezifische Backups¶
Einmalig bzw. nach Updates oder Änderungen an Visual Library Server sind die folgenden Daten zu sichern:
die Supervisor-Konfigurationsdateien
/etc/supervisord.conf
und das Verzeichnis/etc/supervisord.conf.d/
die Haupt-Konfigurationsdatei der VLS-Instanz (
.ini
)das Installationsverzeichnis von Visual Library Server
das Laufzeitverzeichnis des Firebird-Datenbankservers, insbesondere die Datei
security.fdb
odersecurity2.fdb
im Verzeichnis/opt/firebird-XXX
oder/var/lib/firebird
(je nach Betriebssystem)
Die folgenden Daten müssen obligatorisch in regelmäßigen Abständen gesichert werden, da sie im Fall eines Verlusts nicht (oder nur mit sehr hohem Aufwand) wiederherstellbar sind!
die Original-Bilddateien im Verzeichnis ${VLS}/var/media/archive (bzw. im entsprechenden in der Server-Konfigurationsdatei angegebenen Verzeichnis)
die aktuelle, ZIP-komprimierte Sicherungskopie der Datenbank im Verzeichnis
${VLS}/var/backup/
(bzw. im entsprechenden in der Server-Konfigurationsdatei angegebenen Verzeichnis) Sicherungskopien werden über die Admin-Oberfläche bzw. den Job Scheduler erstellt.
Vorsicht
Die .fdb
-Dateien können nicht im laufenden Betrieb von Visual
Library Server und des Firebird-Datenbankservers gesichert werden!
Nur .fbk
-Dateien können problemlos gesichert werden.
Darüber hinaus wird die Sicherung der folgenden Daten empfohlen:
der Inhalt des gesamten Verzeichnisses
${VLS}/var
(bzw. der entsprechenden in der Server-Konfigurationsdatei angegebenen Verzeichnisse)