Installationsanleitung

< Quickstart-Guide | Admin-Dokumentation | Konfiguration >

Installationsanleitung

Die aktuellste Version dieser Anleitung finden Sie jederzeit im Hilfe-Wiki unter folgendem Link: https://hilfe.studip.de/admin/Admins/Installationsanleitung . Zur Einrichtung zusätzlicher Dienste finden sich Anleitungen im Quellcode-Repositorium von Stud.IP im Verzeichnis /doc/de/.

1.  Systemvoraussetzungen

  • root-Zugriff auf dem Server
  • Apache Webserver
  • MySQL/MariaDB Datenbankserver
    • Ab Stud.IP 4.0: Mindestens MySQL 5.5.3
    • Ab Stud.IP 4.6: Mindestens MySQL 5.7 oder MariaDB-10.2.3
  • PHP
    • Stud.IP 4.2 - 4.4: mindestens PHP 5.6, höchstens PHP 7.2
    • Stud.IP 4.5 - 4.6: mindestens PHP 7.0, höchstens PHP 7.3

Die Installation auf einem unixoiden Betriebssystem wie z.B. Ubuntu Linux wird empfohlen.

2.  Einrichtung des Servers

2.1  MySQL/MariaDB

Zur Installation in Ubuntu Linux wird das Paket mysql-server installiert:

apt install mysql-server

In neueren Ubuntu-Versionen installiert dieser Befehl im Effekt MariaDB, da das Paket mysql-server nur noch ein sogenanntes Metapaket ist, das auf mariadb-server verweist.

Die folgenden Einstellungen sollten für Stud.IP in eine separate Konfigurationsdatei des Datenbankservers geschrieben werden:

    [mysqld]
    innodb_file_per_table = On
    innodb_large_prefix = On
    innodb_file_format = Barracuda
    sql_mode = NO_ENGINE_SUBSTITUTION

In neueren MySQL/MariaDB-Versionen können innodb_file_per_table und innodb_large_prefix weggelassen werden, weil diese Einstellungen standardmäßig schon auf den richtigen Wert gesetzt sind. Wenn man sich nicht sicher ist, sollten diese Einstellungen mit dem Wert „On“ statt „1“ in die Konfigurationsdatei geschrieben werden. Der Hintergrund ist, dass bei einem Update von Stud.IP 3.x auf eine Stud.IP 4.x-Version die UTF-8-Datenbankmigration erwartet, dass die Einstellungen den Wert „On“ besitzen.

Erklärung der Einstellungen

Stud.IP verlangt InnoDB als Methode zur Datenspeicherung. innodb_file_format = Barracuda setzt das Datenformat bei der Speicherung explizit auf das effizientere Barracuda-Dateiformat, das bei InnoDB-Tabellen benutzt werden kann. Mit innodb_large_prefix = On werden Indizes erlaubt, die länger als 255 Bytes sind. Manche Tabellen in modernen Stud.IP-Versionen benötigen solch große Indizes. innodb_file_per_table = On sorgt dafür, dass jede Datenbanktabelle aller Datenbanken in einer separaten Datei gespeichert wird. Dies vereinfacht den direkten Transfer von Datenbanken von einem Server zu einem anderen, was gerade im Falle eines Defektes auf einem Server die Arbeiten erleichtert.

Mit sql_mode = NO_ENGINE_SUBSTITUTION wird der Modus STRICT_TRANS_TABLES, der in neueren MySQL/MariaDB-Versionen standardmäßig gesetzt ist, ausgeschaltet, da ab Stud.IP 3.4 dieser Modus zu Problemen bei der Benutzung von Stud.IP führen kann.

Tuning von InnoDB

Für eine Stud.IP-Test-Installation ist keinerlei Konfiguration von MySQL notwendig. Für ein Produktivsystem, vor allem bei großen Nutzerzahlen, können folgende zusätzlichen Einstellungen vorgenommen werden:

    [mysqld]
    innodb_buffer_pool_size = Größe der DB
    innodb_buffer_pool_instances = 1 / GB Größe
    innodb_log_file_size = 50MB
    innodb_flush_log_at_trx_commit = 2

Um die bestmögliche Leistung aus der Datenbank herauszuholen, können die InnoDB-Einstellungen optimiert werden. Die folgenden Seiten bieten mehr Informationen dazu:

2.2  PHP

Die folgenden PHP-Module sind erforderlich: mysql, gettext, session, curl, gd, mbstring, zip

Installation in Ubuntu Linux:

apt install php-mysql php-gettext php-common php-curl \
php-gd php-mbstring php-zip

Optionale PHP-Module: xsl, xml, ldap

Installation in Ubuntu Linux:

apt install php-xml php-ldap

Beschreibung der Module

  • Das PHP-Modul mysql (pdo_mysql) erlaubt den Zugriff auf einen MySQL Datenbank-Server.
    • Ab Stud.IP Version 4.1 muss mysqlnd und mysqli installiert sein, falls das nicht möglich ist muss die Einstellung GLOBALSEARCH_ASYNC_QUERIES deaktiviert werden.
  • Das PHP-Modul gettext implementiert ein NLS (Native Language Support) API, das dazu verwendet wird, Stud.IP zu internationalisieren.
  • Das PHP-Modul session bietet die Möglichkeit, bestimmte Daten während einer Folge von Aufrufen Ihrer Website festzuhalten.
  • Das PHP-Modul Curl für die Kommunikation mit anderen Diensten.
  • Das PHP-Modul gd
  • Das PHP-Modul mbstring (ab Stud.IP 4.0)
  • Für das Export-Tool werden zusätzlich die Module xsl und xml benötigt. Zudem müssen der Formating Objects Processor und ein Java Runtime Environment installiert sein.
  • Falls sie Nutzer via LDAP authentifizieren möchten, ist die Einrichtung des LDAP-Moduls nötig.
  • Für den Import von Literaturlisten wird bis Stud.IP 4.5 das Modul dom benötigt.
  • Für das Öffnen/Erstellen von Zip-Archiven wird das Modul zip benötigt (ab Stud.IP 4.0).

Konfiguration

Für den Betrieb von Stud.IP müssen bestimmte Einstellungen von PHP geändert werden:

    short_open_tag = On
    max_input_vars = 10000
    upload_max_filesize = 512M
    memory_limit = 1024M
    post_max_size = 514M
    max_execution_time = 300
    allow_url_fopen On
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT  & ~E_NOTICE
    default_charset  = "UTF-8"
    mbstring.internal_encoding  = "UTF-8"
  • short_open_tag ermöglicht die Verwendung von kurzen öffnenden Tags („<?“). Diese werden in Stud.IP verwendet und sind für einen Betrieb von Stud.IP zwingend nötig.
  • max_input_vars setzt das Maximum an Variablen, die in $_GET, $_POST und $_COOKIE gesetzt werden dürfen.
  • Mit upload_max_filesize wird angegeben, wie groß Dateien beim Upload maximal sein dürfen.
  • memory_limit bestimmt den maximalen Speicherverbauch eines PHP-Aufrufs.
  • Mit post_max_size wird die maximale Größe der Daten bei einer HTTP POST Anfrage gesetzt. Diese Wert muss etwas höher als upload_max_filesize sein.
  • max_execution_time setzt die maximale Ausführungszeit eines PHP-Aufrufes.
  • allow_url_fopen ermöglicht ein Öffnen von HTTP- oder FTP-URLs als wären es normale Dateien.
  • Mit error_reporting wird festgelegt, welche Fehler in die Ausgabe des PHP-Aufrufes geschrieben werden. Da Stud.IP einige PHP-Notices produziert, werden diese explizit ausgeschaltet.
  • default_charset setzt den standardmäßig zu verwendenden Zeichensatz.
  • mbstring.internal_encoding setzt den standardmäßig zu verwendenden Zeichensatz für die mbstring-Erweiterung.

Speicherort der PHP-Konfiguration

Die PHP-Konfiguration für Stud.IP kann an drei verschiedenen Stellen gesetzt werden:

1. In der php.ini-Konfigurationsdatei. Dies empfiehlt sich, wenn Stud.IP die einzige PHP-Software auf dem Server ist oder andere PHP-Software mit den Einstellungen für Stud.IP kompatibel ist. Bei Ubuntu Linux findet sich die php.ini Konfigurationsdatei unter /etc/php/(PHP-Version)/apache2/php.ini, wobei (PHP-Version) durch die verwendete PHP-Version ersetzt werden muss.

2. In der Directory-Anweisung für das Stud.IP-Verzeichnis in der Apache-Konfigurationsdatei. Dies empfiehlt sich, wenn auf dem Server andere PHP-Software läuft, die nicht mit den PHP-Einstellungen für Stud.IP kompatibel sind. Im Unterschied zur Konfiguration über die php.ini muss jede Einstellung entweder mit „php_value“ oder „php_flag“ eingeleitet werden. Die Datei config/studip-httpd.conf innerhalb der Stud.IP-Installation kann als Beispiel dienen.

3. In der .htaccess-Datei im public-Ordner der Stud.IP-Installation. Im Falle, dass Stud.IP auf einem shared hosting Webserver installiert wird, auf dem man keinen Zugriff auf die Serverkonfiguration hat, ist diese Variante empfehlenswert. Der Webserver muss allerdings für das Stud.IP-Installationsverzeichnis die Einstellung AllowOverride All gesetzt haben. Die Einstellungen in der .htaccess-Datei werden wie in der 2. Methode mit „php_value“ und „php_flag“ eingeleitet. Die Datei config/.htaccess.dist im Stud.IP-Installationsverzeichnis dient hier als Beispiel für den Inhalt der .htaccess-Datei.

Test der PHP-Konfiguration

Um festzustellen, ob PHP korrekt konfiguriert wurde, legt man in im Webroot die Datei test.php mit folgendem Inhalt an:

    <?
      phpinfo();
    ?>

Anschließend ruft man diese Datei mit einem Webbrowser auf. Es werden alle PHP-Einstellungen, inklusive der aktivierten Module, angezeigt. Entspricht die angezeigte Konfiguration mit den Einstellungen überein, wird die Datei test.php wieder aus dem Webroot gelöscht. Nun kann mit der Einrichtung von Stud.IP selbst begonnen werden.

3.  Einrichtung von Stud.IP

3.1  Herunterladen, entpacken und installieren

Die offiziellen Versionen können auf sourceforge.net als ZIP-Archiv oder als Tarball (.tar.bz2) heruntergeladen werden: http://sourceforge.net/projects/studip.

Nach dem Herunterladen einer Stud.IP-Version auf den Server muss das Archiv extrahiert werden. Falls es als ZIP heruntergeladen wurde, wird folgender Befehl zum Extrahieren verwendet:

    unzip studip-x.x.zip

Im Falle, dass die Stud.IP-Version als Tarball heruntergeladen wurde, wird folgender Befehl zum Extrahieren verwendet:

    tar jxvf studip-x.x.tar.bz2

Nach der Extrahierung gibt es ein neues Verzeichnis namens studip-x.x, wobei x.x die Versionsnummer repräsentiert. Dieses Verzeichnis muss an einen Ort verschoben werden, der außerhalb des Webroot liegt, aber dem Webserver Zugriff ermöglicht. Dazu gibt es mehrere Möglichkeiten:

1. Setzen eines symbolischen Links: Damit dieser Weg funktioniert, muss der Apache symbolischen Links folgen dürfen. In der „Options“-Einstellung für den Webroot muss daher entweder FollowSymLinks oder SymLinksIfOwnerMatch stehen. Anschließend wird das public-Verzeichnis der Stud.IP-Installation in den Webroot velinkt. Ist dieser unter /var/www/html zu finden und das Stud.IP unter /var/lib/studip/, so wird der symbolische Link folgendermaßen erzeugt:

    cd /var/www/html
    ln -s /var/lib/studip/public ./studip

Anschließend ist Stud.IP unter https://<domain-des-servers>/studip erreichbar.

2. Anlegen eines Alias: Mit der „Alias“-Direktive kann ein beliebiger Teil des Dateisystems im Webroot verfügbar gemacht werden. Dazu reicht die folgende Zeile in der Apache-Konfiguration:

    Alias /studip /var/lib/studip/public

Damit wird der public-Ordner des Stud.IP, welches unter /var/lib/studip liegt, über https://<domain-des-servers>/studip verfügbar gemacht.

3.2  Einrichtung der Datenbank

Es muss ein Datenbankbenutzer angelegt werden, der alle Rechte auf der Stud.IP-Datenbank besitzt („GRANT ALL PRIVILEGES“). Auf der Kommandozeile kann mit diesen Befehlen ein Benutzer 'studip' angelegt und dessen Berechtigungen für die Stud.IP-Datenbank gesetzt werden:

    mysql -u root -p -e "GRANT USAGE ON *.* TO 'studip'@'localhost' IDENTIFIED BY '<password>'"
    mysql -u root -p -e "GRANT ALL ON studip.* TO 'studip'@'localhost'"

Ab Stud.IP 4.5

Ab Stud.IP 4.5 gibt es eine Installationsroutine, die einfach über den Webbrowser genutzt werden kann. Mit ihr wird die Datenbank angelegt, die Datenbankkonfiguration und grundlegende Einstellungen des Stud.IP-Systems abgefragt und gespeichert. Die Installationsroutine ist im Webbrowser über den Pfad im Webroot zum public-Ordner des Stud.IP erreichbar. Da keine Datenbank eingerichtet ist, leitet Stud.IP automatisch zur Installationsroutine um. Sollte dies nicht funktionieren, ruft man mit dem Browser das install.php-Skript im Pfad zum Stud.IP auf.

Bis Stud.IP 4.5

Im Folgenden wird angenommen, dass die Stud.IP-Datenbank den Namen „studip“ trägt. Zuerst wird die Datenbank angelegt:

    mysql -u root -p -e "CREATE DATABASE studip DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"

Die SQL-Dateien, die zum Anlegen der Datenbanktabellen genutzt werden, befinden sich im db-Ordner unterhalb des Stud.IP-Installationsverzeichnisses. Die Dateien studip.sql, studip_default_data.sql und studip_resources_default_data.sql sollten immer eingespielt werden. Dazu kann auf der Konsole der mysql-Befehl folgendermaßen genutzt werden:

    mysql -u root -p studip < db/studip.sql
    mysql -u root -p studip < db/studip_default_data.sql
    mysql -u root -p studip < db/studip_resources_default_data.sql

Zusätzlich kann ein root-Benutzerkonto angelegt werden, welches Vollzugriff auf alle Stud.IP-Funktionen bietet. Dazu wird die Datei studip_root_user.sql eingespielt:

    mysql -u root -p studip < db/studip_root_user.sql

Dieses Benutzerkonto hat den Nutzernamen root@studip mit dem Passwort testing. Aus Sicherheitsgründen sollte das Passwort sofort nach der ersten Anmeldung geändert werden.

Zum Test gibt es Demodaten, die über die SQL-Dateien studip_demo_data.sql und studip_resources_demo_data.sql eingespielt werden können. studip_demo_data.sql legt vier Benutzerkonten mit den Benutzernamen „test_autor“, „test_tutor“, „test_dozent“ und „test_admin“ an, die vier weitere Rechtestufen in Stud.IP wiederspiegeln. Das Passwort für diese Benutzerkonten lautet „testing“.

Migration alter Datenbanken

Falls Stud.IP auf eine neue Version aktualisiert wird, kann die bestehende Datenbank über die Konsole migriert werden. Vorher sollte unbedingt ein Datenbankbackup erstellt werden.

 Vor der eigentlichen Migration sollten insbesondere bei Migrationen von Stud.IP-Versionen kleiner als 4.0 auf eine neue Stud.IP-Version die beiden Skripte myisam_to_innodb.php und antelope_to_barracuda.php ausgeführt werden, um die Datenbanktabellen auf ein aktuelles Format zu überführen. Im Stud.IP-Installationsverzeichnis ruft man die Skripte folgendermaßen auf:

    php cli/myisam_to_innodb.php
    php cli/antelope_to_barracuda.php

Anschießend kann die richtige Migration gestartet werden:

    php cli/migrate.php

3.3  Konfiguration

Der wesentliche Teil der Konfiguration von Stud.IP wird in den beiden Konfigurationsdateien config_local.inc.php und config.inc.php gespeichert. Wenn der ab Stud.IP 4.5 verfügbare Installationsassistent verwendet wurde, sind diese Dateien bereits da. Ansonsten müssen sie manuell kopiert werden:

    cd /pfad/zum/studip/installationsverzeichnis
    cp config/config_local.inc.php.dist config/config_local.inc.php
    cp config/config.inc.php.dist config/config.inc.php

3.4  Grundlegende Konfiguration: config/config_local.inc.php

Die Datei „config_local.inc.php“ im Verzeichnis „config“ ist eine der beiden zentralen Konfigurationsdateien des Stud.IP-Systems. Hier werden vor allem grundlegende technische Einstellungen vorgenommen. Wichtige Einstellungen in dieser Datei sind:

  • $DB_STUDIP_HOST:Datenbankhostname
  • $DB_STUDIP_USER: Datenbanknutzer
  • $DB_STUDIP_PASSWORD: Datenbankpassword
  • $DB_STUDIP_DATABASE:Datenbankname
  • $MAIL_HOST_NAME: Anpassung des Mailhost, wenn Mails nicht über einen lokalen MTA, sondern einen externen Rechner verschickt werden sollen
  • $UPLOAD_PATH: Der Pfad zum Ordner für hochgeladene Dateien. Dieser muss nicht aus dem Webroot erreichbar sein, aber der Webserver benötigt Schreibrechte für den Ordner.
  • $ARCHIV_PATH: Der Pfad zum Archiv-Verzeichnis. Dieses muss nicht aus dem Webroot erreichbar sein, aber der Webserver benötigt Schreibrechte darauf.
  • $TMP_PATH: Der Pfad zum Verzeichnis für temporäre Dateien.
  • $ABSOLUTE_URI_STUDIP: Die Basis-URL zum Stud.IP-System. Diese muss in dem Fall angegeben werden, wenn der Server aus irgendwelchen Gründen die korrekte URL nicht zur Laufzeit bestimmen kann, z.B. weil er nur über einem Proxy mit dem Internet verbunden ist.

3.5  Erweiterte Konfiguration: config/config.inc.php

Weitergehende Einstellungen können in der Datei „config.inc.php“ vorgenommen werden. Dort sind vor allem inhaltliche Einstellungen wie diverse Bezeichungen und andere Voreinstellungen abgelegt.


(Der Text unterhalb dieser Linie muss noch überarbeitet werden!)

3.6  Verzeichnisse und Pfade

In den folgenden Verzeichnissen, die in der config/config_local.inc.php angegeben werden, muss der Webserver-User (zumeist ist das wwwrun, zur Sicherheit am besten in der Datei httpd.conf nachsehen) Schreibrechte haben:

$USER_DOC_PATH
Ablage für persönliche Dokumente
(Standardwert: <Installationspfad>/data/user_doc/)
$PLUGIN_ASSETS_PATH
Hier werden kompilierte less-daten (also css-Dateien) von Plugins hin geschrieben.
(Standardwert: <Installationspfad>/data/assets_cache)
$EXTERN_CONFIG_FILE_PATH
wenn die SRI-Schnittstelle benutzt wird
(Standardwert: <Installationspfad>/data/extern_config/)
$MEDIA_CACHE_PATH
wenn der Media-Proxy zur Einbindung externer Medien (Bilder, Audio/Video-Dateien) benutzt wird
(Standardwert: <Installationspfad>/data/media_cache)
$DYNAMIC_CONTENT_PATH
vom System erzeugten Bilder (Nutzerbilder, Smileys, usw.)
(Standardwert: <Installationspfad>/public/pictures/)

4.  Konfiguration von Stud.IP

Für die Stud.IP-Konfiguration müssen die Dateien config/config_local.inc.php und config/config.inc.php angepaßt werden. Außerdem müssen einige Verzeichnisse für den Apache Webserver schreibbar gemacht werden. Die Konfiguration der optionalen Module und Komponenten erfolgt ebenfalls in der Datei config/config_local.inc.php:

  • Export-Modul
  • E-Learning Schnittstelle (Ilias 4 + 5)
  • Literaturverwaltung
  • Plugin Schnittstelle
  • Authentifizierungsplugins (LDAP)

Außerdem:

  • Anpassung der Pfade zu allen benötigten Tools für die Bildbearbeitung
  • Kann die Stud.IP Installation über mehrere Adressen (etwa der reale Servername und ein virtueller Webserver) erreicht werden, sollte sie im Abschnitt "domain and path translation" alle verfügbare Servernamen bzw. Pfadangaben ablegen. Stud.IP "übersetzt" dann evtl. im System erstellte interne Links in die jeweils passende Form (ansonsten gibt es Probleme mit der Cookie-Verwaltung durch den Browser).
  • Falls Sie ein Update von einer 3.x-Version auf eine 4.x Version von Stud.IP durchführen, werden Sie sich wundern, dass die config_local.inc.php in der 4.x nur noch ganz wenige Einträge enthält und in der 3.x sehr viele Einträge. Ganz wichtig dazu: behalten Sie Ihre alte config_local.inc.php an Ort und Stelle, führen Sie dann die Datenbankmigrationen aus. Erst danach sollten Sie Ihre alte config_local.inc.php aufräumen und alles raus schmeißen, was nicht in der config_defaults.inc.php genauso auch drin steht oder in der config_defaults.inc.php nicht mehr erwähnt wird (diese Einstellungen werden in 4.x in der Datenbank gepflegt) . Am Ende sollten nur die Einträge in der config_local.inc.php stehen, die von den Einträgen in der config_defaults.inc.php abweichen. Aber entschlacken Sie Ihre config_local.inc.php erst nach der Migration, ansonsten fehlt Ihrem Stud.IP etwas.

4.1  config.inc.php

Zum Betrieb von Stud.IP muss im conf-Verzeichnis der Stud.IP Installation die Datei config.inc.php angelegt werden. sie finden dort bereits eine Distributionsversion mit dem Namen config.inc.php.dist. Benennen sie die Datei in config.inc.php um.

In der Datei config.inc.php sollten sie zunächst nur die allgemeinen Daten wie $UNI_URL, $UNI_CONTACT und $UNI_INFO setzen. Alle weiteren Einstellungen sollten als Standardwerte gut funktionieren - verändern sie diese Optionen bitte erst, wenn sie mit dem System bereits vertraut sind.

ACHTUNG: Wenn sie das System im Regelbetrieb einsetzen, sollten nachträglich außer den obengenannten Optionen möglichst keine Einstellungen mehr verändert werden, da sonst Inkonsistenzen in der Datenbank auftreten können.

4.2  Optionale Module und Komponenten

Unter Administration -> Globale Einstellungen -> Konfiguration können sie auch die Aktivierung der Inhaltselemente (Module) vornehmen. Für jedes Modul gibt es einen Schalter $<MODULNAME>_ENABLE, über den sie das Modul ein- und ausschalten können. Doese befinden sich in der Gruppe "modules".

Einige Module verlangen weitere Angaben in der config_local.inc.php, wie Pfadangaben oder andere Einstellungsoption, die sie im Normalfall einfach so lassen, wie im Auslieferungszustand eingestellt.

Wichtig sind nur folgende Optionen:

  • Falls sie das Modul "Export" benutzen wollen, so müssen die Werte $FOP_SH_CALL und evtl. $JAVA_ENV_CALL entsprechend gesetzt werden.

Neben den oben beschrieben Optionen gibt es noch weitere Parameter, die in der config_local.inc.php optional festgelegt werden können, wie z.B. $LATEXRENDER_ENABLE

  • $ALLOW_GROUPING_SEMINARS, $ALLOW_SELFASSIGN_STUDYCOURSE, $SHOW_TERMS_ON_FIRST_LOGIN sind einige erweiterte Einstellungen, die sie unter Umständen umstellen können, etwa wenn sie mit einer externen Authentifizierung (LDAP o.ä.) arbeiten
  • Einstellungen für die Internationalisierung von Stud.IP (braucht im Normalfall nicht angepasst zu werden)
  • Einstellungen für Authentifizierungs-Plugins (brauchen nur angepasst werden, wenn sie eine externe Authentifizierung einsetzen).
  • Weitere Optionen zur Authentifizierung können in Verbindung mit der Standard-Authentifizierung (also dem Auslieferungszustand) angepasst werden:
    • $ALLOW_CHANGE_USERNAME
    • $ALLOW_CHANGE_EMAIL
    • $ENABLE_SELF_REGISTRATION

Weitere Parameter können seit der Version 1.2 direkt im Konfigurationseditor im Bereich "globale Einstellungen", "Konfiguration" durch root-Benutzer im Webfrontend eingegeben bzw. umgestellt werden.

4.3  Konfiguration des E-Mail-Versands

Damit das Registrierungsmodul von Stud.IP funktioniert, muss der E-Mailversand konfiguriert sein, d.h. der Webserver muss in der Lage sein E-Mails über den in $MAIL_HOST_NAME angegebenen E-Mailserver zu verschicken. In den verschickten E-Mails ist Reply-To auf abuse@<SERVER_NAME> gesetzt, E-Mails an diese Adresse sollten an einen der Administratoren weitergeleitet werden.

ACHTUNG: Wenn der E-Mailversand nicht ordnungsgemäß konfiguriert wurde, funktioniert weder die Selbstregistrierung von Nutzern noch das Eintragen von neuen Nutzern, da die Registrierungs-E-Mail bzw. das Passwort auf diese Weise an die Nutzer zugestellt werden.

Die beiden Parameter $MESSAGING_FORWARD_AS_EMAIL und $MESSAGING_FORWARD_DEFAULT erlauben es, systeminterne Nachrichten die gespeicherte E-Mail-Adresse eines Nutzers weiterzuleiten und dafür einen Standardwert festzulegen.

E-Mailbenachrichtigungen einrichten

Der Versand von Mailbenachrichtigungen über neue Inhalte kann über den Cronjob "Versendet tägliche Mailbenachrichtigungen" eingeschaltet werden. Hierzu wählt man als root-Nutzer die Cronjob-Einstellungen unter Admin -> System -> Cronjobs aus und setzt das Aktiv-Häkchen bei diesem Cronjob.

4.4  Stud.IP-interne Cronjobs

Um die Stud.IP-internen Cronjobs nutzen zu können, müssen folgende Schritte durchgeführt werden.

  • Die Datei cli/cronjob-worker.php muss als globaler Cronjob in Ihrem System eingerichtet. Dieser Cronjob sollte minütlich laufen, die Steuerung der Ausführung der einzelnen Stud.IP-Cronjobs wird dann intern verwaltet. Wenn das PHP-Kommando in /usr/bin/php zu finden ist (which php auf der Kommandozeile gibt darüber Auskunft), und die Datei ausführbar gemacht ist, kann man das Skript direkt in einen cronjob einbauen. Ein entsprechender Eintrag in crontab würde beispielsweise folgendermassen aussehen: * * * * * root php /usr/local/studip/cli/cronjob-worker.php >> /var/log/studip-cronjobs 2>&1
  • In der globalen Konfiguration unter Admin / Globale Einstellungen / Konfiguration muss der Wert für CRONJOBS_ENABLE auf true gestellt werden, um die Cronjobs tatsächlich zu aktivieren.

Die Konfiguration für die einzelnen Cronjobs finden sich unter Admin / Globale Einstellungen / Cronjobs, sofern der oben genannte Wert CRONJOBS_ENABLE gesetzt ist.

4.5  Konfiguration der Stud.IP Module und optionalen Features

Neben dem Basissystem existieren einige Stud.IP Module, die besondere Voraussetzungen zum Betrieb benötigen oder speziell konfiguriert werden müssen. In Auslieferungszustand werden diese Module mit installiert, daher sollten sie im entsprechenden Abschnitt zur Datei config_local.inc.php einen Blick darauf werden, welche Module existieren und welche überhaupt benötigt werden.

Export-Modul

Für den Export von Daten als HTML, PDF etc. wird die XSLT-Unterstützung für PHP benötigt. Falls die in der verwendeten PHP-Installation nicht vorhanden ist, sind die Sablotron und expat Bibliotheken zu installieren und PHP entsprechend neu zu konfigurieren (configure --enable-xslt --with-xslt-sablot ...). Für Debian erledigt beides das Paket php4-xslt.

Für den Export als PDF ist zusätzlich FOP (Formatting Objects Processor) aus dem Apache XML Projekt notwendig +. FOP ist in Java realisiert, es wird also auch ein lauffähiges JRE (Java Runtime Environment) + benötigt.

$FOP_SH_CALL muss den kompletten Pfad zum FOP Startskript enthalten.

In $JAVA_ENV_CALL muss evtl. der Pfad zu einem Skript zum setzen der Java Umgebungsvariablen eingetragen werden (/etc/profile.d/alljava.sh bei einer SuSE Distribution).

Grafische Evaluationsauswertung

Die Evaluationsauswertung kann ebenfalls als PDF exportiert werden, und benötigt dazu den oben erwähnten FOP.

Elearning Schnittstelle (Ilias 4 + 5)

Eine ausführlichere Anleitung für dieses Modul finden sie in der Datei doc/de/verbindung_studip_ilias3.rtf oder doc/de/verbindung_studip_ilias3.pdf in diesem Verzeichnis. Die wichtigsten Schritte in einer Kurzfassung.

  • Installieren sie Ilias in einer Version ab 3.7.1 nach Anleitung. Die Installation kann auch auf einem anderen Server liegen.
  • Aktivieren sie in Ilias unter Administration/Einstellungen den Punkt "Externe Benutzerverwaltung (SOAP)".
  • Legen sie in Ilias einen Administrationsaccount an, der zur Kommunikation benutzt werden soll. Wichtig: Melden sie sich einmal mit diesem Account in Ilias an!
  • Legen sie im "Magazin" eine Kategorie an, unter der die Daten von Stud.IP Nutzern gespeichert werden sollen.
  • In der Konfiguration von Stud.IP (config_local.inc.php) setzen sie $SOAP_ENABLE auf TRUE.
  • In der Variable $ELEARNING_INTERFACE_MODULES['ilias3'] tragen sie die Daten ihrer Ilias Installation ein (name, ABSOLUTE_PATH_ELEARNINGMODULES, ABSOLUTE_PATH_SOAP, soap_data (username und password für den gerade angelegten Administratoraccount, client_id (Name des Ilias Mandanten) der Ilias Installation)).
  • Rufen sie in Stud.IP als root in den Administrationsbereich unter Tools/Lernmodul-Schnittstelle und wählen sie ihre Ilias Installation aus. Geben sie weiter unten auf der Seite unter "Kategorie" den Namen der Kategorie ein, die sie im Ilias "Magazin" erstellt haben, und klicken sie auf "aktivieren".

Literaturverwaltung

bis Stud.IP 4.5

Zunächst ist sicherzustellen, dass PHP mit der Yaz-Erweiterung kompiliert wurde. Eine kurze Erklärung finden sie unter [1]. Diese dient dazu, externe Literaturkataloge über die Z39.50-Schnittstelle abzufragen. Sie können neben den mitgelieferten Plugins weitere Plugins im Verzeichnis lib/classes/lit_search_plugins für ihre Bibliothek(en) anlegen. Bitte nutzen sie die mitgelieferten Plugins für den GVK (Gemeinsamer Verbundkatalog des GBV) und die SUB Göttingen (Niedersächsische Staats- und Universitätsbibliothek) als Vorlage für weitere Plugins und erkundigen sie sich bei Ihrer Bibliothek nach Einzelheiten für die Anbindung. Falls ihre Bibliothek Mitglied im GBV ist, können sie einfach eine neue Klasse von StudipLitSearchPluginGvk.class.php ableiten, und müssen nur die Felder z_host und z_profile anpassen. Der Name ihres Plugins muss mit StudipLitSearchPlugin beginnen.

Dann können sie das Plugin in der Datei config/config_local.inc.php unterhalb von "literature search plugins" aktivieren, indem sie es in das Array $_lit_search_plugins eintragen. Hier können sie zusätzlich einen Link eintragen, der in den Web Opac ihrer Bibliothek verweist.

ab Stud.IP 4.6

Das Kernsystem beinhaltet bereits Klassen zur Abfrage der BASE- und K10Plus-Kataloge, sowie Bibliothekskataloge, die via SRU abgefragt werden können. Zur Konfiguration eines Bibliothekskataloges wird dieser in config/config_local.inc.php in der Variable LIBRARY_CATALOGS eingetragen. Eine Beschreibung dieser Variablen ist in der Datei config/config_defaults.inc.php hinterlegt. Kataloge, die keine der obigen Methoden zur Abfrage unterstützen, können über Plugins abgefragt werden, die eigene Klassen zur Abfrage von Katalogen bereitstellen.

Downloadlinks

In Stud.IP wird an vielen Stellen zum Übertragen von Dateien das PHP-Skript sendfile.php verwendet. Seit der Stud.IP-Version 1.3 besteht die Möglichkeit das Aussehen der Downloadlinks über den Parameter SENDFILE_LINK_MODE in der Systemkofiguration zu ändern. Es sind die Werte old, normal und rewrite möglich.

old
http://www.server.de/studip/sendfile.php?/force_download=1&type=0&file_id=43dce79ba3ab55b906c59317b5e6cc03&file_name=test.txt
normal
http://www.server.de/studip/sendfile.php?force_download=1&type=0&file_id=43dce79ba3ab55b906c59317b5e6cc03&file_name=test.txt

Der Unterschied zwischen old und normal besteht lediglich in einem zusätzlichen "/" hinter dem Fragezeichen das Probleme bei der Anzeige von PDF-Datein bei einigen Browsern umgehen soll.

rewrite
http://www.server.de/studip/download/force_download/0/43dce79ba3ab55b906c59317b5e6cc03/test.txt

Der rewrite-Modus liefert eine URL die mit jedem Browser problemlos nutzbar ist. Benötigt wird dazu das Apache-Rewrite-Modul. Es wird mit einem "RewriteEngine on" in der Datei studip-httpd.conf eingeschaltet. Die weitere Konfiguration in der studip-httpd.conf unterscheidet sich geringfügig je nachdem ob das Stud.IP-Verzeichnis direkt im <Document-Root> des Apache liegt oder ob es per Alias-Anweisung eingebunden wird.

Innerhalb des <Document-Root>:

<Directory "/srv/www/htdocs/studip">

# für rewrite wird die Option FollowSymLinks oder SymLinksIfOwnerMatch benötigt ...

#Options SymLinksIfOwnerMatch
Options FollowSymLinks

RewriteEngine on
RewriteRule ^download/(normal|force_download|zip)/([0-46])/([^/]+)/(.+)$ sendfile.php?$1=1&type=$2&file_id=$3&file_name=$4 [L]
RewriteRule ^download/(normal|force_download|zip)/5/([^/]+)/([^/]+)/(.+)$ sendfile.php?$1=1&type=5&range_id=$2&list_id=$3&file_name=$4 [L]

...
</Directory>

per Alias:

Alias /abcd /srv/studip/public

<Directory "/srv/studip/public">

# für rewrite wird die Option FollowSymLinks oder SymLinksIfOwnerMatch benötigt ...

#Options SymLinksIfOwnerMatch
Options FollowSymLinks

RewriteEngine on
RewriteBase /srv/studip/public
RewriteRule ^download/(normal|force_download|zip)/([0-46])/([0-9a-f]+)/(.+)$ /abcd/sendfile.php?$1=1&type=$2&file_id=$3&file_name=$4 [L]
RewriteRule ^download/(normal|force_download|zip)/5/([^/]+)/([^/]+)/(.+)$ /abcd/sendfile.php?$1=1&type=5&range_id=$2&list_id=$3&file_name=$4 [L]

...
</Directory>

Die rewrite-Regeln befinden sich bereits in der mitgelieferten studip-httpd.conf, es müssen nur die Kommentarzeichen vor der gewünschten Variante entfernt werden.

Plugin Schnittstelle

Die PluginEngine lässt sich über verschiedene Konfigurationsvariablen in der Datei config_local.inc.php anpassen. Zur Aktivierung der PluginEngine muss die Variable $PLUGINS_ENABLE auf TRUE gesetzt werden. Danach erscheint auf der Startseite des root-Administrators der Menüeintrag Verwaltung von Plugins. In der Standardkonfiguration können hier nur Pluginpakete aus einem definierten Verzeichnis auf dem Webserver in Stud.IP importiert werden. Dieses Verzeichnis lässt sich über die Variable $NEW_PLUGINS_PATH ändern. Hier muss ein absoluter Pfad angegeben werden. Dieses Verzeichnis muss vom Webserver-Benutzer lesbar sein.

Über die Variable $PLUGINS_UPLOAD_ENABLE lässt sich ein Upload-Formular freischalten, so dass der root-Administrator Plugin-Pakete direkt per Upload in das System laden kann. Sollte der root-Administratoren-Account jedoch gehackt werden, so stellt dies eine nicht zu unterschätzende Sicherheitslücke dar, denn einem Hacker werden hier weitreichende Möglichkeiten eröffnet, indem nahezu beliebiger Sourcecode in das System geladen werden kann.

Um auch bei aktiviertem Upload-Formular dennoch eine gewisse Sicherheit zu erreichen, ist der Einsatz des PHP-Safemodes zu empfehlen. Ebenso sollte der WebServer niemals mit dem Benutzer root gestartet werden. Der Einsatz einer chroot-Umgebung für den Webserver ist ratsam. Plugins werden in der Standardkonfiguration in ein Verzeichnis plugins_packages abgelegt, welches sich unterhalb des public-Verzeichnisses befindet. Dieses Verzeichnis muss für den Webserver-Nutzer schreibbar sein. Dem Verzeichnis sollten die Rechte 755 eingeräumt werden.

LDAP Authentifizierung

Zur Authentifizierung gegen einen LDAP Server stehen im Release drei Plugins zur Verfügung (in der config/config_local.inc als Ldap und LdapReadAndBind bezeichnet. Die entsprechenden Klassen befinden sich im Verzeichnis lib/classes/auth_plugins und heissen dort StudipAuthLdap.class.php und StudipAuthLdapReadAndBind.class.php. Die Konfiguration dieser Plugins sollte in der config_local.inc vorgenommen werden. Hierzu muss der Name des Plugins in die Konfigurationsvariable $STUDIP_AUTH_PLUGIN[] eingetragen werden, normalerweise reicht das Entfernen der Kommentarzeichen. Es kann mehr als ein Plugin aktiviert sein, die Reihenfolge, in der die Plugins bei einem Authentifizierungsvorgang abgearbeitet werden, kann hier auch vorgenommen werden. Unterhalb von $STUDIP_AUTH_PLUGIN[] müssen dann die Optionen für das ausgewählte Plugin konfiguriert werden ($STUDIP_AUTH_CONFIG_xxx). Für Ldap sind folgende Einstellungen nötig:

  • host: Hostname des LDAP Servers, oder eine URL der Form ldap[s]://[hostname]:[port]
  • protocol_version: LDAPv2 oder LDAPv3, für OpenLDAP 2.x.x besser 3
  • base_dn: base DN, die Suchbasis unterhalb derer die Einträge zu finden sein müssen
  • username_attribute: LDAP-Attribut, welches den Nutzernamen enthält. Entspricht dem LDAP-Suchfilter username_attribute=%u.
  • ldap_filter: LDAP-Suchfilter, der verwendet wird, um den Nutzer im LDAP zu finden. Die Einstellung für ldap_filter hat Vorrang vor dem username_attribute, d.h. username_attribute wird nicht verwendet, wenn es einen ldap_filter gibt. Im Filter-Ausdruck werden bestimmte Platzhalter ersetzt: %u durch den Nutzernamen, %U durch den lokalen Namensbestandteil (vor dem @) und %d durch den Domänenteil (nach dem @), %% durch ein einfaches %.
  • anonymous_bind: lässt der LDAP Server ein anonymes anmelden zu, so kann vor der eigentlichen Authentifizierung das Verzeichnis nach dem eingegebenen Nutzernamen durchsucht werden, um den korrekten Nutzer DN zu finden. Ist das anonyme Binden ausgeschaltet, muss die Suchbasis dem Zweig entsprechen, indem die Nutzerdaten zu finden sind, da der Nutzer DN in diesem Fall direkt aus der Suchbasis gebildet wird. Außerdem ist dann keine Möglichkeit gegeben, eine Meldung über ein falsches Passwort zu geben.
  • error_head: Präfix der Fehlermeldung bei fehlgeschlagener Anmeldung mit diesem Plugin
  • user_data_mapping: in diesem Array werden die Zuordnungen von LDAP Attributen zu Stud.IP Datenbankeinträgen vorgenommen. Diese Zuordnungen werden bei jeder erfolgreichen Anmeldung in der Stud.IP Datenbank aktualisiert. Der Schlüssel eines Eintrages ist das Stud.IP Datenbankfeld in der Form <tabelle>.<feld>. Zu jedem Schlüssel sind zwei weitere Einträge nötig. In "callback" wird der Name der Methode im Plugin angegeben, die die Zuordnung vornehmen soll, "map_args" enthält die Argumente, die an die Methode übergeben werden. Der Eintrag dummy als callback nimmt keine Zuordnung vor, verhindert aber, dass die entsprechenden Felder im Stud.IP vom Nutzer verändert werden können, man sollte die default Einträge für username und password besser nicht verändern. Im LDAP PLugin existieren zwei simple mapping Methoden: doLdapMap und doLdapMapVorname. Erstere erwartet als Argument den Namen des LDAP Attributes (z.B. sn für den Nachnamen) und gibt einfach den Inhalt zurück. Letztere nimmt zwei Argumente entgegen und versucht aus dem cn den Vornamen zu extrahieren (nur ein Beispiel). Benötigt man komplexere Mappings, so empfiehlt es sich ein eigenenes Plugin von AuthLdap abzuleiten und die entsprechenden Methoden dort zu realisieren.

LdapReadAndBind benutzt einen konfigurierten Account, um den user dn des Nutzers zu finden. Zur Authentifizierung des Nutzers wird anschließend ein weiterer Anmeldevorgang mit dem ermittelten user dn und dem eingegebenen Passwort des Nutzers versucht.

Einstellungen:

  • reader_dn: der Nutzer DN des Accounts, der zur Suche benutzt wird
  • reader_password: das Passwort des Accounts, der zur Suche benutzt wird

LTI Authentifizierung

Stud.IP kann als LTI Tool Provider verwendet werden und dabei die Authentifizierung an einen LTI Consumer delegieren und von dort Nutzerattribute übernehmen. Zur Authentifizierung gegen LTI Consumer gibt es das Plugin LTI, die entsprechende Klasse dazu befinden sich im Verzeichnis lib/classes/auth_plugins und heißt dort StudipAuthLTI.class.php. Die Konfiguration sollte in der config_local.inc.php vorgenommen werden. Hierzu muss der Name des Plugins in die Konfigurationsvariable $STUDIP_AUTH_PLUGIN[] eingetragen werden, normalerweise reicht das Entfernen der Kommentarzeichen. Unterhalb von $STUDIP_AUTH_PLUGIN[] müssen dann die Optionen für das ausgewählte Plugin konfiguriert werden (in diesem Fall $STUDIP_AUTH_CONFIG_LTI).

Für die sichere Kommunikation per LTI ist jeweils ein "consumer_key" und ein "consumer_secret" notwendig, die beiden beteiligten Systemen bekannt sein müssen. Diese Werte werden in der Liste "consumer_keys" hinterlegt (und auch entsprechend im LTI Consumer). Die im Consumer einzutragende URL ist dann: "<URL zum Stud.IP>/dispatch.php/lti". Es kann auch direkt ein Kurs angesprungen werden, wenn man einen LTI Custom Parameter der Form "course=<Kurs ID>" mit übergibt.

Externe Benutzer erhalten im Stud.IP Kennungen der Form "username@domain", wobei "username" die Kennung aus dem LTI Consumer und "domain" identisch mit dem "consumer_key" ist. Es kann aber auch eine abweichende "domain" angegeben werden (siehe Beispiel). Es ergibt sich also so etwas wie "mmuster@uni-osnabrueck.de". Die Nutzerdomäne im System wird ebenfalls analog gesetzt.

Über die Einstellung "allow_domain_override" kann außerdem noch erlaubt werden, die Domain mit aus dem Ausgangssystem zu übernehmen - praktisch bedeutet das, dass alle Nutzerkennungen, die bereits im Ausgangssystem ein "@" enthalten, exakt genauso in das Zielsystem übernommen werden. Das ist aber nur beim Koppeln mehrerer Stud.IP-Installationen per LTI nützlich und sollte normalerweise nicht aktiviert werden.

Die Einstellung für das "user_data_mapping" funktioniert wie bei den anderen Auth-Plugins auch: Man kann einstellen, welche Werte beim Login übernommen werden sollen (siehe z.B. oben die Beschreibung bei der LDAP Authentifizierung). Es können alle vom LTI Consumer übermittelten Parameter verwendet werden, auch Custom Parameter - diese sind mit einem custom_ vor dem Namen anzugeben, also z.B. "custom_person_orgunit".

Konfigurationsbeispiel:

$STUDIP_AUTH_CONFIG_LTI = [
    'consumer_keys' => [
        // 'domain' is optional, default is value of consumer_key
        'studip.de' => ['consumer_secret' => 'secret', 'domain' => 'studip.de']
    ],
    'user_data_mapping' => [
        // see http://www.imsglobal.org/specs/ltiv1p1/implementation-guide for lauch data item names
        'auth_user_md5.username' => ['callback' => 'dummy', 'map_args' => ''],
        'auth_user_md5.password' => ['callback' => 'dummy', 'map_args' => ''],
        'auth_user_md5.Vorname'  => ['callback' => 'getUserData', 'map_args' => 'lis_person_name_given'],
        'auth_user_md5.Nachname' => ['callback' => 'getUserData', 'map_args' => 'lis_person_name_family'],
        'auth_user_md5.Email'    => ['callback' => 'getUserData', 'map_args' => 'lis_person_contact_email_primary']
    ]
];

Weitere Module

Weitere Module wie der Kalender, die Ressourcenverwaltung, das Wiki- oder die Vote- und Evaluations-Module benötigen keine spezielle Konfiguration oder Zusatzsoftware.

Letzte Änderung am 07.08.2020 16:53 Uhr von ssuchi.