9.1. Vorbereitung eines Updates
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.
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
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
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
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
Manchmal kann es vorkommen, dass nach dem Update Fehler auftreten. Die folgenden Punkte helfen dabei, typische Probleme zu identifizieren und zu beheben:
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
Die
LayoutWizzard.jar
in /opt/digiverso/{goobi,itm}/lib/
müssen gleich sein. Symbolische Links funktionieren nicht.Nachdem alle Vorarbeiten durchgeführt wurden, kann das eigentliche Update erfolgen. Dieses ist in einzelnen Schritten detailliert hier erläutert:
Last modified 27d ago