OSIRIS ist eine Webanwendung, die auf einem Linux-Server läuft. Die Installation erfolgt über die Kommandozeile. Die Distribution müsst ihr selbst aufsetzen, doch die Installation aller Abhängigkeiten wird auch weiter unten beschrieben. OSIRIS ist getestet mit Debian 11 und CentOS 8. Die Installation sollte aber auch auf anderen Distributionen funktionieren, die die gleichen Pakete bereitstellen.
Installiere Apache2, PHP 8 und benötigte PHP-Module:
sudo apt-get install -y apache2 php php-cli php-pear php-dev php-ldap libzip-dev gcc
Apache starten und aktivieren:
sudo systemctl start apache2
sudo systemctl enable apache2
Folgt der offiziellen Anleitung: MongoDB Installation
sudo apt-get install -y mongodb
MongoDB starten und beim Systemstart aktivieren:
sudo systemctl start mongod
sudo systemctl enable mongod
Überprüfe, ob MongoDB läuft:
sudo systemctl status mongod
sudo pecl install mongodb-1.21.0
In deiner php.ini
folgende Zeilen hinzufügen:
extension=mongodb.so
extension=zip.so
Falls Git noch nicht installiert ist, installiere es mit:
sudo apt-get install git # Debian/Ubuntu
Wechsle in das Verzeichnis, in dem du OSIRIS installieren möchtest. Der .
am Ende des folgenden Befehls sorgt dafür, dass alle Dateien in das aktuelle Verzeichnis geladen werden. Wenn du OSIRIS in einem Unterordner installieren möchtest, gib stattdessen den Pfad an.
cd /var/www/html
git clone https://github.com/OSIRIS-Solutions/osiris.git .
Composer installiert alle Abhängigkeiten, die OSIRIS benötigt. Das kann einige Minuten dauern.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer update
Bei Problemen:
composer update --ignore-platform-reqs
Die Konfiguration von OSIRIS ist in der Datei CONFIG.php
zu finden. Diese Datei ist im Git-Repository nicht enthalten, da sie an die jeweilige Installation angepasst werden muss. Kopiere die CONFIG.default.php
und benenne sie in CONFIG.php
um.
CONFIG.php
werden alle Server-seitigen Einstellungen vorgenommen. Hier kannst du die Authentifizierungsmethode, die Datenbankverbindung und viele weitere Einstellungen vornehmen. Diese Datei wird bei einem Update nicht überschrieben, sodass du deine Einstellungen nicht erneut vornehmen musst.sudo a2enmod rewrite
sudo systemctl restart apache2
Ab OSIRIS Version 1.3.6 wird die .htaccess
-Datei mitgeliefert. Bei Installation in einem Unterordner, passe bitte RewriteBase
an und den ROOTPATH
in config.php
.
DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteRule ^(css|img|js|uploads|settings.json|manifest.json)($|/) - [L]
RewriteRule ^(.*)$ index.php [QSA]
Öffne deinen Browser und gehe zu:
http://<deine-server-ip>/
Du solltest eine rote Box sehen mit dem Hinweis, dass OSIRIS noch installiert werden muss. Keine Panik, damit ist nur die Datenbank gemeint. Klicke auf "Installieren" und OSIRIS wird die Datenbank anlegen und alles vorbereiten.
Zum Schluss sollte die Login-Seite von OSIRIS laden und die Installation somit abgeschlossen sein! 🎉
Vielen Dank an Paul C. Gaida, der eine Docker-Umgebung für OSIRIS erstellt hat.
Um OSIRIS in einem Docker-Container zu installieren, benötigt ihr Docker auf dem Host-System. Außerdem müssen die OSIRIS-Quellcodes im aktuellen Verzeichnis liegen. Hier solltet ihr auch wie weiter unten in Grundlegende Einstellungen beschrieben die CONFIG.php
-Datei anpassen.
Um OSIRIS in einem Docker-Container zu installieren, müsst ihr die Docker-Umgebung mit dem folgenden Befehl erstellen:
Für eine Entwicklungsumgebung:docker-compose -f docker-compose.dev.yml up -d
Danach könnt ihr OSIRIS im Browser unter http://localhost:8080
erreichen (oder unter der Adresse des Servers, auf dem Docker läuft).
docker-compose -f docker-compose.prod.yml up -d
Vielen Dank Robin Lange vom IWH, der uns folgende Installationsanleitung für Windows zur Verfügung gestellt hat. Sie ist nach seiner eigenen Aussage "for Dummies", also für jemanden geschrieben, der vorher noch nie mit Webservern zu tun hatte.
git clone https://github.com/JKoblitz/osiris.git
Aufpassen! Den Code kann man hier nicht mit Strg+V einfügen. Wenn man das trotzdem versucht, bildet sich ein „unsichtbares Zeichen“ und der anschließende Code funktioniert nicht mehr. Man kann aber mit Linksklick den Code einfügen.
Jetzt sollten alle Dateien aus dem Git Repository in das Verzeichnis kopiert werden.
cd
. Wenn Xampp standardmäßig installiert ist lautet der Befehl
cd C:\xampp\htdocs
Wenn man sich jetzt im Verzeichnis befindet, gibt man Composer update
ein. Wenn alles funktioniert, lädt Composer die fehlenden libraries nach.
Damit OSIRIS läuft müssen die wichtigen Einstellungen vorgenommen werden. Dazu muss die Datei CONFIG.default.php kopiert und in CONFIG.php
umbenannt werden. In dieser Datei könnt ihr grundlegende Einstellungen anpassen, die nicht durch Updates überschrieben werden.
Die Variable ADMIN
definiert den Nutzernamen des Administrators.
Per Default kann dort nur ein Admin angegeben werden, dieser kann aber durch Bearbeitung eines Nutzerprofils anderen Nutzern ebenfalls Admin-Rechte geben.
Die Variable ROOTPATH
definiert, in welchem Unterordner euer Projekt wohnt. Sollte sich das Projekt wie oben angewiesen im Stammordner befinden, muss die Variable leer bleiben.
Wenn euer Projekt in einem Unterordner angelegt werden soll, müsst ihr diese Information an zwei stellen verändern. Nehmen wir im folgenden Beispiel mal an, das System wird im Unterordner osiris
installiert. Einmal müsst ihr in der CONFIG.php
die folgende Zeile anpassen:
define('ROOTPATH', '/osiris');
Außerdem müsst ihr den Pfad auch in der .htaccess
-Datei anpassen:
RewriteBase /osiris
Die Datenbank-Verbindung muss ebenfalls in der CONFIG-Datei angegeben werden. Um gegebenenfalls Servereinstellungen und Nutzernamen angeben zu können, wird direkt der Verbindungsstring übergeben. Wenn ihr MongoDB mit den Standardeinstellungen in der gleichen VM installiert habt, sollten die Voreinstellungen funktionieren:
define("DB_NAME", "osiris");
define("DB_STRING", "mongodb://localhost:27017/" . DB_NAME . "?retryWrites=true&w=majority");
Mehr über die Verbindung mit dem Server könnt ihr direkt in der MongoDB-Dokumentation nachlesen.
OSIRIS funktioniert zurzeit mit drei unterschiedlichen Möglichkeiten der Nutzerverwaltung:
OSIRIS funktioniert zurzeit bevorzugt mit LDAP-Authentifizierung, die von den meisten Instituten zur Nutzerverwaltung verwendet wird.
Die LDAP-Einstellungen müssen ebenfalls in der Configuration angegeben werden. Falls ihr selbst nicht wisst, welche Einstellungen ihr vornehmen müsst, fragt am besten bei eurer IT nach.
define('USER_MANAGEMENT', 'LDAP');
define("LDAP_IP", "100.10.100.0");
define("LDAP_PORT", 389);
define("LDAP_USER", "osiris");
define("LDAP_DOMAIN", "@domain.local");
define("LDAP_PASSWORD", "ldap_password");
define("LDAP_BASEDN", "OU=Users,OU=DSMZ,DC=dsmz,DC=local");
Es kann zu Problemen kommen, wenn das LDAP-Password ein Zeichen enthält, das als Code interpretiert wird. Das ist zum Beispiel der Fall, wenn das Passwort ein Dollar-Zeichen ($) enthält. In diesem Fall muss das Zeichen mit einem Backslash (\) escaped werden oder der String mit einfachen Anführungszeichen gesetzt werden. Das Passwort würde dann so aussehen: define("LDAP_PASSWORD", "\$uperSecret");
oder define("LDAP_PASSWORD", '$uperSecret');
.
@
anzugeben oder eine Base-DN, bei der der Nutzername dann mit %s
angegeben werden muss. Das sieht dann so aus:
define("LDAP_DOMAIN", "uid=%s,ou=people,dc=stark,dc=com");
Im Admin-Bereich kann man in den Generellen Einstellungen unter dem Reiter "Mitarbeitende" Attribute definieren, die über LDAP synchronisiert werden sollen. Ihr gebt hier für jedes Feld den genauen Namen an, der im LDAP-Server hinterlegt ist. Wenn ihr auf "Speichern und Vorschau zeigen" klickt, zeigt OSIRIS euch eine Tabelle mit allen Nutzer:innen an und ihr könnt überprüfen, ob die Attribute korrekt ausgelesen werden.
Wichtig: Diese Attribute können dann nicht mehr in OSIRIS selbst bearbeitet werden. Um die Synchronisierung zu aktivieren, müsst ihr außerdem im Folgenden den CRON-Job aktivieren. Das ist wichtig, damit die Attribute regelmäßig aktualisiert werden.
Damit OSIRIS die LDAP-Attribute regelmäßig aktualisiert, müsst ihr einen CRON-Job einrichten, der das entsprechende Skript täglich ausführt.
Öffnet dazu die Crontab eures Systems:
crontab -e
Fügt dann folgende Zeile hinzu, um die Synchronisation täglich um 2:30 Uhr nachts auszuführen:
30 2 * * * /usr/bin/php /pfad/zu/osiris/jobs/synchronize_users.php >> /var/log/osiris_sync.log 2>&1
Hinweis: Ersetzt /pfad/zu/osiris/
durch das Verzeichnis, in dem OSIRIS bei euch installiert ist.
Ihr könnt den Befehl auch manuell testen:
php /pfad/zu/osiris/jobs/synchronize_users.php
So könnt ihr prüfen, ob die Synchronisation korrekt läuft, bevor sie automatisch per CRON gestartet wird.
Wenn die Synchronisation erfolgreich war, findet ihr genau dort, wo ihr zuvor die Felder definiert habt einen Zeitstempel mit der letzten erfolgreichen Synchronisation.
Um die OSIRIS-eigene Nutzerauthentifizierung zu nutzen, muss nur folgende Einstellung in der CONFIG.php
angepasst werden:
define('USER_MANAGEMENT', 'AUTH');
Die Nutzer-Authentifizierung findet jetzt über das OSIRIS-Addon statt. LDAP-Konfiguration muss demnach nicht vorgenommen werden.
OSIRIS kann auch mit Microsoft-SSO (Single Sign-On) verwendet werden. Dabei wird die Authentifizierung über Microsoft Azure Active Directory durchgeführt. Das wird wie folgt konfiguriert:
define('USER_MANAGEMENT', 'OAUTH2');
// OAUTH user management:
define('OAUTH', 'Microsoft');
define('CLIENT_ID', 'DEINE_CLIENT_ID');
define('CLIENT_SECRET', 'DEIN_CLIENT_SECRET');
define('REDIRECT_URI', 'http://localhost/login-callback.php');
define('AUTHORITY', 'https://login.microsoftonline.com/common');
define('SCOPES', 'openid profile email User.Read');
Workflows laufen regelmäßig und ermöglichen es, Arbeitsschritte zu automatisieren.
Für alle aktuellen (und vermutlich auch zukünftigen) Workflows wird Python 3 benötigt. Wie du Python am besten installierst, schaust du am besten in der offiziellen Dokumentation nach. Du wirst ebenfalls den Python-Paketinstallationsmanager pip benötigen.
Sobald Python 3 und pip installiert sind, kannst du mit folgendem Kommandozeilenbefehl den MongoDB-Connector installieren, der ebenfalls für alle Jobs benötigt wird:
pip install pymongo
Außerdem musst du die Konfigurationsdatei config.default.ini
im jobs
-Unterordner kopieren und die Kopie config.ini
nennen (Dieses Vorgehen verhindert, dass deine Konfiguration durch OSIRIS-Updates überschrieben wird). In der Config-Datei müssen alle Variablen entsprechend angepasst werden, zum Beispiel die Informationen für die Datenbankverbindung.
Der Queue-Workflow holt neue Aktivitäten aus Online-Quellen und speichert sie in einer Warteschlange. Die Benutzer werden benachrichtigt, wenn neue Aktivitäten in der Warteschlange warten, und können sie einfach zu OSIRIS hinzufügen.
Zur Vorbereitung dieses Workflows müssen zunächst drei weitere Python-Pakete installiert werden. Dies geschieht erneut mit pip:
pip install diophila
pip install nameparser
pip install levenshtein
Zusätzlich musst du die OpenAlex-ID Ihres Instituts in der Datei config.ini
ändern. Um diese ID zu finden, suchst du dein Institut am besten auf der Webseite von OpenAlex. Die ID findest du entweder als letztem Teil der URL oder unter Identifiers > openalex. Sie beginnt mit einem I, gefolgt von einer Reihe von Zahlen. Sie muss in der config.ini
eingetragen werden:
[OpenAlex]
Institution = I7935750
Außerdem von Relevanz ist das StartYear
, von dem an Aktivitäten importiert werden, sowie die AdminMail
, mit derer die Abfragen bei OpenAlex getätigt werden.
Zu guter Letzt können wir den Cron-Job anlegen. Ein Cron-Job ist ein geplanter, sich wiederholender Vorgang, den ein System zu einer festgelegten Zeit durchführt. Die folgenden Einstellungen bedeuten, dass der Workflow einmal pro Woche durchgeführt wird, genauer gesagt jeden Sonntag um 2 Uhr morgens.
Wir benutzen den Editor nano
für diese Aktion, ihr könnt aber natürlich auch jeden anderen Editor verwenden.
EDITOR=nano crontab -e
# enter this as cronjob:
0 2 * * 0 python3 /var/www/html/jobs/openalex_parser.py
# press Ctrl+O to save and Ctrl+X to exit
Die Ausgabe sollte euch zeigen, dass ein neuer Cron-Job installiert wurde. Im folgenden werden jeden Sonntag neue Publikationen zu euer Warteliste hinzugefügt.
Es ist möglich, ohne großen Aufwand Altdaten in OSIRIS zu importieren. Um OSIRIS auf den Import vorzubereiten, müssen jedoch erst ein paar Installationsschritte und Konfigurationen durchgeführt werden. Am besten haltet ihr euch dafür an die Anleitung zur Einrichtung der Workflows. Ihr müsst dabei das generelle Setup sowie die Vorbereitung des Queue-Workflows abarbeiten (inklusive der Konfiguration), bis zu dem Punkt, an dem steht, dass ihr bereit für den Altdaten-Import seid. Dann kehrt hierher zurück, um mit dem Import der Altdaten fortzufahren.
Mit dem folgenden Script werden alle Altdaten aus OpenAlex direkt in eure Datenbank importiert. Warum das eine tolle Idee ist, lest ihr am besten hier. Das Script zum Import der Altdaten wird mit folgendem Aufruf gestartet:
python jobs/import_data.py
Wenn das Skript erfolgreich ausgeführt wurde, dann müssten jetzt DOIs erscheinen, die nacheinander in die Datenbank eingepflegt werden. Je nachdem, wie viele Altdaten importiert werden, kann dieser Prozess eine ganze Weile dauern.
Ihr könnt auch eine Liste von DOIs nutzen, um schnell viele Daten in OSIRIS zu importieren. Dazu habe ich euch ein Python-Skript vorbereitet, dass ihr ebenfalls im Ordner Jobs findet (erst ab dem 5. März 2024).
Ihr führt dazu folgende Schritte durch:
import_doi.py
anpassen.
python jobs/import_doi.py
import_doi.py
den Wert ignoreDupl
auf False
setzen.
Für den Fall, dass etwas schief laufen sollte, sammle ich hier ein paar Tipps, die mir selbst oder anderen Nutzern schon weitergeholfen haben.
No suitable servers found
.
setsebool -P httpd_can_network_connect on
settings.json
-Datei zu schreiben.
Ich habe mich am Ende durch diese fantastische Antwort auf StackOverflow gearbeitet, nur um zu bemerken, dass auch hier wieder SELinux seine Finger im Spiel hatte (Corner case #2). Schaut es euch an und arbeitet es ab, mir haben folgende Zeilen Code geholfen:
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/(.*.json)"
restorecon -Rv /var/www/html