ILIAS ist eine Open-Source E-Learning Plattform mit welcher Lernmodule, Tests und Prüfungen, Portfolios, Umfragen, Wikis und Blogs erstellt werden können. Hierbei fallen keinerlei Lizenzkosten an, jedoch besteht die Möglichkeit einer freiwilligen Mitgliedschaft im kostenpflichtigen ILIAS-Verein, was eine direkte Einflussnahme auf den Entwicklungsprozess der Plattform bietet.
Die ILIAS-Plattform wird sowohl Bundesweit, als auch International von unzähligen Hochschulen verwendet, findet aber auch bei kleinen Firmen und privaten Einzelnutzern Anwendung. Eine Liste aller bis dato registrierten Installationen kann hier eingesehen werden: docu.ilias.de/ilias.php
In diesem Beitrag wollen wir uns Schritt für Schritt ansehen, wie wir die ILIAS Plattform auf einem Linux Server installieren und bereitstellen können. In diesem Beispiel verwenden wir einen Ubuntu 20.04 Server.
Für das Bereitstellen einer IILIAS Installation wird eine Reihe von Abhängigkeiten und Tools benötigt. So benötigt ILIAS beispielsweise ein Webserver, PHP, eine Datenbank und weitere kleinere Tools.
Bevor wir mit der eigentlich Installation von ILIAS beginnen, installieren wir erst einmal alle nötigen Abhängigkeiten.
Als ersten Schritt überprüfen wir, ob unsere Ubuntu Version auf dem neusten Stand ist und installieren gegebenenfalls benötigte Updates. Hierfür führen wir folgende Kommandos aus:
apt-get update
apt-get upgrade
Möglicherweise sind einige Basispakte, die für die Installation von ILIAS erforderlich sind, nicht installiert. Mit folgenden Kommandos prüfen wir, ob die benötigten Pakete installiert sind, und installieren diese gegebenenfalls:
apt install ubuntu-server
apt install language-pack-en
apt install sudo
apt install lsb-core
apt install rsyslog
Nachdem wir die Basispakete und alle nötigen Updates installiert haben, können wir damit beginnen die Abhängigkeiten zu installieren.
Apache2
Als erstes installieren wir den Apache-Webserver. Hierfür führen wir folgendes Kommando aus:
apt-get install apache2 apache2-doc libapache2-mod-xsendfile
Anschließend aktivieren wir einige Apache-Module mit folgendem Kommando:
a2enmod rewrite dav_fs dav expires headers proxy socache_shmcb ssl vhost_alias dav ssl http2 mod_authnz_ldap ldap
Um nun die neue Konfiguration zu aktivieren, führen wir:
systemctl restart apache2
aus. Erhalten wir hier keine Ausgabe, war das Neustarten von Apache erfolgreich.
PHP
Nachdem wir den Webserver erfolgreich installiert haben, können wir mit der Installation von PHP beginnen. Um diese zu starten führen wir folgende Befehle aus:
apt install php7.4 php7.4-gd php7.4-xsl php7.4-ldap php7.4-xmlrpc php7.4-dev php7.4-curl php7.4-cli php7.4-common php7.4-soap php7.4-mbstring php7.4-intl php7.4-xml libapache2-mod-php7.4 php7.4-zip php-apcu php7.4-imagick php7.4-bcmath php7.4-gmp
phpenmod opcache
apt install php7.4-curl php7.4-json php7.4-mysql php7.4-opcache php7.4-readline libapache2-mod-php7.4
MariaDB
Da nun Webserver und PHP installiert sind, können wir mit der Installation der Datenbank fortfahren. Wir wählen hier das Datenbankensystem MariaDB. Hierfür führen wir als erstes die Kommandos
sudo apt-get install mariadb-server galera mariadb-client libmariadb3 mariadb-backup mariadb-common
apt-get install mariadb-server
aus. Anschließend installieren wir MySQL. Mit folgendem Kommando starten wir die Installation:
mysql_secure_installation
Während der Installation werden wir nun durch einen Dialog geführt. Wir beantworten die Fragen wie folgt:
War die Installation erfolgreich, erhalten wir folgende Ausgabe:
Weitere kleinere Tools
Da wir nun alle Hauptabhängigkeiten erfolgreich installiert haben, können wir nun noch ein paar kleinere Abhängigkeiten und Tools wie beispielsweise zip, git und curl installieren. Hierfür führen wir folgendes Kommando einmalig aus:
apt install zip git htop wget curl htmldoc mailutils imagemagick ffmpeg openjdk-11-jre python phantomjs abiword libreoffice mailutils davfs2 nano memcached php-memcached composer nmon clamav ghostscript-x wkhtmltopdf php-tcpdf xvfb
Während der Installation erscheint ein Dialogfenster zur Installation von davfs2. Wir wählen hier Yes.
Nachdem die Installation abgeschlossen ist, haben wir alle notwendigen Abhängigkeiten erfolgreich installiert.
Als letzten Schritt überprüfen wir noch, ob die Datum- und Uhrzeiteinstellungen korrekt gesetzt sind. Hierfür führen wir das Kommando
date
aus. Anschließend müssen wir noch eine lokale Variable für die deutsche Textausgabe setzen. Um zu überprüfen, welche lokalen Variablen bereits angelegt sind, führen wir den Befehl
locale -a
aus und erhalten folgende Ausgabe:
Wir können sehen, dass die Variable für die deutsche Textsetzung fehlt. Um diese nun hinzuzufügen, müssen wir sie zuerst mit dem Kommando
locale-gen de_DE.UTF-8
anlegen. Mit dem Kommando
update-locale LANG=de_DE.UTF-8
können wir dieser Variable nun die deutsche Textsetzung zuweisen.
Netzwerkkonfiguration
Um die Netzwerkkonfiguration vorzunehmen, erstellen wir folgende Datei mit dem Nano Texteditor:
nano /etc/sysctl.d/90-socket-tuning.conf
und konfigurieren sie wie folgt:
#
# Socket tuning
#
# Recieve and Send Socket Mem Buffer Sizes
net.core.rmem_max=4194304
net.core.wmem_max=4194304
# Sockets (default 128)
net.core.somaxconn = 4096
# Increase the number of outstanding syn requests allowed.
# c.f. The use of syncookies.
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syncookies = 1
# Widen local portrange
net.ipv4.ip_local_port_range = 2051 64512
Anschließend speichern wir unsere Konfiguration und schließen den Editor.
Konfiguration der Datenbank
Um nun die Datenbank korrekt zu konfigurieren öffnen wir folgende Datei:
nano /etc/mysql/conf.d/ilias.cnf
Wir konfigurieren die Datenbank wie folgt:
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=524288
TimeoutStartSec=600
ExecStartPre=/bin/sync
ExecStartPre=/sbin/sysctl -q -w vm.drop_caches=3
innodb_strict_mode=OFF
log_error = /var/log/mysql/error.log
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 0.5
log_slow_rate_limit = 1000
log_slow_verbosity = query_plan,explain
default_storage_engine = InnoDB
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Anschließend speichern wir unsere Konfiguration und schließen den Editor. Zum anwenden der Konfiguration starten wir den Webserver und die Datenbank neu:
service apache2 restart
service mariadb restart
Konfiguration von PHP
Damit wir die Konfiguration von PHP vornehmen können, müssen wir folgende Datei mit einem Texteditor öffnen:
nano /etc/php/7.4/apache2/php.ini
Hier müssen wir nun folgende Werte setzten. Mit der Tastenkombination strg+w können wir die Suchfunktion nutzen, um die Variablen schnell zu finden:
max_execution_time = 600
max_input_vars = 10000
memory_limit = 512M
post_max_size = 512M
upload_max_filesize = 512M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
display_errors = On
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 14400
session.hash_function = 0
session.cookie_httponly = On
session.save_handler = files
session.cookie_secure = On
allow_url_fopen = On
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
apc.enabled=1
pc.shm_size=256M
apc.ttl=7200
apc.enable_cli=1
apc.gc_ttl=3600
apc.entries_hint=4096
apc.slam_defense=1
apc.serializer=igbinary
Anschließend starten wir den Webserver neu:
systemctl restart apache2
Konfiguration der vHosts
Nachdem wir nun die Netzwerk-, sowie die PHP- und Datenbankkonfigurationen durchgeführt haben, können wir damit beginnen unsere eigenen vHosts zu konfigurieren. Zunächst prüfen wir, welche vHosts aktuell auf unserem Ubuntu Server laufen. Hierfür führen wir folgendes Kommando aus:
ls /etc/apache2/sites-enabled
Als Ausgabe erhalten wir nun alle aktuell laufenden Sites:
Wir deaktivieren nun alle aktiven vHosts. In unserem Falle ist der einzige akut laufende vHost 000-default.conf. Wir deaktivieren ihn mit:
a2dissite 000-default.conf
Zum Speichern der Konfiguration starten wir den Webserver neu:
systemctl reload apache2
Wir überprüfen erneut, ob es aktive vHosts auf unserem System gibt. Sollten wir hier nun keine Ausgabe erhalten, haben wir die vHosts erfolgreich gelöscht und können nun damit fortfahren unsere eigenen vHosts zu konfigurieren. Hierfür wechseln wir zunächst in das dafür vorgesehene Verzeichnis:
cd /etc/apache2/sites-available
Hier fügen wir nun folgende vHosts hinzu:
Als erstes konfigurieren wir den vHosts für die ILIAS Hauptseite. Wir öffnen die Konfigurationsdatei mit:
nano 000-bbs-ilias.conf
und konfigurieren diesen wie folgt:
<VirtualHost bbs-ilias.de:80>
ServerAdmin admin@bbs-ilias.de
ServerName www.bbs-ilias.de
ServerAlias www.bbs-ilias.de
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
KeepAlive off
HostNameLookups off
Protocols h2 http/1.1
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
DocumentRoot /var/www/html
#Or its this path?
#DocumentRoot /var/www
XSendFilePath /var/www/html
XSendFilePath /opt
<Directory /var/www/html/>
<IfModule mod_php7.c>
php_flag register_globals off
</IfModule>
Options -Indexes +FollowSymlinks
DirectoryIndex index.php
DirectoryIndex index.html
DirectoryIndex index.htm
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Anschließend konfigurieren wir den vHost für Etherpad:
nano pad.bbs-ilias.conf
<VirtualHost pad.bbs-ilias.de:80>
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
ProxyVia On
ProxyRequests Off
ProxyPass / http://localhost:9001/
ProxyPassReverse / http://localhost:9001/
ProxyPreserveHost on
<Proxy *>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Proxy>
</VirtualHost>
Als letztes konfigurieren wir den vHost für die Chatfunktion:
nano chat.bbs-ilias.conf
VirtualHost chat.bbs-ilias.de:80>
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
ProxyVia On
ProxyRequests Off
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ProxyPreserveHost on
<Proxy *>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Proxy>
</VirtualHost>
Um nun unsere Konfigurationen zu aktivieren führen wir nacheinander die Befehle:
a2ensite 000-bbs-ilias.conf
a2ensite pad.bbs-ilias.conf
a2ensite chat.bbs-ilias.conf
aus, und starten anschließend den Webserver neu:
systemctl restart apache2
SSL-Zertifikat mit Cerbot installieren
Nachdem wir die vHosts angelegt und konfiguriert haben, wollen wir noch ein SSL-Zertifikat installieren. Hierfür werden wir Cerbot nutzen, welches wir mit folgendem Kommando installieren können:
apt install certbot python3-certbot-apache
Mit dem Kommando
certbot --apache
können wir nun mit der Hinterlegung des Zertifikats beginnen. Während dieses Prozesses müssen wir eine Notfall-E-Mail-Adresse angeben und festlegen für welche vHost wir HTTPS aktivieren wollen:
Weitere Apache und Server Konfigurationen
Haben wir HTTPS für unsere vHosts aktiviert, können wir noch einige kleinere Konfigurationen durchführen:
nano /etc/apache2/envvars
APACHE_ULIMIT_MAX_FILES='ulimit -n 128000'
nano /etc/systemd/system.conf
DefaultLimitNOFILE=524288
Nun, da wir endlich unseren Server, sowie alle Nötigen Abhängigkeiten installiert und konfiguriert haben, können wir mit der tatsächlichen Installation von ILIAS beginnen.
Hierfür erstellen wir als erstes folgende Verzeichnisse:
Anschließend wechseln wir in das Webserververzeichnis
cd /var/www/html
und laden anschließend ILIAS via Git herunter. Hierfür führen wir folgenden Befehl aus:
git clone https://github.com/ILIAS-eLearning/ILIAS.git ilias
Nachdem ILIAS heruntergeladen wurde passen wir noch alle Berechtigungen an:
chown -R www-data:www-data /var/www/html
chown -R www-data:www-data /opt/iliasdata
chmod -R 774 /var/www/html
chmod -R 770 /opt/iliasdata
Erstellen eines ILIAS Clients
Um nun einen ILIAS Client zu erstellen benötigen wir als erstes eine JSON-Datei. In dieser können wir dann alle Konfigurationsparameter für unseren Client festlegen. Wir erstellen die JSON-Datei indem wir folgende Kommandos nacheinander ausführen:
mkdir /opt/iliasdata/scripts/clients
nano/opt/iliasdata/scripts/clients/clientname1.json
Anschließend konfigurieren wir die JSON-Datei wie folgt:
{
"common" : {
"client_id" : "test7",
"server_timezone" : "Europe/Berlin",
"register_nic" : true
},
"database" : {
"type" : "innodb",
"host" : "localhost",
"port" : "3306",
"database" : "db_test7",
"user" : "root",
"password" : "mysqlrootpassword",
"create_database" : true
},
"filesystem" : {
"data_dir" : "/opt/iliasdata"
},
"http" : {
"path" : "http://bbs-ilias.de"
},
"language" : {
"default_language" : "de",
"install_languages" : ["de"]
},
"logging" : {
"enable" : true,
"path_to_logfile" : "/opt/iliasdata/iliaslog/ilias.log",
"errorlog_dir" : "/opt/iliasdata/errorlog/"
},
"systemfolder" : {
"contact" : {
"firstname" : "Wolfgang",
"lastname" : "Huebsch",
"email" : "admin@yourdomain.com"
}
},
"globalcache" : {
"service" : "apc",
"components" : {
"clng" : true,
"comp" : true,
"events" : true,
"global_screen" : true,
"obj_def" : true,
"ilctrl" : true,
"tpl" : true,
"tpl_blocks" : true,
"tpl_variables" : true
}
},
"utilities" : {
"path_to_convert" : "/usr/bin/convert",
"path_to_zip" : "/usr/bin/zip",
"path_to_unzip" : "/usr/bin/unzip"
},
"pdfgeneration" : {
"path_to_phantom_js" : "/usr/bin/phantomjs"
},
"preview" : {
"path_to_ghostscript" : "/usr/bin/gs"
},
"mediaobject" : {
"path_to_ffmpeg" : "/usr/bin/ffmpeg"
},
"style" : {
"manage_system_styles" : true,
"path_to_lessc" : "/usr/bin/lessc"
},
"systemfolder" : {
"client" : {
"name" : "test7",
"description" : "Test Installation for ILIAS 7",
"institution" : "Atomic Powerplant Springfield"
},
"contact" : {
"firstname" : "Homer",
"lastname" : "Simpson",
"title" : "Sir",
"position" : "Security Inspector Sector 7G",
"institution" : "Atomic Powerplant Springfield",
"street" : "742 Evergreen Terrace",
"zipcode" : "12345",
"city" : "Springfield",
"country" : "USA",
"phone" : "(939) 555-0113",
"email" : "Chunkylover53@aol.com"
}
}
}
Nachdem wir unsere JSON-Datei konfiguriert haben erstellen wir den tatsächlichen ILIAS Client. Hierfür wechseln wir zunächst in das ILIAS Verzeichnis
cd /var/www/html/ilias
und erstellen den Client mit
php setup/setup.php install/opt/iliasdata/scripts/clients/clientname1.json
Wurde der Client erfolgreich erstellt, erhalten wir folgende Ausgabe.
Jetzt müssen wir lediglich alle Berechtigungen anpassen:
chown -R www-data:www-data /var/www/html
chown -R www-data:www-data /opt/iliasdata
chmod -R 774 /var/www/html
chmod -R 770 /opt/iliasdata
Wir haben in diesem Beitrag gesehen, wie wir eine Basis-ILIAS Installation auf einem Ubuntu-Server bereitstellen können. Basis aus dem Grund, dass es dank des Open Source Konzepts sowie der großen und sehr aktiven Community, unzählige Plugins und Varianten gibt, um die ILIAS Plattform genau an die persönlichen Präferenzen anzupassen. So können wir beispielsweise RPC-Server Installieren, um PDFs zu generieren und um eine Search-Engine für unsere Installation bereitzustellen. Oder wir installieren Mathjax und STACK-Maxima und machen unsere ILIAS Installation zu einer Mathematik Plattform mit der wir mathematische Ausdrücke, Graphen oder Übungsaufgaben und Tests erstellen können. Uns sind für die Konfiguration unseres Servers keine Grenzen gesetzt.
Eine Übersicht der verfügbaren Plugins finden Sie hier: https://docu.ilias.de/ilias.php?ref_id=1442&cmdClass=ilrepositorygui&cmdNode=j3&baseClass=ilRepositoryGUI
Wie die einzelnen Plugins installiert werden können, ist unter den jeweiligen Beschreibung angegeben. Schauen Sie sich die Auswahl der Plugins in Ruhe an und konfigurieren Sie Ihre ILIAS Installation ganz nach Ihren Vorstellungen und Wünschen.
Kontaktieren Sie uns gerne über das
Kontaktformular und vereinbaren ein unverbindliches
Beratungsgespräch mit unseren Berater:innen zur
Bedarfsevaluierung. Gemeinsam optimieren wir Ihre
Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!