1. Core Updates

Allgemein

Zum Update des Goobi viewer Indexers und des Goobi viewer Connectors auf die neuste Version immer die folgenden Kommandos benutzen:

mkdir /root/BACKUP/$(date -I)
systemctl stop solrindexer
mv /opt/digiverso/indexer/solrIndexer.jar /root/BACKUP/$(date -I)
wget -O /opt/digiverso/indexer/solrIndexer.jar https://github.com/intranda/goobi-viewer-indexer/releases/latest/download/solrIndexer.jar
systemctl start solrindexer
cp /opt/digiverso/viewer/bin/M2M.war /root/BACKUP/$(date -I)
wget -O /tmp/M2M.war https://github.com/intranda/goobi-viewer-connector/releases/latest/download/M2M.war
mv /tmp/M2M.war /opt/digiverso/viewer/bin/M2M.war

21.07-SNAPSHOT

Goobi viewer Core

In der Konfigurationsdatei wurde der Block für die Kommentare und die Facettierung umbenannt und muss von der Benennung und der Syntax angepasst werden:

<!-- ALT -->
<userComments>
<enabled>true</enabled>
<conditionalQuery>DC:varia</conditionalQuery>
<notificationEmailAddress>[email protected]</notificationEmailAddress>
</userComments>
<!-- NEU -->
<comments enabled="true">
<condition>DC:varia</condition>
<notificationEmailAddress>[email protected]</notificationEmailAddress>
</comments>
<!-- Alt -->
<search>
<drillDown>
<field>YEAR</field>
<geoField>WKT_COORDS</geoField>
<field initialElementNumber="3" sortOrder="alphabetical_asc">MD_LANGUAGE</field>
</drillDown>
</search>
<!-- Neu -->
<search>
<facets>
<field>YEAR</field>
<geoField>WKT_COORDS</geoField>
<field initialElementNumber="3" sortOrder="alphabetical_asc">MD_LANGUAGE</field>
</facets>
</search>

Außerdem kann der Feedbackempfänger jetzt optional aus eine Liste ausgewählt werden. Dafür muss die Struktur in der Konfigurationsdatei ebenfalls angepasst werden:

<!-- Alt -->
<feedbackEmailAddressList>[email protected]</feedbackEmailAddress>
<!-- Neu -->
<feedbackEmailAddressList>
<address label="Contact" default="true">[email protected]</address>
</feedbackEmailAddressList>

Sofern das Feld DATECREATED für die Anzeige konfiguriert ist muss der Parameter vom Typ field auf millisfield geändert werden:

<!-- Alt -->
<metadata label="DATECREATED">
<param type="field" key="DATECREATED"/>
</metadata>
<-- Neu -->
<metadata label="DATECREATED">
<param type="millisfield" key="DATECREATED"/>
</metadata>

Die Konfigurationsoption urls/contentServer wird nicht mehr verwenden und kann aus der lokalen config_viewer.xml entfernt werden:

<!-- DELETE THIS LINES -->
<!-- contentServer: relative path to contentServer from the Goobi viewer context -->
<contentServer external="false">/</contentServer>

21.0.6

Goobi viewer Core

Die folgenden drei SQL Statements ausführen. Wenn beim letzten ein Fehler auftritt muss dieser vorher manuell geprüft und korrigiert werden.

ALTER TABLE bookshelves MODIFY share_key VARCHAR(64);
ALTER TABLE bookshelves ADD CONSTRAINT share_key_unique UNIQUE(share_key);
ALTER TABLE `cms_collections` ADD UNIQUE `solr_field_solr_value_unique`(`solr_field`, `solr_value`);

21.05

Goobi viewer Core

Die Anzeige für die Anzahl der Bände ist nicht mehr hart im Quelltext verankert sondern konfigurierbar. Sofern eine lokale Konfiguration für die <titleBarMetadataList /> und die <searchHitMetadataList /> existieren muss der folgende Abschnitt hinzugefügt werden:

config_viewer.xml
config_viewer.xml
<!-- Number of volumes for anchors -->
<metadata label="numVolumes">
<param type="field" key="NUMVOLUMES" />
</metadata>

Um bei indexierten Geokoordinaten die Facettierung auf einer Karte anzuzeigen ist in einen eventuell vorhandenen lokalen Abschnitt <drillDown /> in der lokalen Konfigurationsdatei der folgende Eintrag hinzuzufügen:

config_viewer.xml
config_viewer.xml
<geoField>WKT_COORDS</geoField>

21.04

Goobi viewer Core

Der Schalter <unconditionalImageAccessMaxWidth /> wurde umbenannt zu <thumbnailImageAccessMaxWidth /> und muss - sofern vorhanden - auch in der lokalen Konfigurationsdatei umbenannt werden:

mkdir /root/BACKUP/$(date -I)
cp /opt/digiverso/viewer/config/config_viewer.xml /root/BACKUP/$(date -I)
sed 's|unconditionalImageAccesMaxWidth|thumbnailImageAccessMaxWidth|g' -i /opt/digiverso/viewer/config/config_viewer.xml

Der Schalter <doublePageMode /> wurden umbenannt zu <doublePageNavigation /> und das Unterelement <enabled /> in ein Attribut verschoben. Die lokale Konfigurationsdatei ist zu prüfen und gegebenenfalls anzupassen:

config_viewer.xml
config_viewer.xml
<!-- ALT -->
<doublePageMode>
<enabled>true</enabled>
</doublePageMode>
<!-- NEU -->
<doublePageNavigation enabled="true" />

Für die Steuerung des Bildzooms und Bild-Downloads stehen neue Funktionen zur Verfügung. Diese werden nicht automatisch hinzugefügt.

Bei einem Update auf die Version 21.04 müssen die im Backend konfigurierten Zugriffslizenzen und Rechte geprüft und die neuen Rechte explizit hinzugefügt werden!

Goobi viewer Indexer

Prüfen, ob bei Indexierfehlern eine E-Mail versendet wird und dieses gegebenenfalls nachkonfigurieren:

solr_indexerconfig.xml
solr_indexerconfig.xml
<init>
<email>
<recipients>[email protected]</recipients>
<smtpServer>127.0.0.1</smtpServer>
<smtpUser></smtpUser>
<smtpPassword></smtpPassword>
<smtpSenderAddress>[email protected]</smtpSenderAddress>
<smtpSenderName>Goobi viewer Indexer</smtpSenderName>
<smtpSecurity>NONE</smtpSecurity>
</email>
</init>

Goobi viewer Connector

Bei einem Update ist die Sektion mit den <sets /> zu prüfen, ob die ausgegebenen Ergebnisse mit der Intention der konfigurierten Einträge übereinstimmt. Dabei ist ein besonderes Augenmerk auf Solr-Queries mit den Feldern DC und DOCSTRCT zu richten. Da diese Felder in alle Solr-Docs eines Datensatzes geschrieben werden müssen sie eventuell mit +(ISWORK:true ISANCHOR:true) weiter eingeschränkt werden.

21.03

Apache

Es ist aufgefallen, dass die robots.txt einen erstaunlich starken Einfluss auf die Suchmaschinen hat. Deswegen ist zu prüfen, ob sie existiert, darauf zugegriffen werden kann und sinnvolle Werte inklusive der Sitemap enthalten sind. Bei den Werten muss vor allem darauf geachtet werden, ob der Goobi viewer mit einem /viewer/ Präfix deployt ist oder nicht.

User-agent: *
Disallow: /viewer/content*action=pdf
Disallow: /viewer/rest/pdf/*
Disallow: /viewer/api/v1/records/*/pdf/
Disallow: /viewer/search/
Disallow: /viewer/tags/
Disallow: /viewer/term/
Disallow: /viewer/oai
Disallow: /viewer/nextHit/
Disallow: /viewer/prevHit/
#Sitemap: http://VIEWER.EXAMPLE.ORG/viewer/sitemap_index.xml
Crawl-delay: 10

Goobi viewer Core

Umbenennung der mainMetadataList

Bibliographische Daten können jetzt auf mehrere Seiten aufgeteilt werden. Dafür wurde der Bereich <mainMetadataList /> in der Konfigurationsdatei umbenannt zu <metadataView index="0" />. Bei dem Update muss das in der lokalen config_viewer.xml ebenfalls erfolgen:

mkdir /root/BACKUP/$(date -I)
cd /opt/digiverso/viewer/config/
cp config_viewer.xml /root/BACKUP/$(date -I)
sed -e 's|<mainMetadataList>|<metadataView index="0">|g' -e 's|</mainMetadataList>|</metadataView>|g' -i config_viewer.xml

Außerdem ist zu prüfen ob in den lokalen messages Dateien individuelle Namen für einzelne Blöcke vergeben wurden. Wenn ja sind diese Anzupassen, denn das Namensschema dafür hat sich verändert. Aus metadataTab0 für die Überschrift des ersten Metadatenblocks (type="0") wurde metadataTab_0_0, der neue Infix zeigt das index="0" Attribut an.

Wenn das folgende Kommando eine Ausgabe liefert muss eine Anpassung erfolgen:

grep -i metadataTab /opt/digiverso/viewer/config/messages_*.properties

Liebe für die Metadatenkonfiguration

Um die Anzeige der Metadaten auf der Seite "Bibliographische Daten" ein bisschen intuitiver zu gestalten sind die folgenden Änderungen vorzunehmen:

  1. Alle Vorkommnisse von DOCSTRCT aufteilen in DOCSTRCT_TOP und DOCSTRCT_SUB

  2. Bei den Feldern DOCSTRCT_TOP und DC im <param /> Element das Attribut topstructOnly="true" ergänzen. Das führt dazu, dass der Publikationstyp und die Sammlung nur in den Metadaten des Publikationstyps selbst sichtbar sind.

  3. Bei den Feldern MD_TITLE und DOCSTRCT_SUB das Attribut hideIfOnlyMetadataField="true" ergänzen. Das führt dazu, dass keine fast leeren Blöcke nur mit Titel und Strukturelement sichtbar sind.

<metadata label="MD_TITLE" hideIfOnlyMetadataField="true">
<param type="field" key="MD_TITLE"/>
</metadata>
<metadata label="DOCSTRCT_TOP">
<param type="translatedfield" key="DOCSTRCT_TOP" topstructOnly="true"/>
</metadata>
<metadata label="DOCSTRCT_SUB" hideIfOnlyMetadataField="true">
<param type="translatedfield" key="DOCSTRCT_SUB"/>
</metadata>
<metadata label="DC">
<param type="translatedfield" key="DC" topstructOnly="true"/>
</metadata>

Goobi viewer Connector

Um sicherzustellen, dass bei der Dublin Core Ausgabe die Sammlungsnamen korrekt übersetzt werden, muss in der lokalen config_oai.xml der <oaiFolder /> auf den config Ordner des Goobi viewer Core zeigen:

cd /opt/digiverso/viewer/config/
grep oaiFolder config_oai.xml
mkdir /root/BACKUP/$(date -I)
cp config_oai.xml /root/BACKUP/$(date -I)
sed 's|<oaiFolder>/opt/digiverso/viewer/oai/</oaiFolder>|<oaiFolder>/opt/digiverso/viewer/config/</oaiFolder>|g' -i config_oai.xml

21.02

Apache

Damit die IIIF Manifeste ebenfalls gzip Komprimiert ausgeliefert werden muss der folgende Output Filter zusätzlich in dem Abschnitt für mod_deflate hinzugefügt werden:

AddOutputFilterByType DEFLATE application/json

Anschließend den Dienst neu starten:

systemctl restart apache2

Goobi viewer Core

Die Konfiguration des Beschreibungstextes für das Widget "Zitieren und Nachnutzen" ist vereinfacht worden. Es muss die lokale Konfigurationsdatei nach einer abweichenden Konfiguration geprüft und bei Bedarf der Message-Key für den Text in das neue Attribut introductionText verschoben werden:

<!-- ALT -->
<sidebarWidgetUsage display="true">
<licenseText>
<metadata label="MD_LICENSETEXT" value="MASTERVALUE_LICENSETEXT">
<param type="field" key="LABEL" />
</metadata>
</licenseText>
<!-- NEU -->
<sidebarWidgetUsage display="true" introductionText="MASTERVALUE_LICENSETEXT" />

Durch die Refaktorisierung der Sammlungsauflistung muss in Themes, die die Gruppierung von Suchtreffern verwenden, das Gruppierfeld neu gesetzt werden.

Im selben Widget sind die Konfigurationsoptionen <displayLinkToJpegImage /> und <displayLinkToMasterImage /> durch den neuen Block <downloadOptions><option>... ersetzt worden. Die lokale Konfigurationsdatei muss auf vom vorherigen Standard abweichende Einträge geprüft und dann auf das neue Format migriert werden.

<!-- ALT -->
<page>
<displayLinkToJpegImage maxSize="2000">true</displayLinkToJpegImage>
<displayLinkToMasterImage maxSize="max">true</displayLinkToMasterImage>
</page>
<!-- NEU -->
<page>
<downloadOptions>
<option label="label__download_option_preview_150" format="jpg" boxSizeInPixel="150" />
<option label="label__download_option_small_1024" format="jpg" boxSizeInPixel="1024" />
<option label="label__download_option_medium_2048" format="jpg" boxSizeInPixel="2048" />
<option label="label__download_option_large_4096" format="jpg" boxSizeInPixel="4096" />
<option label="Master" format="MASTER" boxSizeInPixel="max"/>
</downloadOptions>
</page>

Goobi viewer Indexer

Bitte vorsichtshalber die Version 21.02 des Goobi viewer Indexers nicht mit LIDO Datensätzen verwenden.

21.01

Cron

In der Goobi viewer Cronjob Datei müssen verschiedene Aufrufe angepasst werden. Das betrifft die Aufrufe zur Sitemap Generierung und zur Suchtrefferbenachrichtigung wie auch den Pfad zu dem Solr optimize Kommando.

## This REST call triggers the email notification about new search hits for users...
<!-- ALT -->
42 8,12,17 * * * root curl -s http://localhost:8080/rest/search/sendnotifications/?token=TOKEN
<!-- NEU -->
42 8,12,17 * * * root curl -s -H "Content-Type: application/json" -H "token:TOKEN" -d '{"type":"NOTIFY_SEARCH_UPDATE"}' http://localhost:8080/viewer/api/v1/tasks/ 1>/dev/null
## This REST call creates an XML sitemap for the Goobi viewer instance...
<!-- ALT -->
18 1 * * * root curl -s -X POST -H "Content-Type: application/json" -d '{}' "https://viewer.example.org/viewer/rest/sitemap/update/?token=TOKEN" 1>/dev/null
<!-- NEU -->
18 1 * * * root curl -s -H "Content-Type: application/json" -H "token:TOKEN" -d '{"type":"UPDATE_SITEMAP"}' http://localhost:8080/viewer/api/v1/tasks/ 1>/dev/null
## Optimize the Solr search index once a month
<!-- ALT -->
@monthly root curl -s http://localhost:8983/solr/update?optimize=true&waitFlush=false
<!-- NEU -->
@monthly root curl -s http://localhost:8983/solr/collection1/update?optimize=true&waitFlush=false

Solr

Der Dienst soll auf localhost eingeschränkt und die Garbage Collector Optionen für eine verbesserte Performance angepasst werden.

patch /etc/default/solr.in.sh << "EOF"
@@ -46,19 +46,19 @@
# -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime"
# These GC settings have shown to work well for a number of common Solr workloads
-#GC_TUNE=" \
-#-XX:SurvivorRatio=4 \
-#-XX:TargetSurvivorRatio=90 \
-#-XX:MaxTenuringThreshold=8 \
-#-XX:+UseConcMarkSweepGC \
-#-XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 \
-#-XX:+CMSScavengeBeforeRemark \
-#-XX:PretenureSizeThreshold=64m \
-#-XX:+UseCMSInitiatingOccupancyOnly \
-#-XX:CMSInitiatingOccupancyFraction=50 \
-#-XX:CMSMaxAbortablePrecleanTime=6000 \
-#-XX:+CMSParallelRemarkEnabled \
-#-XX:+ParallelRefProcEnabled \
+GC_TUNE=" \
+-XX:SurvivorRatio=4 \
+-XX:TargetSurvivorRatio=90 \
+-XX:MaxTenuringThreshold=8 \
+-XX:+UseConcMarkSweepGC \
+-XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 \
+-XX:+CMSScavengeBeforeRemark \
+-XX:PretenureSizeThreshold=64m \
+-XX:+UseCMSInitiatingOccupancyOnly \
+-XX:CMSInitiatingOccupancyFraction=50 \
+-XX:CMSMaxAbortablePrecleanTime=6000 \
+-XX:+CMSParallelRemarkEnabled \
+-XX:+ParallelRefProcEnabled"
#-XX:-OmitStackTraceInFastThrow etc.
# Set the ZooKeeper connection string if using an external ZooKeeper ensemble
@@ -232,3 +232,4 @@
LOG4J_PROPS="/opt/digiverso/solr/log4j2.xml"
SOLR_LOGS_DIR="/opt/digiverso/solr/logs"
SOLR_PORT="8983"
+SOLR_OPTS="$SOLR_OPTS -Djetty.host=127.0.0.1"
EOF

Außerdem den Gesamtspeicher der virtuellen Maschine prüfen und gegebenenfalls die Zuweisung zwischen Tomcat und Solr Dienst anpassen.

Goobi viewer Core

In der lokalen config_viewer.xml muss die URL zur REST API angepasst werden:

<!-- ALT -->
<rest>https://viewer.example.org/viewer/rest/</rest>
<!-- NEU -->
<rest>https://viewer.example.org/viewer/api/v1/</rest>

Goobi viewer Indexer

Um die Sortierung von Bänden flexibler zu gestalten sowie das Stöbern nach Named Entity Werten zu ermöglichen muss das Solr Schema aktualisiert werden. Das kann mit den folgenden Zeilen erfolgen:

mkdir /root/BACKUP/$(date -I)
cp /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml /root/BACKUP/$(date -I)
wget -O /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml https://raw.githubusercontent.com/intranda/goobi-viewer-indexer/master/goobi-viewer-indexer/src/main/resources/other/schema.xml
chown solr. /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml
cd /opt/digiverso/solr/solr/
sudo -u solr bin/solr zk upconfig -n goobiviewer -d server/solr/configsets/goobiviewer/
curl "http://localhost:8983/solr/admin/collections?action=RELOAD&name=collection1&wt=xml"

Der Datenbestand muss anschließend neu indexiert werden. Andernfalls kann es zu Fehlermeldungen in der Benutzeroberfläche kommen wenn das Feld CURRENTNOSORT vermischt als Datentyp INT und LONG im Solr Index vorhanden ist.

4.13.0

Goobi viewer Core

Die Sektion <content /> ist aus der Konfigurationsdatei entfernt worden. Der Schalter mit dem die Anzeige des Widgets für den Download von Dateien gesteuert werden kann ist in die Sidebar-Sektion umgezogen. Bei einem Update ist zu prüfen ob in der lokalen config_viewer.xml der folgende Eintrag existiert um diesen bei Bedarf umzuziehen:

<!-- ALT -->
<content>
<originalContentDownload>false</originalContentDownload>
</content>
<!-- NEU -->
<sidebar>
<sidebarWidgetDownloads visible="false" />
</sidebar>

4.12.0

Goobi viewer Core

Wird der TaskManager für die Generierung von PDF-Dateien verwendet muss ein UNIQUE Constraint auf die identifierSpalte in der download_jobs Tabelle gesetzt werden. Dafür müssen gegebenenfalls vorher Duplikate entfernt werden:

SELECT * FROM download_jobs WHERE identifier IN(SELECT identifier FROM download_jobs GROUP BY identifier HAVING COUNT(identifier) > 1);
/*
DELETE FROM download_jobs WHERE identifier=<one row from the duplicates>;
*/
ALTER TABLE download_jobs ADD UNIQUE(identifier);

Goobi viewer Indexer

Der in der solr_indexerconfig.xml definierte Ordner für die gespeicherten Annotationen muss überprüft und gegebenenfalls angepasst werden. Der Goobi viewer Core erwartet die Dateien im Ordner annotations, es ist aber möglich, dass im Goobi viewer Indexer der Ordner annotation konfiguriert ist, also ohne s. Wenn das der Fall ist muss das in der Konfigurationsdatei wie auch im im Dateisystem korrigiert werden.

  • Prüfen ob ein falscher Ordner konfiguriert ist. Dafür das folgende Kommando ausführen. Wenn es eine Ausgabe gibt, dann muss den folgenden Punkten fortgefahren werden. Ist die Ausgabe leer ist hier Schluss.

grep "<annotationFolder>annotation</annotationFolder>" /opt/digiverso/indexer/solr_indexerconfig.xml
  • Wenn das obige Kommando eine Ausgabe gab, dann kann die Konfigurationsdatei mit den folgenden Befehlen korrigiert werden:

mkdir /root/BACKUP/$(date -I)
cp /opt/digiverso/indexer/solr_indexerconfig.xml /root/BACKUP/$(date -I)
sed 's|<annotationFolder>annotation</annotationFolder>|<annotationFolder>annotations</annotationFolder>|g' -i /opt/digiverso/indexer/solr_indexerconfig.xml
systemctl restart solrIndexer
  • Wenn eine Korrektur notwendig ist, dann müssen nun die Ordner im Dateisystem angepasst werden:

# Keine Datarepositories:
mv /opt/digiverso/viewer/annotation/ /opt/digiverso/viewer/annotations/
# Mit Datarepositories
for i in $(ls /opt/digiverso/viewer/data); do mv /opt/digiverso/viewer/data/${i}/annotation/ /opt/digiverso/viewer/data/${i}/annotations/; done

4.11.0

Apache

Der gleichzeitige Zugriff auf Werke wird über WebSockets gesteuert. Dafür muss dessen Unterstützung in dem Apache Webserver in die Konfiguration mit aufgenommen werden:

## Enable WebSockets to check concurrent access
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule /?(.*) ws://localhost:8080/$1 [P,L]

Sollte der Tomcat nicht auf 8080 lauschen bitte den Port entsprechend anpassen. Es muss aber immer auf den HTTP Connector, nicht auf den AJP Connector weitergeleitet werden.

Anschließend das benötigte Modul aktivieren und den Dienst neu starten:

a2enmod proxy_wstunnel
systemctl restart apache2

Goobi viewer Core

Mit dem Update des Themes wird der Titel der Installation aus der Konfigurationsdatei gelesen. Dieser muss in der lokalen Konfigurationsdatei gesetzt werden:

config_viewer.xml
<viewer>
<name>Goobi viewer</name>
</viewer>

Goobi viewer Indexer

Um die neue Möglichkeit für die Einschränkung des gleichzeitigen Zugriffs nutzen zu können muss das Feld konfiguriert werden:

solr_indexerconfig.xml
<ACCESSCONDITION_CONCURRENTUSE>
<list>
<item>
<xpath>mets:xmlData/mods:mods/mods:extension/intranda:accessConditionConcurrentUse</xpath>
<addToDefault>false</addToDefault>
<addSortField>false</addSortField>
<addUntokenizedVersion>false</addUntokenizedVersion>
</item>
</list>
</ACCESSCONDITION_CONCURRENTUSE>

Goobi viewer Connector

Die URL zur REST API des Goobi viewers sowie für den Volltext muss an die neuen REST Endpoints angepasst werden:

config_oai.xml
<!-- Alt -->
<restApiUrl>http://localhost:8080/rest/</restApiUrl>
<fulltextUrl>http://viewer.example.org/rest/content/fulltext/{pi}/{fileName}/</fulltextUrl>
<!-- Neu -->
<restApiUrl>http://localhost:8080/api/v1/</restApiUrl>
<fulltextUrl>https://viewer.example.org/api/v1/records/{pi}/files/plaintext/{fileName}</fulltextUrl>

4.10.0

Solr

Um das Logging von Solr zu reduzieren muss das Loglevel angepasst und der Dienst neu gestartet werden:

patch /etc/default/solr.in.sh << "EOF"
@@ -113,7 +113,7 @@
# Changes the logging level. Valid values: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF. Default is INFO
# This is an alternative to changing the rootLogger in log4j2.xml
-#SOLR_LOG_LEVEL=INFO
+SOLR_LOG_LEVEL=ERROR
# Location where Solr should write logs to. Absolute or relative to solr start dir
#SOLR_LOGS_DIR=logs
EOF
systemctl restart solr

Goobi viewer Indexer

Für die neue Möglichkeit den PDF-Download prozentual pro Nutzersession einzuschränken ist ein Update des Schemas und des Goobi viewer Indexers notwendig:

mkdir /root/BACKUP/$(date -I)
cp /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml /root/BACKUP/$(date -I)
wget -O /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml https://raw.githubusercontent.com/intranda/goobi-viewer-indexer/master/goobi-viewer-indexer/src/main/resources/other/schema.xml
chown solr. /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml
cd /opt/digiverso/solr/solr/
sudo -u solr bin/solr zk upconfig -n goobiviewer -d server/solr/configsets/goobiviewer/
curl "http://localhost:8983/solr/admin/collections?action=RELOAD&name=collection1&wt=xml"
systemctl stop solrindexer
mv /opt/digiverso/indexer/solrIndexer.jar /root/BACKUP/$(date -I)
wget -O /opt/digiverso/indexer/solrIndexer.jar https://github.com/intranda/goobi-viewer-indexer/releases/download/v4.10.1/solrIndexer.jar
systemctl start solrindexer

Außerdem muss das Feld konfiguriert werden:

solr_indexerconfig.xml
<ACCESSCONDITION_PDF_PERCENTAGE_QUOTA>
<list>
<item>
<xpath>mets:xmlData/mods:mods/mods:extension/intranda:accessConditionPdfPercentageQuota</xpath>
<addToDefault>false</addToDefault>
<addSortField>false</addSortField>
<addUntokenizedVersion>false</addUntokenizedVersion>
</item>
</list>
</ACCESSCONDITION_PDF_PERCENTAGE_QUOTA>

4.9.0

Solr

Bei der Migration zu Solr 8 wurde vergessen die JTS Bibliothek für die Suche in Koordinatenbereichen zu übernehmen. Das muss nachgeholt werden. Dafür sind die folgenden Schritte notwendig.

Herunterladen der notwendigen Bibliothek, anpassen der Rechte und Neustart damit die Library bekannt ist:

systemctl stop solrindexer
wget -O /opt/digiverso/solr/solr/server/solr-webapp/webapp/WEB-INF/lib/jts-core-1.17.0.jar https://github.com/locationtech/jts/releases/download/1.17.0/jts-core-1.17.0.jar
chown solr. /opt/digiverso/solr/solr/server/solr-webapp/webapp/WEB-INF/lib/jts-core-1.17.0.jar
systemctl restart solr
systemctl start solrindexer

Außerdem muss das Solr Schema aktualisiert werden:

mkdir /root/BACKUP/$(date -I)
cp /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml /root/BACKUP/$(date -I)
wget -O /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml https://raw.githubusercontent.com/intranda/goobi-viewer-indexer/master/goobi-viewer-indexer/src/main/resources/other/schema.xml
chown solr. /opt/digiverso/solr/solr/server/solr/configsets/goobiviewer/conf/schema.xml
cd /opt/digiverso/solr/solr/
sudo -u solr bin/solr zk upconfig -n goobiviewer -d server/solr/configsets/goobiviewer/
curl "http://localhost:8983/solr/admin/collections?action=RELOAD&name=collection1&wt=xml"

Da wir Zookeeper nur lokal benötigen, kann der Dienst auch nur auf localhost lauschen:

patch /etc/zookeeper/conf/zoo.cfg << "EOF"
@@ -15,6 +15,7 @@
# the port at which the clients will connect
clientPort=2181
+clientPortAddress=127.0.0.1
# specify all zookeeper servers
# The fist port is used by followers to connect to the leader
EOF
systemctl restart zookeeper

Goobi viewer Indexer

Der Goobi viewer Indexer muss aktualisiert werden, um die neusten Anpassungen für die Suche nach Geokoordinaten zu Unterstützen:

systemctl stop solrindexer
mv /opt/digiverso/indexer/solrIndexer.jar /root/BACKUP/$(date -I)
wget -O /opt/digiverso/indexer/solrIndexer.jar https://github.com/intranda/goobi-viewer-indexer/releases/download/v4.9.0/solrIndexer.jar
systemctl start solrindexer

Frühere Versionen haben manchmal fälschlicherweise Dateien mit angehängtem Iterator in den indexed_mets Ordner verschoben anstelle sie in den Originaldateienamen umzubenennen. Diese Dateien sollten mit dem folgenden Kommando entfernt werden:

find /opt/digiverso/viewer/indexed_mets -regex '.*#[0-9]+\.xml' | while read i; do test -e ${i%#*}.xml && rm $i; done

Goobi viewer Connector

Um die OAI und SRU Schnittstelle auf die aktuelle Version zu aktualisieren können die folgenden Zeilen verwendet werden:

cp /opt/digiverso/viewer/bin/M2M.war /root/BACKUP/$(date -I)
wget -O /tmp/M2M.war https://github.com/intranda/goobi-viewer-connector/releases/download/v4.9.0/M2M.war
mv /tmp/M2M.war /opt/digiverso/viewer/bin/M2M.war

Goobi viewer Core

Bei der Feldkonfiguration für das Stöbern Menü wurde das Attribut docstructFilters entfernt. Bereits länger gibt es die Möglichkeit eine filterQuery zu definieren, die das Attribut und seine Logik ersetzt haben. Bei einem Update ist zu prüfen ob in der lokalen config_viewer.xml das docstructFilters Attribut verwendet wird und die gewünschte Funktionalität gegenebenfalls als filterQuery umzuformulieren.

config_viewer.xml
<!-- ALT -->
<luceneField docstructFilters="Monograph;Volume">MD_TITLE_UNTOKENIZED</luceneField>
<!-- NEU -->
<luceneField filterQuery="+(DOCSTRCT:Monograph DOCSTRCT:Volume)">MD_TITLE_UNTOKENIZED</luceneField>

4.8.0

Mit dieser Version wird der verwendete Suchindex Apache Solr auf die Version 8 aktualisiert. Dafür muss Solr 8 komplett neu installiert und der Datenbestand anschließend durch eine besondere Neuindexierung in die neuen Installation überführt werden. Eine Migration über mehr als zwei Major Versionen wird von Solr offiziell nicht unterstützt (Hintergrund). Für die Unterstützung von Solr Streaming Expressions ist es notwendig SolrCloud zu verwenden. Die notwendigen Schritte sind im folgenden in chronologischer Reihenfolge aufgelistet:

Solr

Die Installation von Apache Solr 8 ist hier in der Updateanleitung nur in gekürzter Form. Für eine längere Variante bitte den entsprechenden Abschnitt in der Installationsanleitung lesen.

cd /tmp
wget http://archive.apache.org/dist/lucene/solr/8.5.2/solr-8.5.2.tgz
tar -xzf solr-8.5.2.tgz solr-8.5.2/bin/install_solr_service.sh --strip-components=2
mkdir -p /opt/digiverso/solr/
./install_solr_service.sh solr-8.5.2.tgz -i /opt/digiverso/solr -d /opt/digiverso/solr -u solr -s solr -p 8983 -n
cat << "EOF" >/etc/security/limits.d/solr.conf
solr hard nofile 65535
solr soft nofile 65535
solr hard nproc 65535
solr soft nproc 65535
EOF
apt install -y zookeeperd
patch /etc/default/solr.in.sh << "EOF"
@@ -28,7 +28,7 @@
#SOLR_STOP_WAIT="180"
# Increase Java Heap as needed to support your indexing / query needs
-#SOLR_HEAP="512m"
+SOLR_HEAP="2048m"
# Expert: If you want finer control over memory options, specify them directly
# Comment out SOLR_HEAP if you are using this though, that takes precedence
@@ -64,7 +64,7 @@
# Set the ZooKeeper connection string if using an external ZooKeeper ensemble
# e.g. host1:2181,host2:2181/chroot
# Leave empty if not using SolrCloud
-#ZK_HOST=""
+ZK_HOST="127.0.0.1:2181"
# Set the ZooKeeper client timeout (for SolrCloud mode)
#ZK_CLIENT_TIMEOUT="15000"
EOF
chmod 755 /opt/digiverso/solr/solr/bin/solr
cd /opt/digiverso/solr/solr/server/solr/configsets/
cp -a _default/ goobiviewer
cd goobiviewer/conf/
rm managed-schema
wget https://raw.githubusercontent.com/intranda/goobi-viewer-indexer/master/goobi-viewer-indexer/src/main/resources/other/schema.xml
cp lang/stopwords_de.txt lang/stopwords.txt
wget https://raw.githubusercontent.com/intranda/goobi-viewer-indexer/master/goobi-viewer-indexer/src/main/resources/other/mapping-ISOLatin1Accent.txt
patch solrconfig.xml << "EOF"
@@ -21,6 +21,7 @@
this file, see http://wiki.apache.org/solr/SolrConfigXml.
-->
<config>
+ <schemaFactory class="ClassicIndexSchemaFactory"/>
<!-- In all configuration below, a prefix of "solr." for class names
is an alias that causes solr to search appropriate packages,
including org.apache.solr.(search|update|request|core|analysis)
@@ -58,6 +59,11 @@
<lib dir="./lib" />
-->
+ <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" regex=".*\.jar" />
+ <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" regex=".*\.jar" />
+ <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-analysis-extras-\d.*\.jar" />
+
+
<!-- A 'dir' option by itself adds any files found in the directory
to the classpath, this is useful for including all jars in a
directory.
@@ -773,7 +779,7 @@
<initParams path="/update/**,/query,/select,/spell">
<lst name="defaults">
- <str name="df">_text_</str>
+ <str name="df">DEFAULT</str>
</lst>
</initParams>
@@ -1108,7 +1114,7 @@
</updateProcessor>
<!-- The update.autoCreateFields property can be turned to false to disable schemaless mode -->
- <updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}"
+ <updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:false}"
processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields">
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.DistributedUpdateProcessorFactory"/>
EOF
chown -R solr. *
cd /opt/digiverso/solr/solr/
sudo -u solr bin/solr zk upconfig -n goobiviewer -d server/solr/configsets/goobiviewer/

Sollte dieser Befehl unter Ubuntu Linux 20.04 einen Timeout werfen, dann muss geprüft werden Java 11 der Standard ist (update-alternatives --config java). Zookeeper ist nicht mehr mit Java 8 kompatibel.

systemctl start solr
sudo -u solr bin/solr create -c collection1 -n goobiviewer

Schlägt dieser Befehl fehl, dann muss in der /etc/default/solr.in.sh die Variable #SOLR_HOST="" einkommentiert und auf die IP-Adresse des lokalen Rechners gesetzt werden.

Nun die Apache Konfiguration anpassen, so dass Solr auf dem neuen Port angesprochen wird. Dafür den entsprechenden Apache vhost öffnen und in dem Block <Location /solr/> die ProxyPass und ProxyPassReverse Einträge auf diese neuen Werte anpassen:

/etc/apache2/sites-available/HOSTNAME.conf
ProxyPass http://localhost:8983/solr/ retry=0
ProxyPassReverse http://localhost:8983/solr/

Anschließend sicherstellen, dass auch das benötigte Modul proxy_http geladen ist und den Dienst neu starten:

a2enmod proxy_http
systemctl restart apache2

Goobi viewer Indexer

Der Datenbestand muss neu indexiert werden. Dafür muss der Goobi viewer Indexer aktualisiert werden damit er bei der Neuindexierung einige Solr Felder von der alten in die neue Installation übernimmt:

mkdir -p /root/BACKUP/$(date -I)/
systemctl stop solrindexer
mv /opt/digiverso/indexer/solrIndexer.jar /root/BACKUP/$(date -I)
wget -O /opt/digiverso/indexer/solrIndexer.jar https://github.com/intranda/goobi-viewer-indexer/releases/download/v4.8.2/solrIndexer.jar

Dieser Abschnitt ist wichtig. Da sich die Neuindexierung über einen längeren Zeitraum hinziehen kann ist es wichtig spätere Arbeiten nicht zu vergessen!

Nun die Konfigurationsdatei des Goobi viewer Indexers anpassen. Der Eintrag in <solrUrl> muss dabei auf den neuen Solr 8 und ein neuer Eintrag <oldSolrUrl> auf den bisherigen Solr 4 zeigen:

cp /opt/digiverso/indexer/solr_indexerconfig.xml /root/BACKUP/$(date -I)
sed -i "s|<solrUrl>\(.*\)</solrUrl>|<oldSolrUrl>\1</oldSolrUrl>|g" /opt/digiverso/indexer/solr_indexerconfig.xml
sed -i "s|<oldSolrUrl>|<solrUrl>http://localhost:8983/solr/collection1</solrUrl>\n<oldSolrUrl>|g" /opt/digiverso/indexer/solr_indexerconfig.xml

Anschließend erst mit einem Datensatz testen ob keine Fehler bei der Indexierung auftreten. Wenn das der Fall ist den Datenbestand neu Indexieren.

Wenn die Neuindexierung abgeschlossen ist, muss der Eintrag <oldSolrUrl /> aus der solr_indexerconfig.xml auskommentiert werden.

Damit die Versionsnummer an den Goobi viewer Core zur Anzeige im Dashboard korrekt übermittelt werden kann, müssen die folgenden beiden Einstellungen in der Konfigurationsdatei vorhanden sein. Bitte URL und Token prüfen und gegebenenfalls an die lokalen Gegebenheiten anpassen:

solr_indexerconfig.xml
<init>
<viewerUrl>http://127.0.0.1:8080/viewer/</viewerUrl>
<viewerAuthorizationToken>CHANGEME</viewerAuthorizationToken>
</init>

Goobi viewer Connector

Damit der Goobi viewer Connector mit Solr 8 kompatibel ist und zusätzlich seine Versionsnummer im gewünschten Format ausgeben kann, ist es notwendig den Connector zu aktualisieren:

cp /opt/digiverso/viewer/bin/M2M.war /root/BACKUP/$(date -I)
wget -O /tmp/M2M.war https://github.com/intranda/goobi-viewer-connector/releases/download/v4.8.1/M2M.war
mv /tmp/M2M.war /opt/digiverso/viewer/bin/M2M.war

Außerdem muss die URL zum Solr Suchindex angepasst werden:

config_oai.xml
<solrUrl>http://localhost:8983/solr/collection1</solrUrl>

Goobi viewer Core

In der lokalen config_viewer.xml muss die URL zu dem Solr Suchindex angepasst werden. Das betrifft vor allem den geänderten Port:

config_viewer.xml
<solr>http://localhost:8983/solr/collection1</solr>

Zur korrekten Anzeige von Beschreibungstexten muss sichergestellt werden, dass in der Datenbank auch die richtigen Message Keys hinterlegt sind. Dafür die folgenden beiden SQL Statements ausführen:

UPDATE license_types SET description = "licenseType_setRepresentativeImage_desc" WHERE name = "licenseType_setRepresentativeImage";
UPDATE license_types SET description = "licenseType_deleteOcrPage_desc" WHERE name = "licenseType_deleteOcrPage";

4.7.0

Goobi viewer Indexer

Um die Ausgabe von Fehlern beim Start des Goobi viewer Indexers auch in die Logdatei mit zu übernehmen muss die folgende Zeile in den Abschnitt [Service] in der Systemd Unit File eingefügt werden:

  • /etc/systemd/system/solrindexer.service

solrindexer.service
StandardError=file:/opt/digiverso/logs/indexer.log

Anschließend muss der Daemon neu geladen und der Dienst neu gestartet werden:

systemctl daemon-reload
systemctl restart solrindexer

Die Option wurde erst mit Systemd 236 eingeführt und steht demnach erst ab Ubuntu Linux 18.04 Systemen zur Verfügung.

4.6.0

Goobi viewer Core

Die Solr Konfiguration wurde um weiteres Mapping von diakritischen Zeichen erweitert. Zur Übernahme der Änderungen muss die Datei mapping-ISOLatin1Accent.txt aktualisiert und der Datenbestand neu indexiert werden:

mkdir -p /root/BACKUP/$(date -I)
cp /opt/digiverso/viewer/apache-solr/collection1/conf/mapping-ISOLatin1Accent.txt /root/BACKUP/$(date -I)
wget -O /tmp/mapping-ISOLatin1Accent.txt https://raw.githubusercontent.com/intranda/goobi-viewer-indexer/master/goobi-viewer-indexer/src/main/resources/other/mapping-ISOLatin1Accent.txt
cp /tmp/mapping-ISOLatin1Accent.txt /opt/digiverso/viewer/apache-solr/collection1/conf/
systemctl restart tomcat8

Um vom ContentServer die neuen Standardwerte für die PDF-Generierung zu verwenden muss geprüft werden, ob eine lokale config_contentServer.xml Datei vorliegt. Ist das der Fall müssen in dem Konfigurationselement <defaultPdfConfig /> die beiden Attribute imageScale="0.5" und imageCompression="50" hinzugefügt werden. Das vollständige Element sieht dann zum Beispiel so aus:

config_contentServer.xml
<defaultPdfConfig alwaysUseRenderedImage="true"
alwaysCompressToJPEG="true"
metsFileGroup="PRESENTATION"
metsFileUrlRemove="file:\/\/\/opt\/digiverso\/viewer\/media\/"
writeAsPdfA="false"
pagesize="original"
imageDpi="0"
convertToGrayscale="false"
imageScale="0.5"
imageCompression="50" />

Goobi viewer Indexer

Zur Unterstützung der Kartenfunktionalität wurde das Solr-Schema und der Goobi viewer Indexer erweitert. Beide Komponenten müssen aktualisiert werden. Weiter ist es notwendig eine zusätzliche Jar in den WEB-INF/lib Ordner von Solr abzulegen

cp /opt/digiverso/viewer/apache-solr/collection1/conf/schema.xml /root/BACKUP/$(date -I)
wget -O /tmp/schema.xml https://raw.githubusercontent.com/intranda/goobi-viewer-indexer/master/goobi-viewer-indexer/src/main/resources/other/schema.xml
cp /tmp/schema.xml /opt/digiverso/viewer/apache-solr/collection1/conf/
wget -O /tmp/jts-1.14.zip http://downloads.sourceforge.net/project/jts-topo-suite/jts/1.14/jts-1.14.zip
unzip -j /tmp/jts-1.14.zip "lib/jts-1.14.jar" -d /tmp
mv /tmp/jts-1.14.jar /var/lib/tomcat8/webapps/solr/WEB-INF/lib/
systemctl restart tomcat8

Der Datenbestand muss neu indexiert werden, ansonsten fehlt die Sektion "Bild" in dem Widget "Zitieren und Nachnutzen.

4.5.0

Goobi viewer Indexer

Damit die Indexierung von im Backend erstellten Dublin Core Datensätzen funktioniert, muss zusammen mit dem Core auch der Indexer aktualisiert werden. Damit das Feature aktiviert wird, muss der indexedDublinCore Ordner definiert werden:

solr_indexerconfig.xml
<indexedDublinCore>indexed_dublincore</indexedDublinCore>

Damit alle Metadaten korrekt indexiert werden auf das Mapping der folgenden Felder achten. Gegebenenfalls müssen einige Felder wie MD_RECORDDESCRIPTION oder MD_ACCESSLICENSE neu angelegt werden.

Feldname

Mapping

PI

<item>dc:identifier</item>

DC

<item>dc:subject</item>

ACCESSCONDITION

<item>dc:rights[not(contains(text(),'http'))]</item>

MD_TITLE

<item>dc:title</item>

MD_LANGUAGE

<item>dc:language</item>

MD_CREATOR

<item>dc:creatory</item>

Zusätzlich noch zu dem XPATH Mapping noch den folgenden Eintrag innerhalb von <groupEntity> ergänzen:

<field name="MD_VALUE">text()</field>

MD_DATECREATED

<item>dc:date</item>

MD_RECORDDESCRIPTION

<xpath>dc:description></xpath>

MD_ACCESSLICENSE

<xpath>dc:rights[contains(text(),'http')]</xpath>

4.4.0

Goobi viewer Core

Auf PDF-Titelseiten im Goobi viewer ist die Unterstützung für hebräische Sprachzeichen hinzugefügt worden. Dafür müssen in der fop.xconf die Schriften definiert und die TTF Dateien daneben abgelegt werden:

mkdir -p /root/BACKUP/$(date -I)
cp /opt/digiverso/viewer/config/PdfTitlePage/fop.xconf /root/BACKUP/$(date -I)
cp /opt/digiverso/viewer/config/PdfTitlePage/*.fo /root/BACKUP/$(date -I)
cd /tmp
git clone https://github.com/intranda/goobi-viewer-core-config.git
cd goobi-viewer-core-config/goobi-viewer-core-config/src/main/resources/install/
cp fop.xconf /opt/digiverso/viewer/config/PdfTitlePage/
cp *.ttf /opt/digiverso/viewer/config/PdfTitlePage/

Anschließend noch in dem Ordner /opt/digiverso/viewer/config/PdfTitlePage/ in den *.fo Dateien die Zeile <fo:flow ...> suchen und darin das Attribut font-family="opensans, unicode" ergänzen.

<!-- Alt -->
<fo:flow flow-name="xsl-region-body">
<!-- Neu -->
<fo:flow flow-name="xsl-region-body" font-family="opensans, unicode">

Weiter ist der schon länger als veraltet gekennzeichnete Schalter <alwaysDisplayDocstruct /> aus der Sektion <toc /> entfallen. Wenn ein entsprechender Eintrag in der lokalen config_viewer.xml existiert kann dieser gelöscht werden. Die Funktionalität wird jetzt über den Bereich <labelConfig /> zur Verfügung gestellt.

Für den Zugriff auf das IIIF Manifest eines Werkes und den Download von Metadaten stehen neue Rechte zur Verfügung. Diese werden nicht automatisch hinzugefügt.

Bei einem Update auf die Version 4.4.0 müssen im Backend konfigurierte Lizenzen geprüft und die neuen Rechte explizit neu hinzugefügt werden!

Goobi viewer Indexer

Wenn DataRepositories und dabei die RemainingSpaceStrategy verwendet werden, muss der Token zur WebAPI des Goobi viewer Cores hinterlegt werden, damit dieser beim Verschieben zwischen den DataRepositories informiert wird:

solr_indexerconfig.xml
<init>
<viewerAuthorizationToken>CHANGEME</viewerAuthorizationToken>
</init>

Sofern die Unterstützung der Recht-Nach-Links Leserichtung für einzelne Werke gewünscht ist muss das folgende Feld in die Konfigurationsdatei hinzugefügt werden. Dafür muss sichergestellt sein, dass der intranda-Namespace definiert ist:

solr_indexerconfig.xml
<init>
<namespaces>
<list>
<intranda>https://intranda.com/MODS/</intranda>
</list>
</namespaces>
<init>
[...]
<BOOL_DIRECTION_RTL>
<list>
<item>
<xpath>mets:xmlData/mods:mods/mods:extension/intranda:directionRTL</xpath>
<addToDefault>false</addToDefault>
<addSortField>true</addSortField>
</item>
</list>
</BOOL_DIRECTION_RTL>

Goobi viewer Connector

Bei einem Update auf die Version 4.4.0 des Goobi viewer Connectors ist in der lokalen config_oai.xml zu prüfen ob dort der Schalter <contentApiUrl /> gesetzt ist und wenn ja muss dieser zu <restApiUrl /> umbenannt und der Pfad angepasst werden::

config_oai.xml
<!-- Alt -->
<contentApiUrl>http://localhost:8080/viewer/rest/content/</contentApiUrl>
<!-- Neu -->
<restApiUrl>http://localhost:8080/viewer/rest/</restApiUrl>

Weiter kann optional das Inhaltsverzeichnis eines Werkes als Text im DublinCore Feld dc:description ausgegeben werden. Dafür ist ein Goobi viewer Core ab der Version 4.4.0 notwendig, da ansonsten der notwendige REST Endpoint nicht zur Verfügung steht.

Das Inhaltsverzeichnis in dc:description kann wie folgt konfiguriert werden:

config_oai.xml
<oai_dc>
<fields>
<template name="...">
<metadata label="description" value="#TOC#" />
</template>
</fields>
</oai_dc>

2020-01-24

Durch die Refaktorisierung der Bücherregale/Merklisten Funktionalität hin zu einheitlicher Benennung aller Funktionen in im Java-Stack, XHTML-Seiten bis hin zu CSS und JavaScript hat sich auch der Schalter in der Konfigurationsdatei geändert. Bei einem Update auf die Version 4.3.0 muss in der lokalen config_viewer.xml der Schalter <bookshelves /> zu <bookmarks /> umbenannt werden:

config_viewer.xml
<bookmarks>
<bookmarksEnabled>true</bookmarksEnabled>
</bookmarks>

Ebenfalls muss für die Suche in den Merklisten das gegebenenfalls konfigurierte statische Feld BOOKSHELF in BOOKMARKS umbenannt werden:

config_viewer.xml
<search>
<advanced>
<searchFields>
<field>BOOKMARKS</field>
</searchFields>
</advanced>
</search>

2020-01-14

Folgendes SQL Statement ausführen, damit die Beschreibungen von Medien Dateien und die Namen von Werken auf Merklisten länger sein dürfen:

ALTER TABLE cms_media_item_metadata MODIFY description TEXT;
ALTER TABLE bookshelf_items MODIFY name LONGTEXT;

2019-12-20

Folgendes SQL Statement ausführen, damit die Beschreibungen von Merklisten länger sein dürfen:

ALTER TABLE bookshelves MODIFY description LONGTEXT;

2019-10-24

Für das Logging müssen die Log4j und SLF4j libs vom Solr in einen dedizierten Ordner. Dafür sind folgende Schritte auszuführen:

mkdir /opt/digiverso/viewer/apache-solr/tomcat-lib/
mv /opt/digiverso/tomcat-lib/log4j*jar /opt/digiverso/viewer/apache-solr/tomcat-lib/
mv /opt/digiverso/tomcat-lib/*slf4j* /opt/digiverso/viewer/apache-solr/tomcat-lib/
chown -R tomcat8. /opt/digiverso/viewer/apache-solr/tomcat-lib/

Anschließend muss der Pfad in dem base="" Attribut der PreResource in der /etc/tomcat8/Catalina/localhost/solr.xml auf den neuen Ordner angepasst werden.

Damit dann die log4j2.xml aus der Applikation selbst greift, muss gegebenenfalls noch die Definition einer globalen Konfigurationsdatei, die als Parameter der JVM beim Starten übergeben wird, aus der /etc/default/tomcat8 entfernt werden.

2019-10-08

Ein ein Update des Goobi viewer Core enthält ab diesem Zeitpunkt automatisch die neuen Crowdsourcing Kampagnen. Aus diesem Grund muss der Goobi viewer Indexer und das Solr-Schema mit aktualisiert werden. Die Indexer Konfigurationsdatei muss um die folgende Ordnerdefinition erweitert werden:

solr_indexerconfig.xml
<init>
<annotationFolder>annotations</annotationFolder>
</init>

Eine Neuindexierung des Datenbestandes ist trotz Update des Solr Schemas nicht notwendig.

2019-08-29

Für die Suche in den Merklisten muss das Feld BOOKSHELF in der Feldliste für die erweiterte Suche konfiguriert sein. Deswegen muss bei einem Update geprüft werden, ob in der lokalen config_viewer.xml eine individuelle Liste an Suchfeldern definiert wurde. Wenn ja das Feld hinzufügen:

config_viewer.xml
<search>
<advanced>
<searchFields>
[...]
<field>BOOKSHELF</field>
</searchFields>
</advanced>
</search>

2019-08-22

Es muss überprüft werden, ob in der lokalen config_viewer.xml ein alternatives Mapping für den pageType viewImage existiert:

config_viewer.xml
<viewer>
<pageTypes>
<viewImage>objekt</viewImage>
...
</pageTypes>
</viewer>

Wenn ja, dann muss das Mapping auf den neuen pageType viewObject geändert werden:

<viewer>
<pageTypes>
<viewObject>objekt</viewObject>
...
</pageTypes>
</viewer>

2019-07-31

Wenn für ein Werk nur Volltextdateien (kein ALTO) vorliegt, konvertiert der Goobi viewer Indexer diese ab sofort automatisch zu UTF-8 wenn ein abweichendes Encoding vorliegt.

Wenn im Goobi viewer Indexer die RemainingSpaceStrategy inklusive Buffer verwendet wird, dann wird dieser bei einer Neuindexierung überprüft und das Werk gegebenenfalls in ein anderes Repository verschoben wenn der konfigurierte Wert unterschritten wird.

2019-07-06

Da URLs nicht mehr automatisch gesetzt werden muss sichergestellt sein, dass in der lokalen config_viewer.xml die folgenden URLs konfiguriert sind:

config_viewer.xml
<urls>
<metadata>
<mets>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=mets&amp;identifier=</mets>
<marc>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=marcxml&amp;identifier=</marc>
<dc>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=oai_dc&amp;identifier=</dc>
<ese>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=europeana&amp;identifier=</ese>
</metadata>
<contentServerWrapper>https://viewer.example.org/content/</contentServerWrapper>
<download>https://viewer.example.org/download/</download>
<rest>https://viewer.example.org/rest/</rest>
</urls>

2019-06-11

Die CORS Unterstützung im Apache muss um die folgenden Einträge ergänzt werden:

Header always set Access-Control-Allow-Methods "GET, OPTIONS"
Header always set Access-Control-Max-Age "600"
Header always set Access-Control-Allow-Headers "Authorization, Content-Type"
Header always set Access-Control-Expose-Headers "Content-Security-Policy, Location"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

2019-06-05

Die Package-Struktur des Goobi viewer Connectors hat sich geändert. Bei einem Update ist es zwingend notwendig die Inhalte aus dem Ordner /opt/digiverso/viewer/oai/token/ zu löschen.

2019-05-29

Die Projektstrukur wurde geändert. Bestehende Themes sind nicht mehr mit dem aktuellen Goobi viewer Core kompatibel und müssen angepasst werden. Eine Anleitung erscheint in Kürze in Kapitel 8.2 Theme changes.

Wenn das Theme als externes Theme eingebunden ist sind die im folgenden beschriebenen Anpassungen notwendig. Sie sind in diesem Fall exemplarisch mit dem Reference-Theme dargestellt. Der Theme beziehungsweise Repositoryname ist immer auf den eigenen Fall anzupassen.

Anpassen der Repository URL. Dafür in dem ausgecheckten Repository die Datei .git/config/ editieren und die URL zum remote origin anpassen.

Status

Wert

Alt

[email protected]:goobi-viewer-theme-reference.git

Neu

[email protected]:goobi-viewer/goobi-viewer-theme-reference.git

Weiter muss der base Pfad für die PreResources in der context.xml geändert werden.

Alt:

viewer.xml
<PreResources
className="org.apache.catalina.webresources.DirResourceSet"
base="/opt/digiverso/viewer/themes/goobi-viewer-theme-reference/goobi-viewer-theme-reference/src/META-INF/resources/resources/themes/"
webAppMount="/resources/themes" />

Neu:

viewer.xml
<PreResources
className="org.apache.catalina.webresources.DirResourceSet"
base="/opt/digiverso/viewer/themes/goobi-viewer-theme-reference/goobi-viewer-theme-reference/WebContent/resources/themes/"
webAppMount="/resources/themes" />

Die Anpassung des Pfades muss natürlich auch in der lokalen config_viewer.xml unter viewer/theme/rootPath erfolgen.

2019-05-27

Sofern die Unterstützung von denkXweb gewünscht wird, muss der Goobi viewer Indexer aktualisiert und die folgenden beiden Zeilen in dessen Konfigurationsdatei eingefügt werden:

solr_indexerconfig.xml
<indexedDenkXweb>indexed_denkxweb</indexedDenkXweb> <origDenkXweb>/opt/digiverso/viewer/orig_denkxweb/</origDenkXweb>

Außerdem den Ordner im Dateisystem anlegen:

mkdir /opt/digiverso/viewer/indexed_denkxweb/
mkdir /opt/digiverso/viewer/orig_denkxweb/
chown tomcat8:tomcat8 /opt/digiverso/viewer/indexed_denkxweb/
chown tomcat8:tomcat8 /opt/digiverso/viewer/orig_denkxweb/

2019-05-22

Damit nach Änderungen am Javascript und CSS Dateien diese schneller an den Client ausgeliefert werden ist eine Änderung in der Apache Konfiguration des Goobi viewer vhosts notwendig. Einerseits hinzufügen der folgenden Zeile:

# make sure the ETag headers are correctly forwarded.
# Post Apache 2.4 have a look at
# https://httpd.apache.org/docs/trunk/mod/mod_deflate.html#deflatealteretag
RequestHeader edit "If-None-Match" '(.*)-gzip"$' '$1", $1-gzip"'

Andererseits das auskommentieren der folgenden drei Zeilen im <LocationMatch /> Block für den Goobi viewer:

# ExpiresByType text/css "access plus 24 hours"
# ExpiresByType text/javascript "access plus 24 hours"
# ExpiresByType application/javascript "access plus 24 hours"

2019-04-24

Die URLs für Verlinkung der Sammlungen aus dem Backend heraus werden nun anders gebildet. Bei relativen URLs wird nun immer auch der Anwendungsname mit angegeben. Beim Update ist zu prüfen ob im Admin-Backend unter "Sammlungen" Einträge vorhanden sind. Wenn ja muss geprüft werden ob URLs zu CMS-Seiten vergeben sind. Ist das der Fall muss der Anwendungsname entfernt werden.

Beispiel:

Alt

Neu

/viewer/sammlungen/alle-werke/

/sammlungen/alle-werke/

2019-03-29

Aktualisierung des Goobi viewer Indexers und Anpassen der Konfigurationsdatei solr_indexerconfig.xml. Wenn das Metadatum MD_SERIESTITLE existiert muss dieses in MD_TITLE_SERIES umbenannt werden. Siehe dazu auch den letzten Abschnitt in Kapitel 6.2.

Außerdem kann aus der lokalen config_viewer.xml die Definition der Klassifikationen aus dem CMS-Bereich gelöscht werden (config/cms/classifications). Die Werte werden inzwischen in der Datenbank vorgehalten.

Durch die Refaktorisierung des Medien-Bereichs sind einige Funktionen von dort an andere Stelle gewandert. Zum Beispiel auch die Zuweisung einer Bild-Datei zu einer Sammlung. Dieser Umzug muss manuell gemacht werden. Dafür ist vor dem Update folgendes SQL auszuführen:

SELECT cms_media_item_id, file_name, collection, collection_name, collection_field FROM cms_media_items WHERE collection=1;

Die Query liefert eine Liste aller Medien-Objekte die berücksichtigt werden müssen. Für jedes muss im CMS-Backend eine neue Sammlung angelegt werden mit collection_field als Sammlungsfeld und collection_name als Sammlungsname. Das Bild muss anhand der id oder des Dateinamens identifiziert werden.

2019-02-14

Die Übersichtsseiten-Funktionalität wurde zugunsten einer CMS-Erweiterung entfernt. Mit dem Update des Cores muss zwingend auch der Goobi viewer Indexer und das Solr-Schema aktualisiert werden.

In der Konfigurationsdatei des Goobi viewer Indexers den Eintrag für den overviewFolder entfernen und für einen cmsFolder hinzufügen:

solr_indexerconfig.xml
<!--overviewFolder>overview</overviewFolder-->
<cmsFolder>cms</cmsFolder>

Außerdem den Ordner im Dateisystem anlegen:

mkdir /opt/digiverso/viewer/cms/
chown tomcat8:tomcat8 /opt/digiverso/viewer/cms/

Nun folgendes SQL Statement ausführen um sicherzustellen, dass der Zeichensatz der CMS-Zieltabelle korrekt ist und die Migration nicht fehlschlägt:

ALTER TABLE cms_content_items CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ob die Migration ausgeführt werden muss, kann in der Datenbank geprüft werden:

SELECT COUNT(*) FROM overview_pages,overview_page_updates;

Um dann bereits angelegte Übersichtsseiten aller Werke ins CMS zu migrieren, den folgenden Aufruf einmalig ausführen:

https://viewer.example.org/viewer/tools?action=migrateOverviewPages

Am Ende kann der overview Ordner aus dem Dateisystem auch in das Backup verschoben werden.

2018-12-19

Der Goobi viewer Indexer und das dazugehörige Schema müssen aktualisiert und der Datenbestand neu indexiert werden damit die Bildmaße als WIDTH und HEIGHT in den Solr Suchindex geschrieben werden.

2018-12-17

Für die neue Facettierung nach Strukturelementen muss der Goobi viewer Indexer auf die Version 3.2.20181214 und das Solr-Schema auf 20181214 aktualisiert und der Datenbestand neu indexiert werden.

Außerdem muss in der lokalen config_viewer.xml geprüft werden, ob das Feld DOCSTRCT zur Facettierung konfiguriert ist. Wenn ja ist dieses durch die neuen beiden Feldnamen DOCSTRCT_TOP und DOCSTRCT_SUB zu ersetzen.

<search>
<drillDown>
<!--field initialElementNumber="3">DOCSTRCT</field-->
<field initialElementNumber="3">DOCSTRCT_TOP</field>
<field initialElementNumber="3">DOCSTRCT_SUB</field>
</drillDown>
</search>

2018-11-19

Eine Änderung in der Darstellung von Normdaten-Buttons erfordert eine Umkonfigurierung aller Installationen, die Normdaten anzeigen.

Der Type für NORM_URI lautet nicht mehr field sondern neu normdatauri und kann als Parameter an beliebige Stelle platziert werden. So können Normdaten-Buttons auch zwischen anderen Parametern gerendert werden, anstatt wie bisher nur ganz am Ende.

config_viewer.xml
<metadata label="MD_AUTHOR" value="MASTERVALUE_WIKINORM" group="true">
<param type="field" key="MD_VALUE"/>
<param type="wikipersonfield" key="MD_VALUE"/>
<param type="normdatauri" key="NORM_URI" />
</metadata>

Für den Normdaten-Button muss ein eigener Platzhalter (hier: {5}) definiert werden:

messages_de.properties
MASTERVALUE_WIKINORM={1} <a href="http://de.wikipedia.org/wiki/{3}" target="_blank" title="Wikipedia" alt="Wikipedia" data-trigger="hover" data-placement="top" data-toggle="tooltip"><i class="fa fa-wikipedia-w" aria-hidden="true"></i></a> {5}

Außerdem die folgende Datei unter /opt/digiverso/viewer/config/ ablegen:

normdatamap.properties
001=NORM_IDENTIFIER_ZLB
0247_a=URI
035__(DE-101)=NORM_IDENTIFIER_ZLB
1001_a=NORM_NAME
1001_d=NORM_LIFEPERIOD
1001_q=NORM_SEX
4001_a=NORM_ALTNAME
5000_4\:beza=NORM_ACQUAINTANCE
5000_4\:bezav:VD-16\ Mitverf.=NORM_COAUTHOR
5001_4\:beza=NORM_ACQUAINTANCE
5001_4\:bezav:Mitschu\u0308ler=NORM_CLASSMATE
5001_4\:bezav:VD-16\ Mitverf.=NORM_COAUTHOR
5001_4\:bezf=NORM_RELATIVE
5001_4\:bezfv:Vater=NORM_FATHER
5001_4\:bezfv:Vorfahren=NORM_ANCESTOR
5001_4\:saml=NORM_COLLECTOR
5102_4\:besi=NORM_OWNER
5102_4\:bete=NORM_CONTRIBUTOR
530_04\:rela=NORM_RELATIONSHIP
548__4\:datl=NORM_LIFEPERIOD
548__4\:dats=NORM_PRODUCTIONPERIOD
548__4\:datw=NORM_WORKPERIOD
548__4\:datx=NORM_LIFEPERIODEXACT
550__4\:stud=NORM_EDUCATION
550__4\:beru=NORM_PROFESSION
550__4\:obin=NORM_OBIN
551__4\:ortg=NORM_PLACEOFBIRTH
551__4\:ortu=NORM_PLACEOFEDUCATION
551__4\:orts=NORM_PLACEOFDEATH

2018-10-25

Die folgenden beiden Feldeinträge sollen in der Konfigurationsdatei des Goobi viewer Indexers ergänzt werden:

solr_indexerconfig.xml
<MD_PROCESSID>
<list>
<item>
<xpath>@OBJID</xpath>
<addToDefault>false</addToDefault>
<addUntokenizedVersion>false</addUntokenizedVersion>
</item>
</list>
</MD_PROCESSID>
<BOOL_CONTAINSIMAGE>
<list>
<item>
<xpath>string(boolean(mets:fileSec/mets:fileGrp[@USE="PRESENTATION"]))</xpath>
<addToDefault>false</addToDefault>
<addSortField>true</addSortField>
</item>
</list>
</BOOL_CONTAINSIMAGE>

2018-10-19

Der Goobi viewer Indexer muss aktualisiert und der Datenbestand neu indexiert werden um sicherzustellen, dass keine falschen Suchtreffer angezeigt werden.

2018-10-09

In der config_viewer.xml muss der Block <openIdConnect> umbenannt werden in <authenticationProviders>. Sein Attribut showwandert in die einzelnen enthaltenen <provider> Einträge. Der Default-Wert für show ist dabei true. Alle <provider> Einträge mit Namen Google und Facebook müssen zusätzlich das Attribut type="openId" bekommen. Die Anmeldung über lokale Viewer-Nutzeraccounts muss als separater <provider> eingetragen werden:

<provider type="local" show="true" name="Goobi viewer"/>

Eine typische komplette Konfiguration sieht dann so aus:

<authenticationProviders>
<provider type="openId" show="true" name="Google" endpoint="https://accounts.google.com/o/oauth2/auth" clientId="CHANGEME" clientSecret="CHANGEME" image="google.png" />
<provider type="openId" show="false" name="Facebook" endpoint="https://www.facebook.com/dialog/oauth" clientId="CHANGEME" clientSecret="CHANGEME" image="facebook.png" />
<provider type="local" show="true" name="Goobi viewer"/>
</authenticationProviders>

Siehe auch Sektion 5.2 Benutzeraccounts.

2018-09-10

Da sich bei der Suchtreffer- und Sammlungsanzeige in der URL die Position geändert hat an dem die Einschränkung angezeigt ist muss eine Weiterleitung eingerichtet werden, damit externe Verlinkungen weiterhin funktionieren. Dafür kann zum Beispiel im Apache das folgende Snippet verwendet werden:

## Redirect collection facetting to new URL destination
ProxyPassMatch ^/viewer/browse/DC(.*)/-/([0-9]+)/-/-/$ !
RedirectMatch 301 ^/viewer/browse/DC(.*)/-/([0-9]+)/-/-/$ /viewer/browse/-/$2/-/DC$1/
ProxyPassMatch ^/viewer/search/DC(.*)/-/([0-9]+)/-/-/$ !
RedirectMatch 301 ^/viewer/search/DC(.*)/-/([0-9]+)/-/-/$ /viewer/search/-/-/$2/-/DC$1/
ProxyPassMatch ^/viewer/search/(.*)/-/([0-9]+)/-/-/$ !
RedirectMatch 301 ^/viewer/search/(.*)/-/([0-9]+)/-/-/$ /viewer/search/-/-/$2/-/DC:$1/

2018-09-06

Bestehende Cronjobs für den Goobi viewer sind zu prüfen und in die Datei /etc/cron.d/intranda-goobiviewer zusammenzuführen. Eine Vorlage für so eine Datei ist wie folgt:

/etc/cron.d/intranda-goobiviewer
PATH=/usr/bin:/bin:/usr/sbin/
#
# Regular cron jobs for the Goobi viewer
#
## This REST call triggers the email notification about new search hits for users,
## that enabled notifications for saved searches
42 8,12,17 * * * root curl -s http://localhost:8080/viewer/rest/search/sendnotifications/?token=fc375cda-0908-405b-ad7a-1fc5ba638662
## This REST call creates an XML sitemap for the Goobi viewer instance. Please always
## call it on it's external URL because otherwise the protocol (http/https) might not
## be detected correctly
18 1 * * * root curl -s -X POST -H "Content-Type: application/json" -d '{}' "https://viewer.example.org/viewer/rest/sitemap/update/?token=fc375cda-0908-405b-ad7a-1fc5ba638662" 1>/dev/null
## This two scripts pull the theme git repository regulary. The @daily part is only
## a reminder for the 1-minute schedule
*/1 * * * * root cd /opt/digiverso/viewer/themes/goobi-viewer-theme-reference; git pull | grep -v "Already up-to-date."
@daily root echo "Please look at the git checkout interval for the Goobi viewer theme" | mail -s "Reference: Theme repository is checked out every minute" [email protected]
## Optimize the Solr search index once a month
@monthly root curl -s "http://localhost:8080/solr/update?optimize=true&waitFlush=false"

Der Token muss erst generiert und dann in der lokalen config_viewer.xml konfiguriert werden:

cat /proc/sys/kernel/random/uuid
config_viewer.xml
<webapi>
<authorization>
<token>fc375cda-0908-405b-ad7a-1fc5ba638662</token>
</authorization>
</webapi>

2018-08-17

Wenn das Crowdsourcing Modul installiert ist, muss aus dessen Konfigurationsdatei config_viewer-module-crowdsourcing.xml der folgende Block entfernt werden:

<viewImage>
<url>resources/components/viewImageUserGeneratedContent.xhtml</url>
</viewImage>

2018-06-21

Bei der Facettierung dürfen die konfigurierten Feldnamen nicht mehr mit FACET_ starten, sondern müssen mit MD_ beginnen.

2018-05-28

Optional: Extrahiertes Theme einbinden. Siehe dazu Kapitel 2.16.1

2018-05-08

Damit die vom Goobi viewer generierten IIIF Presentation Manifeste von extern funktionieren, muss CORS erlaubt werde. Dafür das Headers Modul im Apache aktivieren sofern noch nicht geschehen:

a2enmod headers

In dem oder in den vhosts folgendes Snippet einfügen:

## CORS for IIIF
Header set Access-Control-Allow-Origin "*"

Anschließend den Apache neu starten:

systemctl restart apache2

Außerdem muss der Goobi viewer Indexer aktualisiert und der Datenbestand neu indexiert werden. Hintergrund ist, dass für die Generierung der IIIF Manifeste die Bildgrößen verfügbar sein müssen. Stehen diese im Solr Suchindex ist die Generierung der Manifeste deutlich schneller als wenn dafür jedes Bild einzeln gelesen werden muss.