Die folgende Installationsanleitung für Goobi workflow bezieht sich auf Ubuntu Linux 20.04. Sie ist als Schritt-für-Schritt-Anleitung von oben nach unten geschrieben. Das bedeutet, dass Einstellungen und Konfigurationen aufeinander aufbauen. Wird die Reihenfolge nicht eingehalten, können unter Umständen bestimmte Befehle fehlschlagen.
Als Domainname wird in dieser Anleitung GOOBI.EXAMPLE.ORG verwendet. Dieser muss an den eigenen DNS-Namen angepasst werden.
Befehle aus dieser Anleitung werden am besten mit einem Klick auf das entsprechende Icon kopiert. Andernfalls besteht die Gefahr, ungewollte Whitespaces mitzukopieren.
Vorbereitung
Wir gehen davon aus, dass wir mit einem neuen, aus dem aktuellen Server install image installierten Ubuntu Linux 20.04 beginnen, ohne dass zusätzliche Pakete installiert sind. Zuerst muss man sich auf dem Server anmelden:
sshgoobi.example.org
Anschließend müssen Passwörter für die Goobi workflow Datenbank und das lokale LDAP generiert und als Variable in der Session gespeichert werden:
Es muss ein temporäres Verzeichnis für die Installation angelegt und das Goobi workflow Repository in dieses kopiert werden. Dieses Verzeichnis enthält verschiedene Dateien, die für die folgenden Installationsschritte benötigt werden:
Es wird empfohlen, dass Sie zu diesem Zeitpunkt bereits über einen DNS-Eintrag für den Server verfügen.
Konfiguration der Services
LDAP
Konfiguration des LDAP-Servers
Zuerst sollte LDAP ausschließlich für localhost zuständig sein. Dazu muss die Einstellung der SLAPD_SERVICES in der Datei /etc/default/slapd geändert werden:
sudopatch/etc/default/slapd<<"EOF"@@ -21,7 +21,7 @@ # sockets. # Example usage: # SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"-SLAPD_SERVICES="ldap:/// ldapi:///"+SLAPD_SERVICES="ldap://127.0.0.1:389/ ldapi:///" # If SLAPD_NO_START is set, the init script will not start or restart # slapd (but stop will still work). Uncomment this if you areEOF
ldapvi ist ein gutes Werkzeug für die spätere, einfache Bearbeitung von Werten im LDAP. Dazu müssen folgende Einträge in der Datei /etc/ldapvi.conf angepasst und eingefügt werden:
Der Samba-Server ist mit dem LDAP verbunden. Dazu muss die Konfigurationsdatei durch diejenige aus dem Repository ersetzt und dann die LDAP-Konfiguration angepasst werden:
sed -e"s|dc=GOOBI,dc=EXAMPLE,dc=ORG|$BASENAME|" $SOURCEDIR/goobi-workflow/install/samba/smb.conf | sudo tee /etc/samba/smb.conf
Samba benötigt dazu das Passwort für den LDAP Admin:
sudosmbpasswd-w"$PW_LDAP_GOOBI"
Samba unterscheidet nicht zwischen Groß- und Kleinschreibung bei Benutzernamen!
sudosystemctlrestartsmbd
Samba: Anzeige des freien Speichers
Der Upload der Bilder erfolgt in der Regel im Verzeichnispfad /opt/digiverso. Deshalb sollte Samba auch den freien Speicher von dort aus anzeigen:
Der Goobi-Workflow erfordert eine Datenbank und einen eigenen Benutzer. Der folgende Befehl importiert auch das Datenbankschema und erstellt eine Initialstruktur:
sudomysql-e"CREATE DATABASE goobi;USE goobi;SOURCE $SOURCEDIR/goobi-workflow/install/db/goobi_blank.sql;CREATE USER 'goobi'@'localhost' IDENTIFIED BY '$PW_SQL_GOOBI';GRANT ALL PRIVILEGES ON goobi.* TO 'goobi'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES;"
Einrichten des Tomcat Servers
In der Datei /etc/default/tomcat9 sollte der Speicher unter -Xmx an den verfügbaren Maschinenspeicher angepasst werden. Die zu verwendenden Garbage-Collector-Optionen werden ebenfalls ausgewählt und urandom konfiguriert, um einen schnelleren Tomcat-Start zu ermöglichen.
sudopatch/etc/default/tomcat9<<"EOF"@@ -5,7 +5,16 @@ # You may pass JVM startup parameters to Java here. If unset, the default # options will be: -Djava.awt.headless=true -XX:+UseG1GC-JAVA_OPTS="-Djava.awt.headless=true -XX:+UseG1GC"+JAVA_OPTS="-Djava.awt.headless=true -Xmx2g -Xms2g"+JAVA_OPTS="${JAVA_OPTS} -XX:+UseG1GC"+JAVA_OPTS="${JAVA_OPTS} -XX:+ParallelRefProcEnabled"+JAVA_OPTS="${JAVA_OPTS} -XX:+DisableExplicitGC"+JAVA_OPTS="${JAVA_OPTS} -XX:+CMSClassUnloadingEnabled"+JAVA_OPTS="${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom"+JAVA_OPTS="${JAVA_OPTS} -Dlog4j2.formatMsgNoLookups=true"+JAVA_OPTS="${JAVA_OPTS} -Dfile.encoding='utf-8'"++export UMASK=0022 # To enable remote debugging uncomment the following line. # You will then be able to use a Java debugger on port 8000.@@ -19,4 +28,4 @@ #SECURITY_MANAGER=true # Whether to compress logfiles older than today's-#LOGFILE_COMPRESS=1+LOGFILE_COMPRESS=1EOF
In der Datei /etc/tomcat9/server.xml ist der Tomcat so konfiguriert, dass er nur auf localhost lauscht, entsprechende Konnektoren werden für den Proxy eingerichtet:
sed-e"s/GOOBI_HOSTNAME/$NAME_HOST/"<<"EOF"|sudopatch/etc/tomcat9/server.xml@@ -67,54 +67,18 @@ Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 -->- <Connector port="8080" protocol="HTTP/1.1"- connectionTimeout="20000"- redirectPort="8443" />- <!-- A "Connector" using the shared thread pool-->- <!--- <Connector executor="tomcatThreadPool"- port="8080" protocol="HTTP/1.1"- connectionTimeout="20000"- redirectPort="8443" />- -->- <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443- This connector uses the NIO implementation. The default- SSLImplementation will depend on the presence of the APR/native- library and the useOpenSSL attribute of the- AprLifecycleListener.- Either JSSE or OpenSSL style configuration may be used regardless of- the SSLImplementation selected. JSSE style configuration is used below.- -->- <!--- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"- maxThreads="150" SSLEnabled="true">- <SSLHostConfig>- <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"- type="RSA" />- </SSLHostConfig>- </Connector>- -->- <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2- This connector uses the APR/native implementation which always uses- OpenSSL for TLS.- Either JSSE or OpenSSL style configuration may be used. OpenSSL style- configuration is used below.- -->- <!--- <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"- maxThreads="150" SSLEnabled="true" >- <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />- <SSLHostConfig>- <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"- certificateFile="conf/localhost-rsa-cert.pem"- certificateChainFile="conf/localhost-rsa-chain.pem"- type="RSA" />- </SSLHostConfig>- </Connector>- -->+ <Connector address="127.0.0.1" port="8080" protocol="HTTP/1.1"+ maxThreads="400"+ URIEncoding="UTF-8"+ enableLookups="false"+ disableUploadTimeout="true"+ proxyName="GOOBI_HOSTNAME"+ proxyPort="80" /> <!-- Define an AJP 1.3 Connector on port 8009 -->- <!--- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />- -->+ <Connector address="127.0.0.1" port="8009" protocol="AJP/1.3"+ secretRequired="false"+ connectionTimeout="20000"+ maxThreads="400"+ URIEncoding="UTF-8" />@@ -160,7 +124,12 @@ Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" -->+ <!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />+ -->+ <Valve className="org.apache.catalina.valves.CrawlerSessionManagerValve"+ crawlerUserAgents=".*[bB]ot.*|.*Yahoo! Slurp.*|.*Feedfetcher-Google.*|.*Apache-HttpClient.*|.*[Ss]pider.*|.*[Cc]rawler.*|.*nagios.*|.*Yandex.*"
+ sessionInactiveInterval="60"/> </Host>EOF
Dann wird die Sessionpersistenz innerhalb der Datei /etc/tomcat9/context.xml durch Auskommentieren der folgenden Zeile deaktiviert:
sudopatch/etc/tomcat9/context.xml<<"EOF"@@ -25,7 +25,5 @@ <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts -->- <!-- <Manager pathname="" />- --> </Context>EOF
Die Testaccounts müssen in das LDAP geschrieben werden. Bitte beachten Sie, dass dn, sambaPrimaryGroupSID und sambaSID in der Datei testuser.ldif angepasst wurden:
Nun werden die home directories für den user erstellt. In einem ersten Schritt sollte man allerdings sichergehen, dass die user existieren:
idtestadmin
Wenn der user testadmin gefunden wurde, werden hiermit die home directories erstellt:
cd/home&&for i intestadmintestscanningtestmetadatatestimagingtestqctestprojectmanagement ; dosudomkdir $isudochown $i:tomcat $isudochmod775 $idonecd-
Weiterhin wird die SID für Goobi workflow geändert, der Wert für userDN angepasst, wir nutzen den soeben installierten lokalen ldap und entfernen einen ungenutzten user:
sudomysqlgoobi-e"update ldapgruppen set sambaSID='$SID-{uidnumber*2+1000}', sambaPrimaryGroupSID='$SID-100', userDN='cn={login},ou=users,ou=goobi,$BASENAME', adminLogin='cn=admin,$BASENAME', adminPassword='$PW_LDAP_GOOBI', ldapUrl='ldap://localhost:389/', nextFreeUnixId='cn=NextFreeUnixId,$BASENAME', encryptionType='SHA', useSsl=0, authenticationType='ldap', readonly=0, readDirectoryAnonymous=0, useLocalDirectoryConfiguration=0, ldapHomeDirectoryAttributeName='homeDirectory', useTLS=0 where ldapgruppenID=2;"sudomysqlgoobi-e"delete from benutzer where login='goobi';"
Ein Test des SMB-Zugangs kann folgendermaßen durchgeführt werden:
Mit dem Account testadmin und dem angegebenen Passwort $PW_GOOBITESTUSER ist es nun möglich, sich anzumelden. Die Anwendung läuft unter folgender URL: http://$NAME_HOST/goobi/uii/index.xhtml
Troubleshooting
Überprüfung der Log-Dateien:
sudo journalctl -eu tomcat9.service
less /opt/digiverso/logs/goobi.log
Läuft der Tomcat Server?
ps aux | grep tomcat
sudo systemctl status tomcat9.service
Läuft MariaDB? Existiert eine Datenbank "goobi"?
ps aux | grep -e mysql -e maria
sudo mysqlshow goobi
Läuft der Apache httpd Deamon? Ist der vhost "goobi" aktiviert?
Können Sie auf Goobi workflow über die Kommandozeile des Servers zugreifen?
Zugriff auf den Apache httpd: curl http://localhost/goobi/uii/index.xhtml
Zugriff auf den Tomcat direkt: curl http://localhost:8080/goobi/uii/index.xhtml
Überprüfen Sie die Netzwerkkonfiguration und den Hostnamen / DNS-Namen des Servers. Insbesondere wenn Sie diese Installation als ersten Test in einer VirtualBox-Umgebung ausführen, hängt der Zugang von den Einstellungen des VirtualBox Netzwerkadapters ab und DNS-Namen funktionieren möglicherweise nicht. Versuchen Sie in diesem Fall folgende URL: http://$IP/goobi/uii/index.xhtml
Weitere Konfiguration
Konfigurationsdatei**: goobi_opac.xml**
In der Datei goobi_opac.xml kann der verwendete Katalog eingetragen oder angepasst werden:
In der Konfigurationsdatei goobi_projects.xml sind einige wichtige Parameter für die Erstellung von Vorgängen definiert. Dies betrifft unter anderem den Institutsnamen, das aktuelle Jahr oder auch den standardmäßig verwendeten Katalog:
/opt/digiverso/goobi/config/goobi_projects.xml
<?xml version="1.0" encoding="UTF-8"?><goobiProjects> <projectname="default"> <createNewProcess> <itemlist> <itemfrom="werk"multiselect="true"> Creator of digital edition <selectlabel="Library of Congress (LoC)">Library of Congress</select> </item> [...] <item docstruct="topstruct" isnotdoctype="periodical|multivolume" metadata="_dateDigitization" multiselect="true" required="true" ughbinding="true">
Digitisation date <selectlabel="2021">2021</select> </item> [...] </itemlist> <opacuse="true"> <catalogue>Library of Congress</catalogue> </opac> </createNewProcess> </project></goobiProjects>
In der Konfigurationsdatei goobi_digitalCollections.xml können verschiedene Kollektionen für das erstellte Beispielprojekt angepasst werden. Als Beispiel könnte dies so aussehen:
Die Einrichtung von NFS ist nur relevant, wenn auch der Goobi viewer installiert ist oder installiert werden soll und dessen Installation nicht auf demselben Rechner durchgeführt wird.
In diesem Fall muss der Ordner /opt/digiverso/viewer vom Goobi viewer Server exportiert und in den Goobi workflow Server eingebunden werden. Die Anpassungen hierfür stellen sich wie folgt dar:
export IP_VIEWER=1.2.3.4# IP-Adresse of the Goobi viewer serversudoaptinstall-ynfs-commonsudomkdir/opt/digiverso/viewer/hotfolder-psudochownroot:root/opt/digiverso/viewer/hotfolderecho "${IP_VIEWER}:/opt/digiverso/viewer/hotfolder /opt/digiverso/viewer/hotfolder nfs rsize=8192,wsize=8192,soft,intr,rw,nolock,auto,x-systemd.automount 0 0" | sudo tee -a /etc/fstab
Optional: Änderungen mit Git nachvollziehbar machen
Für eine bessere Nachvollziehbarkeit von Änderungen an Konfiguration, Plugins, Regelsätzen, Skripten und XSLTs, kann man (optional) ein lokales Git-Repository anlegen: