Blog

ILIAS Installation 2025

Vor einiger Zeit haben wir uns bereits mit einer Installation von Ilias beschäftigt. Wer es nicht kennt, Ilias ist eine E-Learning Plattform, die von vielen Hochschulen und auch kleineren Firmen genutzt wird. Dort können unter anderem Lernmodule, Wikis und auch Prüfungen und Tests erstellt werden. Ilias ist dabei eine Open-Source Software. Das heißt, die Nutzung ist kostenlos. In unserem heutigen Artikel wollen wir uns daher anschauen, wie auch Sie die aktuelle Version von Ilias installieren können.

Voraussetzungen

Doch welche Anforderungen muss Ihr System erfüllen? Das hängt davon ab, wie die Plattform genutzt werden soll. Es ist nämlich wichtig im Hinterkopf zu behalten, dass Ilias keine Website, sondern eine Anwendung ist. Das bedeutet, dass die Leistung durch die Hardware limitiert wird. Die absoluten Mindestanforderungen sind dabei 4GB an RAM und 25GB Festplattenplatz. Darauf müssen die benötigten Ressourcen für den Anwendungszweck addiert werden.

In unserem Beispiel haben wir eine VM die auf Ubuntu Server 22.04 läuft. Der grobe Aufbau wird aus einem Apache Webserver bestehen. Im Hintergrund wird eine MySQL Datenbank laufen, in der alle Daten gespeichert werden. Die Verbindung zur Website wird über PHP geregelt. Bevor wir jedoch zur Installation übergehen, lohnt es sich immer einmal nach neuen Updates zu suchen. Das geht über den Befehl:

sudo apt update

und

sudo apt upgrade

Installieren des Webservers

Anfangen wollen wir mit dem Webserver. Dafür verwenden wir Apache2. Das Paket können wir ganz einfach mit

sudo apt install apache2

herunterladen und installieren. Zur Installation reicht uns hierbei die Standardkonfiguration aus. Die Datei findet man im Verzeichnis /var/apache2/sites_enabled/000-default.conf und sieht ungefähr so aus:

<VirtualHost *:80>
   ServerAdmin [email protected]

   DocumentRoot /var/www/html/
   <Directory /var/www/html/>
       Options +FollowSymLinks -Indexes
       AllowOverride All
       Require all granted
   </Directory>

   # Possible values include: debug, info, notice, warn, error, crit,
   # alert, emerg.
   LogLevel warn

   ErrorLog /var/log/apache2/error.log
   CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Zusätzlich müssen wir Zugriffsrechte zu dem data Verzeichnis freigeben. Das geht über:

sudo a2enmod rewrite

Wenn man diesen Befehl ausgeführt hat, wird das System darauf hinweisen, dass die Änderungen erst mit einem Neustart des Webserver übernommen werden. Diesen starten wir mit diesem Befehl neu.

sudo systemctl restart apache2

Wenn wir prüfen wollen, ob der Server wieder läuft, können wir das mit status machen. Der Befehl sieht dann so aus:

sudo systemctl status apache2

Installieren von PHP

Als nächstes wollen wir PHP mit einigen Erweiterungen installieren.

sudo apt install php php-imagick php-gd php-mysql php-mbstring php-curl php-dom php-zip php-intl php-xml

Neben PHP ist hier auch noch mit dabei:

  • php-imagick: eine Erweiterung zum Erstellen und Bearbeiten von Bildern und Grafiken mithilfe der ImageMagick Library
  • php-gd: ebenfalls eine Erweiterung zum Verändern von Bildern und Grafiken
  • php-mysql: das ist die Anbindung von PHP zu MySQL
  • php-mbstring: eine Erweiterung zur Kodierung von Multibyte Strings
  • php-curl: hiermit können HTTP-Anfragen mit cURL gestellt werden
  • php-dom: zur besseren Modellierung und Bearbeitung von XML- und HTML-Dokumenten
  • php-zip: Unterstützung von zip Archiven
  • php-intl: eine Erweiterung mit der Anwendungen an Sprache und Region angepasst werden kann
  • php-cml: Damit XML in PHP verarbeitet werden kann

In dem PHP Paket sollte bereits eine Unterstützung zu Apache2 mit enthalten sein. Diese Verbindung können wir testen, indem wir eine Datei in /var/www/html/phpinfo.php anlegen und das hier reinschreiben

<?php
phpinfio();

Nun müssen wir diese Seite nur noch im Browser aufrufen. Dafür brauchen wir einen Weg den Server zu erreichen. Wir haben das mithilfe der public IP gemacht http://<publicIP>/phpinfo.php. Sollte dabei ein Fehler auftreten, hat die Verbindung nicht geklappt. Ist das der Fall, können Sie prüfen ob:

  • der Webserver immer noch läuft systemctl status apache2
  • in der Firewall der Port 80 für HTTP Zugriff freigegeben ist (443 für HTTPS)
  • in der Apache Config Datei auch der richtige Pfad angegeben ist
  • der Benutzer www-data Zugriff auf die erstellte phpinfo.php Datei hat
    sudo chown www-data:www-data /var/www/html/phpinfo.php
    sudo chmod 644 /var/www/html/phpinfo.php
  • die Installation von PHP richtig ausgeführt wurde (php -v zum prüfen der Version)

Sollten stattdessen Details zur PHP Konfiguration erscheinen, funktioniert alles. Auf dieser Seite können wir jetzt nachschauen, wo die Datei php.ini liegt. Das steht bei dem Eintrag “Loaded configuration file”. Für uns war der Pfad /etc/php8.1/apache2/php.ini. In dieser Datei sollen einige Einstellungen übernommen werden.

  • max_execution_time = 600
    memory_limit = 512M
    (bei beiden Parameter können auch größere Werte gewählt werden)
  • error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
    display_errors = Off
  • post_max_size = 256M
    upload_max_size = 256M
    (hier können auch größere Werte gewählt werden)
  • session.gc_probability = 1 (hier ein Wert ungleich null, sonst werden die Daten alter Sessions nicht gelöscht)
    session.gc_divisor = 100
    session.gc_maxlifetime = 14400
    session.hash_function = 0
    session.cookie_httponly = On
    session.save_handler = files
  • sollte HTTPS zur Installation genutzt werden braucht man noch zusätzlich
    session.cookie_secure = On
  • allow_url_fopen = 1
  • max_input_vars = 10000

Am besten in der Datei mit einer Suchfunktion die Parameter ändern. Gleichzeitig kann die phpinfo.php Datei gelöscht werden, da wir diese nicht mehr benötigen. Sobald Sie alle Änderungen gespeichert haben, muss der Webserver wieder neu gestartet werden. Das geht wie schon vorher über

sudo systemctl restart apache2

An dieser Stelle wird darauf hingewiesen, dass PHP auch libargon2 als Verschlüsselung nutzen kann. Das können wir überprüfen indem wir entweder

php -i | grep -i argon2

oder

php -r 'print_r(password_algos());'

ausführen. Sollte in beiden Fälle Argon2 nicht im Output mit dabei sein, fehlt diese Library noch. Zum hinzufügen müssen wir dafür die Packages libsodium-dev und libargon2-dev installieren. Den Webserver im Anschluss noch einmal Neustarten und erneut prüfen. Alternativ kann auch versucht werden ein string testweise zu hashen. Das geht mit:

php -r 'var_dump(password_hash('test', PASSWORD_ARGON2ID));'

Als Ergebnis sollte ein string ausgegeben werden, der ungefähr so aussieht.

string(97) "$argon2id$v=19$m=65536,t=4,p=1$RnZwUUNDdzJ5VVB0ZHJkLw$AocG8ihe+dBOz6DxCh7cuS4ivHsEaFOhIR/jJ5ZWazo"

Installieren und Konfigurieren der Datenbank

Wie schon vorhin einmal erwähnt, wollen wir MySQL nutzen. Das Paket können wir über diesen Befehl installieren.

sudo apt install mysql-server

Wenn die Installation durchgelaufen ist, können wir über

sudo systemctl status mysql

nachschauen, ob der Server auch schon läuft. Sollte das nicht der Fall sein können wir das mit diesem Befehl machen.

sudo systemctl start mysql

Jetzt läuft unser MySQL Server. Aber die Konfiguration ist noch nicht fertig. Denn bisher haben wir noch kein Passwort für den root Nutzer festgelegt. Das wollen wir im nächsten Schritt ändern.

sudo mysql

//in mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';

Über den Befehl verbinden wir uns mit MySQL und ändern im Anschluss das Passwort des root Benutzers. Dieses Passwort kann man als Admin Passwort ansehen und sollte somit sicher sein. Sobald wir das Passwort festgelegt haben, können wir die MySQL Eingabe mit exit verlassen und uns richtig anmelden. Das machen wir mit dem Befehl:

mysql -u root -p

Wir werden nach der Ausführung dazu aufgefordert das Passwort einzugeben. Danach sind wir wieder in derselben MySQL Eingabe wie davor. Nun wollen wir eine Datenbank erstellen, die Ilias später nutzen kann. Dafür wollen wir eine Reihe Befehle ausführen.

CREATE DATABASE ilias CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'ilias'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT LOCK TABLES on *.* TO 'ilias'@'localhost';
GRANT ALL PRIVILEGES ON ilias.* TO 'ilias'@'localhost';
FLUSH PRIVILEGES;

Neben der erstellten Datenbank verteilen wir Rechte an einen Nutzer, den wir extra für Ilias erzeugen. Dessen Daten werden wir später in der Konfiguration übergeben. Damit kann sich das Programm mit der Datenbank verbinden.

Installieren letzter Dependencies

Wir haben jetzt fast alle Bausteine zusammen. Es fehlen am Ende nur noch ein paar kleinere Dependencies, die aber keine größere Installation oder Konfiguration benötigen. Diese sind:

sudo apt install zip unzip imagemagick openjdk-17-jdk composer

Nach der Installation muss der Webserver erneut Neugestartet werden.

Klonen des Codes

Nun gehen wir dazu über uns tatsächlich mit Ilias zu beschäftigen. Den Code finden wir im GitHub Repository des Entwicklers. Dieses wollen wir klonen. Dazu bewegen wir uns in den /var/www/html Ordner des Webservers in dem wir vorhin schon die phpinfo.php Datei angelegt haben. Sollte das Klonen in diesem Verzeichnis nicht funktionieren, kann mit mkdir extra ein Neues für das Repository angelegt werden. In diesem Fall darf man nicht vergessen, in der Apache Config Datei (/var/apache2/sites_enabled/000-default.conf) den Pfad anzupassen. In unserem Fall haben wir das Verzeichnis ilias genannt.

cd /var/www/html/
git clone https://github.com/ILIAS-eLearning/ILIAS.git ilias --single-branch
git checkout release_9

Auf der GitHub Seite kann die Version des aktuellen Releases nachgeschaut werden und eventuell im Code angepasst werden. In unserem Fall war das release_9.

Als nächstes wollen wir im Ordner des Repositorys Composer ausführen. Damit es zu keinen Berechtigungsproblemen kommt, wollen wir vorher den User anpassen.

sudo chown -R www-data:www-data /var/www/html/ilias
sudo chmod -R 775 /var/www/html/ilias

Im Anschluss können wir nun composer als www-data Nutzer ausführen.

sudo -u www-data composer --no-dev

Wenn das Skript erfolgreich durchläuft, müssen wir noch folgenden Befehl ausführen.

npm clean-install --omit=dev --ignore-scripts

Als letztes wollen wir weitere Verzeichnisse außerhalb des Root-Verzeichnis des Webservers. Das kann z.B. bei /var/www/files sein. Zusätzlich brauchen wir en Verzeichnis für die Log Dateien (z.B. /var/www/logs). Diesen Ordner müssen wir ebenfalls den www-data Nutzer zuweisen.

sudo chown www-data:www-data /var/www/files
sudo chown www-data:www-data /var/www/logs

Tatsächliche Installation von Ilias

Jetzt haben wir es fast geschafft. Eine letzte Datei müssen wir noch erstellen. Diese beinhaltet die Konfiguration für die Ilias Installation. Diese Datei sollte außerhalb des Docroots sein. Wir haben das in /foo/bar gemacht. Eine minimale Version dieser Datei sieht so aus.

{
"common" : {
"client_id" : "myilias"
},
"database" : {
"user" : "ilias"
},
"filesystem" : {
"data_dir" : "/var/lib/ilias"
},
"http" : {
"path" : "http://iliasdemo.madafa.de"
},
"systemfolder" : {
"contact" : {
"firstname" : "Henrik",
"lastname" : "Tschepke",
"email" : "[email protected]"
}
}
}

Natürlich sollte diese Datei an Sie angepasst werden. Darüber hinaus kann die Datei mit weiteren Parametern erweitert werden. Diese findet man hier. Unsere finale Datei sah so aus.

{
   "common" : {
       "client_id" : "myilias"
   },
   "database" : {
       "user" : "ilias",
       "password" : "P@ssw0rd"
   },
   "filesystem" : {
       "data_dir" : "/var/www/files"
   },
   "http" : {
       "path" : "http://iliasdemo.madafa.de"
   },
   "language" : {
       "default_language" : "de",
       "install_languages" : ["de"]
   },
   "logging" : {
       "enable" : true,
       "path_to_logfile" : "/var/www/logs/ilias.log",
       "errorlog_dir" : "/var/www/logs/"
   },
   "systemfolder" : {
       "contact" : {
           "firstname" : "Henrik",
           "lastname" : "Tschepke",
           "email" : "[email protected]"
       }
   }
}

Zur Sicherheit stellen wir sicher, dass auch auf die Datei zugegriffen werden kann über:

sudo chown www-data:www-data /foo/bar/my-config.json

Denn diese Datei benötigen wir für den folgenden Installationsbefehl. Diesen müssen wir erneut in dem Ilias Verzeichnis ausführen.

sudo -u www-data php setup/setup.php install /foo/bar/my-config.json

Jetzt sollte ein langes Skript ausgeführt werden. Wenn alles funktioniert hat, kann man die Seite im Browser erneut aufrufen. Jetzt sollte ein Anmeldefenster von Ilias erscheinen. Ist das der Fall, ist die Installation erfolgreich gewesen.

Nächste Schritte

Wir hoffen, Sie konnten unserer Anleitung ohne größere Probleme folgen. Wenn das der Fall ist, haben Sie eine Basisinstallation von Ilias. Diese können Sie noch um ein paar Komponenten wie einen Mailservice erweitern. Die Basisinstallation ist aber auch so schon funktionsfähig.

Sollten Sie weitere Fragen haben, können Sie gerne einen unverbindlichen Termin über unser Kontaktformular ausmachen. Unsere ExperInnen stehen Ihnen gerne zur Verfügung.

Du möchtest mehr über das Thema ILIAS erfahren? - schreib uns!”

Vielen Dank! Wir haben Ihre Anfrage erhalten!
Oops! Beim Senden ist etwas schiefgegangen, versuche es erneut.
Fragen?
Marc
Vertriebsmanager

Haben Sie Fragen zum Thema ILIAS oder benötigen Sie Unterstützung bei Ihrem Projekt? Kontaktieren Sie uns gerne:

AnrufenE-Mail sendenTermin buchen