Installation - ubtue/ub_tools GitHub Wiki

Hinweise zum Installationsumfang

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.

Voraussetzungen

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.

Vorbereitung

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).

Installation

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).

Was passiert im Installationsprozess?

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)

Weitere manuelle Schritte

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
      • 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
  • 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
  • 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
      • header_dependent_relay: Anlegen und folgende Zeile einfügen: /^X-TueFind-Spamfilter:.*enabled.*/ FILTER smtp:[a1541.mx.srv.dfn.de]
  • 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
  • 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.

⚠️ **GitHub.com Fallback** ⚠️