Installation - ubtue/ub_tools GitHub Wiki
Für die Installation muss zunächst ub_tools als Basissystem installiert werden. Bei Bedarf kann TueFind in der entsprechenden Ausführung (IxTheo/KrimDok) gleich mit installiert werden. TueFind basiert auf der Open-Source-Suchmaschine VuFind. ub_tools stellt alle Werkzeuge bereit um die Aktualisierung der Bestände und einige spezielle Features von TueFind zu gewährleisten.
Als Betriebssystem ist derzeit nur Ubuntu 20.04 LTS zulässig (sowohl Desktop als auch Server).
Während der Installation werden auch die Basiskomponenten wie MySQL, Apache etc. installiert. Es sollte also auf dem Rechner insbesondere noch keine MySQL-Installation vorhanden sein, da der Installationsprozess den default root Benutzer mit leerem Passwort voraussetzt. Die Zugangsdaten können selbstverständlich nach erfolgreicher Installation noch nachträglich geändert werden.
Außerdem ist nur eine der auswählbaren Installationsarten möglich. Also beispielsweise kann krimdok
nicht gemeinsam mit ixtheo
auf der selben Maschine installiert werden.
Für die Installation muss das IT-Abteilungslaufwerk der Universitätsbibliothek Tübingen unter /mnt/ZE020150
gemountet werden. Hier befinden sich u.a. die nötigen Konfigurationsdateien mit den Passwörtern für die Marc Pipeline. Zunächst sollten dafür die cifs-utils installiert werden: apt install cifs-utils
. Am Besten trägt man dazu //sn00.zdv.uni-tuebingen.de/ZE020150 /mnt/ZE020150 cifs credentials=/root/.smbcredentials,workgroup=uni-tuebingen.de,uid=root,gid=root,auto 0 0
in /etc/fstab
ein. Danach muss man noch /root/.smbcredentials
mit dem Dateimodus 0600
erzeugen. Die .smbcredentials
-Datei braucht zwei Einträge: username=qubob16
und password=??????
.
Als locale sollte immer en_US.UTF-8
gesetzt sein, da sonst die cpp-Programme nicht ausgeführt werden können (update-locale LC_ALL=en_US.UTF-8
).
Als schnelles Beispiel für die notwendigen Schritte bei der Installation (insbesondere für Test/Entwicklungsmaschinen) können folgende Dockerfiles herangezogen werden:
Beispiele für weitere manuell bereitzustellende Dateien (z.B. apache config
, local_overrides
) können im selben Ordner wie das jeweilige Dockerfile eingesehen werden.
Zu Installation kann folgendes Skript verwendet werden: https://raw.githubusercontent.com/ubtue/ub_tools/master/cpp/data/installer/scripts/install_ubtools.sh
Das Skript kann z.B. einzeln per curl heruntergeladen und in /tmp ausgeführt werden. Es ist nicht nötig, vorab bereits ub_tools komplett herunterzuladen. Das Skript installiert die benötigten Pakete und startet dann das ub_tools-interne Installationsprogramm.
Alle Parameter werden ans ub_tools Installationsprogramm weitergegeben. Man kann also auch Zusatzparameter wie z.B. --omit-cronjobs
übergeben um zu verhindern, dass cronjobs eingerichtet werden (z.B. für Entwicklungssysteme).
/tmp/install_ubtools.sh vufind ixtheo --test --omit-cronjobs
Es gibt auch andere Verwendungsmöglichkeiten, mit denen z.B. ausschließlich ub_tools, ein fulltext-backend oder eine andere vufind-Variante mit/ohne cronjobs/systemctl installiert werden kann.
Für erweiterte Optionen, siehe Installer (cpp).
Eine grobe Liste der Schritte die in install_ubtools.sh und installer.cc gemeinsam durchgeführt werden:
- Abhängigkeiten installieren (passend zum OS)
- ub_tools herunterladen (/usr/local/ub_tools)
- CPP-Abhängigkeiten bauen (mkdep)
- TueFind herunterladen (/usr/local/vufind)
- Benutzer anlegen (vufind für apache, solr für solr)
- solr in systemd registrieren
- IxTheo/KrimDok-spezifische Anpassungen durchführen (z.B. solr/vufind-Konfigurationsdateien anpassen, diverse Umgebungsvariablen setzen, cronjobs einrichten)
- AppArmor-Berechtigungen hinzufügen
- make ub_tools (dies erfolgt erst am Schluss, da Abhängigkeiten in /usr/local/vufind benötigt werden)
Beispiele zu den meisten manuellen Schritten die nicht vom Installer durchgeführt werden, können ebenfalls in den Dockerfiles angesehen werden (siehe oben).
Dies umfasst z.B.:
- Apache-Konfiguration
- Allgemein (VirtualHosts, Deflate, etc.)
- LimitRequestLine 65536 (längerer URLs erlauben, z.B. für URL Shortener)
- Passwortschutz für cgi-bin (z.B. .htaccess bzw. .htpasswd)
- PHP-Konfiguration
- max_input_vars 100000 (ebenfalls für URL shortener + exporte)
- memory_limit 256M
- upload_max_filesize + post_max_size=100M (Zweitveröffentlichungsservice)
- PHP >= 8.0: JIT / Opcache
- Aufgrund seltsamer Bugs muss dies sowohl in der php.ini als auch in der opcache.ini korrekt eingestellt werden, damit es korrekt funktioniert. Siehe auch dieser Artikel: Enable-PHP8-2-Jit-on-Ubuntu
- php.ini (Sektion [opcache]):
opcache.enable=1
opcache.jit=1255
opcache.jit_buffer_size=100M
- opcache.ini
- Falls
opcache.jit=off
hier auftaucht => Zeile entfernen opcache.jit=1255
opcache.jit_buffer_size=100M
- Falls
- Danach apache (bzw php-fpm / falls zutreffend) neu starten + in
phpinfo()
prüfen ob der JIT auch tatsächlich aktiv ist (Abschnitt "Zend OPcache" Eintrag "JIT" muss auf "On" stehen) - FPM-spezifisch
- siehe https://tideways.com/profiler/blog/an-introduction-to-php-fpm-tuning
pm.max_children=20
- Mysql-Konfiguration (+Anlegen der VuFind-Datenbank)
- Root-Passwort setzen (nur auf Testserver, auf Liveserver sollte man die Standardeinstellung auth_socket belassen):
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<passwd>‘; flush privileges;
-
/etc/mysql/mysql.conf.d/mysqld.conf
:innodb_buffer_pool_size=512M
- Root-Passwort setzen (nur auf Testserver, auf Liveserver sollte man die Standardeinstellung auth_socket belassen):
- VuFind-Maschinenkonfiguration (local_overrides)
- Postfix / Mailserver-Konfiguration
- Die Pipeline-Programme verwenden i.d.R. unser cpp/send_email-Programm zum Versenden von Mails, das direkt über SMTP mit dem Uni Mailserver kommuniziert
- Für PHP-seitigen Mailversand als auch für systemseitige Fehler beim Starten von cronjobs (mails an root@) muss trotzdem ein Postfix-Server eingerichtet werden. Hierzu sollten auch Anpassungen an den E-Mail-Einstellungen vorgenommen werden.
- Außerdem sollte ein Eintrag in
/etc/aliases
erfolgen, so dass Mails an root stattdessen an z.B. ixtheo-team... oder krimdok-team@... geschickt werden. Das ist notwendig damit wir in bestimmten Fehlerfällen eine Mail-Benachrichtigung erhalten (z.B. fehlerhafter crontab-Eintrag). - Spamfilter: Damit Mails aus den Feedback-Formularen auf den Liveservern auf Spam geprüft werden werden, müssen diese an einen anderen Mailserver mit erweiterter Spamfilter-Konfiguration gesendet werden. Dafür sind folgende Einstellungen notwendig:
- main.cf: Folgende Zeile hinzufügen:
header_checks = pcre:/etc/postfix/header_dependent_relay
- Hinweis: Dafür muss eine Extension installiert werden:
apt install postfix-pcre
- Hinweis: Dafür muss eine Extension installiert werden:
- header_dependent_relay: Anlegen und folgende Zeile einfügen:
/^X-TueFind-Spamfilter:.*enabled.*/ FILTER smtp:[a1541.mx.srv.dfn.de]
- main.cf: Folgende Zeile hinzufügen:
- innodb_file_per_table=ON (ist in MySQL 8 bereits per Default aktiv)
- Elasticsearch Konfiguration (bei Bedarf)
- Lokale Maschine verwenden oder nicht? Falls ja
- installieren
-
systemctl enable elasticsearch
nicht vergessen! - Backup einrichten, Infos dazu siehe cpp/elasticsearch/backup
- Lokale Maschine verwenden oder nicht? Falls ja
- unattended-upgrades
- Standardmäßig aktiviert => kann dazu führen dass Systemdienste (z.B. MySQL Server) im laufenden Betrieb neu gestartet werden, wenn es Updates gibt. Prüfen ob dies gewünscht ist (je nach Server). Ggf. auf reine Sicherheitsupdates beschränken + Mailing einrichten. Außerdem Ausführungszeit verschieben, damit es nicht läuft während die Pipelines laufen:
systemctl edit apt-daily-upgrade.timer
[Timer]
OnCalendar=*-*-* 18:20
RandomizedDelaySec=10m
Persistent=true
systemctl restart apt-daily-upgrade.timer
- Swapfile Größe prüfen
- z.B. unter Ubuntu Standard ca. 2GB (falls es keine Partition gibt), sollte auf 8GB erhöht werden.
- ModSecurity installieren (wird derzeit noch geprüft ob es auf den Produktivservern sinnvoll ist)
Je nach Betriebssystem müssen Außerdem ggf. weitere Punkte eingerichtet werden, z.B. insbesondere bei VMs im ZDV die Konfiguration der Firewall. (Es ist ggf. ratsam die Firewall während der Installation zu deaktivieren, da insbesondere Composer auf eine Vielzahl externer Webseiten zugreift um die benötigten Pakete herunterzuladen.) Für npm kann der ZDV-Web-Proxy zum Download neuer Pakete eingerichtet werden um Firewall-Probleme zu umgehen.
Unter Umständen können bei der Installation Fehler auftreten, die auf das Fehlen von Zertifikaten hinweisen. Dann müssen noch die Zertifikate eingerichtet werden. Ein Neustart der Applikation sollte danach genügen.
Für das automatische Einspielen von BSZ-Daten gibt es hier eine Anleitung.
Für Produktivsysteme gibt es noch ein paar Schritte zu tun.