Skip to content

Installationsanleitung für Kitodo.Production 3.3

Matthias Ronge edited this page Nov 11, 2021 · 13 revisions

Übersicht

  1. Vorbereitende Schritte
  2. Softwarepakete installieren
  3. Root Distinguished Name ermitteln
  4. Name Service Switch installieren
  5. ElasticSearch installieren
  6. Datenbank vorbereiten
  7. LDAP für Samba vorbereiten
  8. Samba konfigurieren
  9. Programmordner und -dateien erstellen
  10. Skripte konfigurieren
  11. Tomcat konfigurieren
  12. Logrotation konfigurieren
  13. Visuelle Konfiguration

1. Vorbereitende Schritte

1a) Host-Konfiguration überprüfen

Prüfen Sie vor der Installation mit dem Kommando

sudo hostname -f

ob der vollqualifizierte Domainname (FQDN) dem geplanten Servernamen entspricht. Dieser wird während der LDAP-Installation für die Bildung des Root Distinguished Name (RDN) und die Basiskonfiguration des LDAP genutzt, was sich später nur umständlich korrigieren lässt. Hier sollte der FQDN, z.B. rechnername.rz.example.de, angezeigt werden, nicht bloß rechnername. Wenn nicht, konfigurieren Sie zuerst /etc/hosts richtig.

1b) Datenpartition bereitstellen

Die Digitalisierung erzeugt viele Daten. In der Regel werden diese Daten auf einer eigenen Partition gespeichert, bei der es sich wahrscheinlich um ein Netzwerkgerät (auch bekannt als NAS) handelt. Mit dem folgenden Befehl erstellen wir einen Einhängepunkt für die Datenpartition als /mnt/data:

sudo mkdir /mnt/data

Wie der Datenspeicher bereitgestellt wird, hängt stark von der verwendeten Hardware und den verwendeten Netzwerken ab. Wenn Sie eine Datenpartition verwenden möchten, stellen Sie sicher, dass die Datenpartition am angegebenen Bereitstellungspunkt bereitgestellt ist. Jetzt ist es ein guter Moment, um zu überlegen, ob Sie LVM einrichten möchten.

2. Softwarepakete installieren

Installieren Sie mit der Paketverwaltung Tomcat 8, MySQL, ImageMagick, LDAP incl. Utils, Samba, den Apache Webserver und den Jakarta Connector. Für die Installation benötigen wir außerdem HTTPS-Unterstützung für Apt, Unzip und das Tool dos2unix. Während der Installation werden Sie nach dem Passwort für den LDAP-Server gefragt. Das Passwort wird von Production unverschlüsselt in der Datenbank gespeichert. Wählen Sie kein wertvolles Passwort.

sudo apt-get update
sudo apt-get install tomcat9 mysql-server imagemagick slapd ldap-utils samba apt-transport-https unzip dos2unix

3. Root Distinguished Name ermitteln

Mit dem Kommando

sudo slapcat

können wir den Inhalt des LDAP-Servers anzeigen. Die Einträge sind durch Leerzeilen getrennt. Hier finden wir den erzeugten Root Distinguished Name (RDN) im Eintrag mit der Eigenschaft objectClass:top unter dem Schlüssel dn.

Wenn Sie ein Testsystem einrichten, das keinen DNS-Namen erhalten soll, wird als RDN dc=nodomain verwendet. Der LDAP-Admin-Benutzer hat den Common Name (CN) cn=admin,dc=nodomain. Diese Angaben werden auch in dieser Installationsanleitung verwendet. Wenn Sie den Rechner in Ihrem Netzwerk installieren, wird hier etwas wie dc=rz,dc=example,dc=de stehen. Benutzen Sie dann diese Zeichenkette anstelle von dc=nodomain im weiteren Verlauf der Installationsanleitung.

4. Name Service Switch installieren

Nun installieren wir noch die Name-Service-Switch-LDAP-Bibliothek:

sudo apt-get install libnss-ldap

Während der Installation werden Sie nach einigen Einstellungen gefragt:

LDAP server Uniform Resource Identifier: ldapi:///
LDAP search base: ou=users,dc=nodomain
LDAP version: 3
Make local root database admin: No
Does the LDAP server require login? No

Falls Sie diesen Schritt wiederholen wollen oder müssen, geben Sie dazu nacheinander die beiden folgenden Kommandos ein:

sudo apt-get purge libnss-ldap
sudo apt-get install libnss-ldap

5. ElasticSearch installieren

Beachten Sie, dass Sie ElasticSearch Version 5 installieren müssen. Aufgrund von Inkompatibilitäten, die mit Version 6 eingeführt wurden, können Sie derzeit keine neuere Hauptversion verwenden. Die folgende Befehlssequenz installiert ElasticSearch 5 mithilfe der Paketverwaltung:

export JAVA_HOME=/usr/lib/jvm/default-java
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo add-apt-repository "deb https://artifacts.elastic.co/packages/5.x/apt stable main"
sudo apt-get update
sudo apt-get install elasticsearch
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

6. Datenbank vorbereiten

Während die Digitalisierungsdaten in Dateien auf dem Datenbereitstellungspunkt gespeichert werden, werden die Prozessdaten (Projekte, Mitarbeiter, Fortschritt von Objekten im Workflow usw.) in einer Datenbank gespeichert. Sie müssen eine Datenbank auf dem MySQL-Server erstellen und den Zugriff für Production konfigurieren.

sudo mysql
create database kitodo;
create user 'kitodo'@'localhost' identified by 'kitodo';
grant all on kitodo.* to 'kitodo'@'localhost';
exit;

Anschließend laden Sie die Datenbankinhaltsvorlage herunter und laden sie in die Datenbank:

wget https://github.com/kitodo/kitodo-production/releases/download/kitodo-production-3.3/kitodo_3-3.sql
mysql -u kitodo -pkitodo -D kitodo < kitodo_3-3.sql

Folgende Fehler müssen zurzeit bei einer Installation manuell behoben werden:

Schema-validation: missing table [client_x_listColumn] https://github.com/kitodo/kitodo-production/issues/3998

Flyway migration is failing https://github.com/kitodo/kitodo-production/issues/3810

7. LDAP für Samba vorbereiten

Laden Sie das Samba-Schema in LDAP:

zcat /usr/share/doc/samba/examples/LDAP/samba.ldif.gz | sudo ldapadd -Q -Y EXTERNAL -H  ldapi:///

Erstellen Sie im LDAP einen Eintrag für die Gruppe der Production-Benutzenden. Erstellen Sie dazu eine Datei users.ldif mit folgendem Inhalt:

dn: ou=users,dc=nodomain
objectClass: organizationalUnit
ou: users

Die Datei laden Sie in LDAP mit:

ldapadd -x -D cn=admin,dc=nodomain -w 'LDAP-Admin-Passwort' < users.ldif

Ermitteln Sie die Gruppennummer für alle Benutzenden:

grep users /etc/group

Es handelt sich um die Zahl zwischen dem zweiten und dritten Doppelpunkt. (Meistens ist das die 100.)

Ermitteln Sie die höchste vergebene Benutzendennummer. Betrachten Sie dazu die Datei /etc/passwd.

less /etc/passwd

Jede Zeile entspricht einem Benutzendenkonto. Die Benutzendennummer steht zwischen dem zweiten und dritten Doppelpunkt (die erste der beiden Zahlen). Alle Benutzenden, die keine Systemkonten sind, haben eine Benutzendennummer ab 1000 aufsteigend. Suchen Sie die erste Zahl größer als 1000, die nicht mehr vorkommt. Dies ist die nächste freie Benutzendennummer. Die Anzeige beenden Sie mit einem Druck auf die Taste Q.

Erstellen Sie eine Datei nextfreeunixid.ldif mit folgendem Inhalt. Setzen Sie dabei die ermittelten Angaben ein:

dn: cn=NextFreeUnixId,dc=nodomain
objectClass: inetOrgPerson
sn: NextFreeUnixId
objectClass: posixAccount
cn: NextFreeUnixId
uid: nextfreeunixid
uidNumber: #die nächste freie Benutzendennummer#
gidNumber: #die ermittelte Gruppennummer#
homeDirectory: /dev/null

Die Datei laden Sie in LDAP mit:

ldapadd -x -D cn=admin,dc=nodomain -w 'LDAP-Admin-Passwort' < nextfreeunixid.ldif

8. Samba konfigurieren

Bearbeiten Sie die Datei /etc/samba/smb.conf, sodass sie folgendes enthält:

[global]
workgroup = KITODO
unix extensions = no
wide links = yes
load printers = no
security = user
invalid users = root
encrypt passwords = yes

ntlm auth = yes
lanman auth = no
client ntlmv2 auth = yes

passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=nodomain
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=nodomain
ldap ssl = no
ldap passwd sync = yes
ldap delete dn = no

[homes]
comment = Home Directories
path = /usr/local/kitodo/users/%U
read only = no
browseable = no
valid users = %S
guest ok = no
inherit permissions = yes

Passen Sie die Konfiguration des Name Service Switch, /etc/nsswitch.conf an: Ergänzen Sie die Zeile passwd: um das Argument ldap:

passwd:         compat systemd ldap

Setzen Sie in Samba das LDAP-Passwort:

sudo smbpasswd -w 'LDAP-Admin-Passwort'

Starten Sie die Samba-Dienste neu:

sudo systemctl restart smbd nmbd

9. Programmordner und -dateien erstellen

Laden Sie die Software, die Module und die Konfigurationsdateien herunter, erstellen Sie einen Programmordner, entpacken Sie die Module und Konfigurationsdateien. Den metadata-Ordner legen Sie auf die Datenpartition. Vergeben Sie die notwendigen Berechtigungen:

wget https://github.com/kitodo/kitodo-production/releases/download/kitodo-production-3.3/kitodo-3.3.war
wget https://github.com/kitodo/kitodo-production/releases/download/kitodo-production-3.3/kitodo_3-3_config_modules.zip

sudo unzip kitodo_3-3_config_modules.zip -x kitodo_3-3/scripts/*.bat -d /usr/local
sudo mv /usr/local/kitodo_3-3 /usr/local/kitodo
sudo mkdir /usr/local/kitodo/messages
sudo unzip -j kitodo-3.3.war 'WEB-INF/classes/messages/*' -d /usr/local/kitodo/messages
cd /usr/local/kitodo
sudo mv metadata /mnt/data
sudo ln -s /mnt/data/metadata
sudo mkdir logs temp
# sudo chown -R ‹Admin-Benutzer›:users config messages rulesets xslt #optional
sudo chown -R tomcat8:tomcat8 diagrams logs metadata temp users 

10. Skripte konfigurieren

sudo dos2unix scripts/*.sh
sudo chown tomcat8 scripts/*.sh
sudo chmod 544 scripts/*.sh
cd

Ändern Sie die Datei /usr/local/kitodo/scripts/script_createDirUserHome.sh wie folgt:

#!/bin/sh
User="$1"
Home="$2"

/bin/mkdir "$Home"
/bin/chmod g+w "$Home"
sudo /bin/chown $User "$Home"
sudo /bin/chgrp tomcat8 "$Home"

Ändern Sie die Datei sudo nano /usr/local/kitodo/scripts/script_createSymLink.sh wie folgt:

#!/bin/sh
Source="$1"
Target="$2"
User="$3"

/bin/ln -s "$Source" "$Target"
sudo /bin/chown -R $User "$Source"

Erstellen Sie mit dem Kommando sudo visudo -f /etc/sudoers.d/kitodo eine Datei mit folgendem Inhalt:

User_Alias TOMCAT_USER = tomcat8

Cmnd_Alias CHOWN_METADATA = /bin/chown -R * /usr/local/kitodo/metadata/*
Cmnd_Alias CHOWN_USERS = /bin/chown * /usr/local/kitodo/users/*
Cmnd_Alias CHGRP_USERS = /bin/chgrp tomcat8 /usr/local/kitodo/users/*

TOMCAT_USER ALL=NOPASSWD: CHOWN_METADATA, CHOWN_USERS, CHGRP_USERS

11. Tomcat konfigurieren

Passen Sie die Default-Einstellungen des Tomcat, /etc/default/tomcat8 an: Ergänzen Sie die Zeile JAVA_OPTS, um dem Tomcat mehr Arbeitsspeicher (4G, davon 256m für den Programmcode) zu geben:

JAVA_OPTS="-Djava.awt.headless=true -XX:+UseConcMarkSweepGC -Xmx4G -XX:MaxPermSize=256m"

Wenn systemd im ProtectSystem-Modus full oder strict läuft (neuere Linux-Distributionen), muss der Schreibzugriff auf die Verzeichnishierarchie unter /usr/local/kitodo/ freigegeben werden, indem in der Datei /lib/systemd/system/tomcat9.service im Abschnitt [Service] die Zeile ReadWritePaths=/usr/local/kitodo/ hinzugefügt wird. (Die Zeile ReadWritePaths= wird für jeden freizugebenden Pfad wiederholt.)

Starten Sie danach den Tomcat neu:

sudo systemctl daemon-reload
sudo service tomcat8 restart

Installieren Sie die Webanwendung:

sudo cp kitodo-3.3.war /var/lib/tomcat8/webapps/kitodo##3.3.war

12. Logrotation konfigurieren

Erstellen Sie die Datei /etc/logrotate.d/kitodo z.B. mit folgendem Inhalt:

/usr/local/kitodo/logs/kitodo.log {
    copytruncate
    daily
    rotate 7
    ifempty
    compress
    compresscmd /usr/bin/gzip
    uncompresscmd /usr/bin/gunzip
    missingok
    nomail
 }

13. Visuelle Konfiguration

Sie erreichen die Webanwendung im WWW-Browser unter der Adresse: http://host:8080/kitodo. Melden Sie sich mit dem Benutzernamen testadmin und dem Passwort test an.

13a) Indexaufbau

Es öffnet sich die Seite System – Indexierung. Erzeugen Sie das ElasticSearch-Mapping und indexieren Sie den gesamten Index komplett.

13b) LDAP-Konfiguration

Wechseln Sie dann über das Hauptmenü, den “Zauberwürfel” rechts oben, zu Benutzer. Erstellen Sie mit dem “Neu”-Button einen neuen LDAP-Server mit folgenden Einstellungen:

Manager login cn=admin,dc=nodomain
nextFreeUnixIdPattern cn=NextFreeUnixId,dc=nodomain
URL ldap://localhost:389/
Manager password LDAP-Admin-Passwort

Wechseln Sie zum Tab “LDAP-Gruppen”. Ermitteln Sie den Secure Identifier (SID) mit dem Kommando:

sudo net getlocalsid

Passen Sie die Einstellungen der LDAP-Gruppe wie folgt an:

Beispiel
User DN cn={login},ou=users,dc=nodomain cn={login},ou=users,dc=nodomain
gidNumber Gruppennummer 100
sambaSID SID-{uidnumber*2+1001} S-1-5-21-123456789-1234567890-1234567890-{uidnumber*2+1001}
LDAP-Server den soeben erstellten Server auswählen Lokaler LDAP-Server
loginShell /bin/false /bin/false
sambaPrimaryGruopSID SID-1000 S-1-5-21-123456789-1234567890-1234567890-1000

Aktivieren Sie auf dem Tab “LDAP-Gruppen” unten die LDAP-Authentifizierung. Wechseln Sie dann zur Seite Benutzer – Benutzer und bearbeiten der Reihe nach die Benutzenden. Schreiben Sie bei jedem Benutzenden die LDAP-Konfiguration.

Passen Sie die Konfiguration der Webanwendung unter /var/lib/tomcat8/webapps/kitodo##3.2/WEB-INF/classes/kitodo_config.properties an: Ändern Sie die Zeile ldap_use auf den Wert true.

Clone this wiki locally