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

$ /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 oder security2.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)