Links

9.1. Vorbereitung eines Updates

Allgemeine Hinweise

Mit einem Update von Goobi workflow sollten auch alle Plugins aktualisiert werden. Dafür sollte am besten auch die Seite Installierte Plugins in Goobi workflow beachtet werden. Sollte diese hingegen noch nicht existieren, müssen die relevanten Dateien im Dateisystem identifiziert werden. Hierbei ist wichtig, auch die REST API nicht zu vergessen.
Befehle aus dieser Anleitung werden am besten mit einem Klick auf das entsprechende Icon kopiert. Andernfalls besteht die Gefahr ungewollte Whitespaces mit zu kopieren.

Sinnvolle Vorarbeiten vor Updatedurchführung

Überprüfung des Zustands

Für einen guten Zustand des Systems sollten vor und/oder nach dem Update die folgenden Dinge geprüft werden:
  • Konfigurationsdateien auf XML-Fehler prüfen:
find /opt/digiverso/goobi/{rulesets,config} /opt/digiverso/itm/{config,templates} /etc/tomcat{,7,8,9} -name "*.xml" -exec xmllint --noout {} \;
  • Es kann vorkommen, dass in der Datenbank Benutzeraccounts ohne Authentifizierungsart stehen. Diese können mit dem folgenden SQL Statement zur Korrektur ermittelt werden. Sofern das Kommando etwas ausgibt, müssen die entsprechenden Benutzer in der Datenbanktabelle gesucht und korrigiert werden:
mysql goobi -e'SELECT DISTINCT ldapgruppenid FROM benutzer WHERE ldapgruppenid NOT IN (SELECT ldapgruppenid FROM ldapgruppen) OR ldapgruppenid IS NULL'
  • Für alle Datenbanktabellen verwendet Goobi workflow InnoDB:
mysql goobi -NBse 'SELECT table_name FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA="goobi" and TABLE_TYPE="BASE TABLE" and ENGINE != "InnoDB"' | while read i; do echo $i; mysql goobi -e "alter table $i ENGINE = InnoDB"; done
  • goobi_opac.xml: Bei mehrbändigen Werken muss der rulesetChildType gesetzt sein (Vorlage).
  • goobi_projects.xml: Es darf kein BoundBook mehr auftauchen (Vorlage).

Erstellung eines Backups

Sinnvollerweise wird vor dem Backup der Tomcat ausgestellt. Allerdings ist vorher notwendig zu prüfen, dass kein Anwender mehr in Goobi workflow angemeldet ist. Neben der Anzeige der angemeldeten Benutzer in der Oberfläche können die letzten Einträge im Prozesslog oder die letzten Logins für die Bewertung der Lage hilfreich sein:
mysql goobi -e'select creationDate, userName, type, left(content,70) from journal order by creationDate desc limit 30'
grep user\ DN /opt/digiverso/logs/goobi.log -B1 | tail
Anschließend kann der Tomcat Prozess für Goobi workflow beendet werden:
systemctl stop tomcat9
Mit den folgenden Befehlen können ein Backupverzeichnis erstellt und die Dateien dorthin kopiert werden:
BAK=/home/intranda/BACKUP/$(date -I) && mkdir $BAK
mysqldump goobi | gzip > $BAK/goobi.$(date +%s).sql.gz
mkdir $BAK/goobi $BAK/webapps
cp -at $BAK/goobi /opt/digiverso/goobi/{config,xslt,lib,plugins,rulesets,scripts}
cp -at $BAK/webapps /var/lib/tomcat{,7,8,9}/webapps/goobi
cp -at $BAK/ /opt/digiverso/tomcat-lib
cp -at $BAK/ /opt/digiverso/config
# If intranda TaskManager is installed
cp -at $BAK/webapps /var/lib/tomcat{,7,8,9}/webapps/itm
cp -at $BAK/ /opt/digiverso/itm
# If LayoutWizzard is installed
cp -at $BAK /opt/digiverso/[L,l]ayout[w,W]izzard

Kopieren der neuen Dateien auf das System

Es empfiehlt sich, die Dateien auf dem zu aktualisierenden System nach /tmp/g3 zu kopieren. Mit der folgenden Funktion können dann die Unterschiede zwischen zwei Konfigurationsdateien leicht ermittelt werden:
gdiff() { diff -uBw /tmp/g3/"$1" /opt/digiverso/goobi/config/"$1" | colordiff; }
Weiter können mit den folgenden Befehlen die Dateien an die korrekten Pfade bewegt werden:
mv /tmp/g3/goobi.war /var/lib/tomcat9/webapps/
mv /tmp/g3/statistics_template.* /opt/digiverso/goobi/plugins/statistics/
mv /tmp/g3/plugin_intranda_*GUI*.jar /opt/digiverso/goobi/plugins/GUI/
mv /tmp/g3/plugin_intranda_administration_*.jar /opt/digiverso/goobi/plugins/administration/
mv /tmp/g3/plugin_intranda_command*.jar /opt/digiverso/goobi/plugins/command/
mv /tmp/g3/plugin_intranda_step_*.jar /opt/digiverso/goobi/plugins/step/
mv /tmp/g3/plugin_intranda_dashboard*.jar /opt/digiverso/goobi/plugins/dashboard/
mv /tmp/g3/plugin_intranda_opac*.jar /opt/digiverso/goobi/plugins/opac/
mv /tmp/g3/plugin_intranda_import*.jar /opt/digiverso/goobi/plugins/import/
mv /tmp/g3/plugin_intranda_export*.jar /opt/digiverso/goobi/plugins/export/
mv /tmp/g3/plugin_intranda_statistics*.jar /opt/digiverso/goobi/plugins/statistics/
mv /tmp/g3/plugin_intranda_validation*.jar /opt/digiverso/goobi/plugins/validation/
mv /tmp/g3/plugin_intranda_workflow*.jar /opt/digiverso/goobi/plugins/workflow/
mv /tmp/g3/plugin_intranda_rest_*.jar /opt/digiverso/goobi/lib/
# If intranda TaskManager is installed
mv /tmp/g3/itm.war /var/lib/tomcat9/webapps/
mv /tmp/g3/TaskClient.jar /opt/digiverso/itm/bin/TaskClient.jar
Nun können die vorhandenen Konfigurationsdateien mit den neuen abgeglichen werden.
Gerade Konfigurationsdateien von Plugins können aufgrund einer Änderung des Schemas für die Benennung inzwischen einen anderen Dateinamen haben.
Für den Vergleich der Dateien kann die Funktion gdiff verwendet werden. Die gewünschten Änderungen sollten nun gemergt und in die neuen Dateien übernommen werden.
Nach Abschluss der Arbeiten kann über den Abgleich der Zeitstempel ermittelt werden, ob alle notwendigen Dateien aktualisiert wurden:
ls -lh /opt/digiverso/goobi/plugins/*/*
ls -lh /opt/digiverso/goobi/lib/*
Plugins, die als Tar-Paket gebaut werden:
goobiInstallPlugin() {
tar -C /opt/digiverso/goobi/ -xvf $1 --exclude "pom.xml"
}
# Example:
goobiInstallPlugin /tmp/g3/plugin_intranda_step_replace-images.tar

Testen des installierten Updates

Die folgenden Dinge sollten nach einem Update geprüft werden:
  • Annehmen und Abgeben von Aufgaben, insbesondere das Verlinken (gegebenenfalls Mounten) des Image-Ordners ins Homeverzeichnis
  • Bildanzeige im ImageQA Plugin
  • Bild- und Thumbnailanzeige im Metadateneditor
  • Bildanzeige im LayoutWizzard Plugin
  • Generierung von Laufzetteln
  • Übergabe von Jobs an den intranda TaskManager sowie eine Rückmeldung im Vorgangslog wenn ein Job im TaskManager abgebrochen wird (bei Änderungen an der Kommunikation zwischen Goobi workflow und dem TaskManager)
  • Katalogabfragen
  • Alle Plugins sind aktuell in: Administration -> Installierte Plugins

Rescue im Falle von auftretenden Problemen

Manchmal kann es vorkommen, dass nach dem Update Fehler auftreten. Die folgenden Punkte helfen dabei, typische Probleme zu identifizieren und zu beheben:

Goobi startet nicht - ActiveMQ

Wenn der Tomcat nach dem Start hängen bleibt, kann der Inhalt des Ordners /opt/digiverso/goobi/activemq/ daran Schuld sein. Leeren und neu starten hilft in diesem Fall:
find /opt/digiverso/goobi/activemq/ -type f -delete

LayoutWizzard

Die LayoutWizzard.jar in /opt/digiverso/{goobi,itm}/lib/ müssen gleich sein. Symbolische Links funktionieren nicht.

Durchführung des eigentlichen Updates

Nachdem alle Vorarbeiten durchgeführt wurden, kann das eigentliche Update erfolgen. Dieses ist in einzelnen Schritten detailliert hier erläutert: