Moodle auf Debian 11 (Bullseye) installieren mit NGINX
Viele kennen Moodle aus dem Unterricht. Aber nicht nur im Unterricht oder bei Universitäten wird Moodle eingesetzt. Moodle welche als kostenfreie LMS (Lern Managment Software) auf dem Markt verfügbar ist, bietet sich auch für Unernehmein an. Sei es im Bereich Fortbildung bis hin zur Wissensdatenbank.
Moodle bietet einem die Möglichkeit Kurse anzulegen und die Kursteilnehmer einfach zu verwalten.
Moodle brauch nicht mehr als einen passenden Webserver, welcher das Moodle System hostet. In meinem Beispiel baue ich den Moodle Server auf einem NGINX Webserver auf. Im weiteren wird noch eine Datenbanksoftware wie MariaDB benötigt und dann kann die Reise schon losgehen.
Zu Beginn möchte ich kurz den Ablauf einordnen:
- Initialisieren der Datenbank-Tabellen von Moodle.
- Einrichtung des NGINX-Webservers.
- Installieren und Konfigurieren von Moodle.
Pakete installieren
Zunächst werden einige Pakete benötigt. Ich installiere hier PHP8.1 als PHP Version. Dazu wird Nginx und MariaDB mit installiert
apt install php8.1-fpm php8.1 php8.1-mysql php8.1-gd php8.1-curl php8.1-xml php8.1-soap php8.1-zip php8.1-mbstring php8.1-ldap -y
apt install mariadb-server -y
apt install nginx -y
MYSQL Benutzer & Datenbank anlegen
Nun wird in MYSQL die Datenbank sowie der Datenbank Benutzer angelegt. Dafür muss sich zuvor auf die MYSQL CLI aufgeschaltet werden. Mit folgendem Befehl wird auf der Bash die MYSQL CLI von MariaDB aufgerufen. Dabei wird der Benutzer root gewählt und es wird die Passwortabfrage getriggert. Sollte noch kein Passwort gesetzt sei, muss beim ausführen des Befehls nur Enter gedrückt werden.
mysql -u root -p
Im weiteren wird nun der Datenbank Benutzer angelegt. Diesen habe ich moodle
genannt. Damit möchte ich eine klare Zuordnung schaffen. Bei dem Feld passwort sollte ein eigenes Passwort angegeben werden.
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'passwort';
Danach wird noch die Datenbank die ebenso moodle
heißen soll angelegt. Die Namen für den Benutzer wie auch für die Datenbank können selber gewählt werden. Damit ich mir weniger merken musste habe ich beide so benannt. In einer Produktivumgebung sollten immer starke Passwörter genutzt werden.
CREATE DATABASE moodle;
Nun müssen nur noch die passenden Rechte für den Benutzer ausgespielt werden. Ich möchte, dass der Benutzer auf die Datenbank die Rechte hat. Das ist für das Moodle System wichtig, da sonst angelegte Datensätze nicht in die Datenbank Tabellen geschrieben werden können oder Tabellen verwaltet werden können
GRANT ALL ON moodle .* TO 'moodle'@'localhost';
FLUSH PRIVILEGES;
Nginx einrichten
Nginx ist ein schneller und leistungsstarker Webserver. Da ich die Konfiguration besser finde als bei Apache2 setzte ich bei vielen Projekten auf Nginx.
Erstmal muss die Konfiguration für Moodle erstellt werden und die alte default
Konfiguration gelöscht werden.
rm -r /etc/nginx/sites-enabled/default
nano /etc/nginx/sites-enabled/moodle.conf
In die Datei wird folgendes eingefügt:
server {
listen 80;
listen [::]:80;
root /var/www/moodle;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ [^/]\.php(/|$) {
fastcgi_param PHP_VALUE "max_input_vars=5500";
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Hier kann ein eigener Servername angegeben werden, wie z.B moodle.example.com. Wichtig zu beachten ist aber, dass dann der Server nur über diese URL erreichbar ist. Im weiteren wurde hier die PHP Konfiguration angepasst, da sonst die CSS Stylesheets nicht geladen werden.
Ich starte jetzt Nginx und stelle den Service auf Autostart:
systemctl start nginx.service
systemctl enable nginx.service
Moodle Paket installieren
Moodle bietet die Möglichkeit das Paket als ZIP Datei herunterzuladen.
Auf dieser Seite findet man immer die aktuelle Version. In diesem Beispiel lade ich eine bestimmte Datei herunter.
cd /var/www/
wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.zip
Nun muss noch die Datei entpackt werden. Dabei erhält man das Verzeichnis moodle
dieses wurde bei Nginx auch als Dokumenten-Root angegeben.
unzip moodle-latest-405.zip
Dana werden noch die Rechta auf die Verzeichnisse verteilt.
chown -R www-data:www-data /var/www/*
Cron Job einrichten
Damit Moodle auch im Hintergrund arbeiten kann, wird folgender Cron Job angelegt.
Dafür wird der Crontab Editor geöffnet.
crontab -u www-data -e
*/2 * * * * /usr/bin/php /var/www/moodle/admin/cli/cron.php >/dev/null
Web Installation
Nun öffnet man einem Browser seiner Wahl und gibt die IP Adresse des Servers ein. Falls vorhanden die URL die in der Nginx Konfiguration eingestellt wurde.
Zu Begin wird die Sprache eingestellt. Hierbei habe ich Deutsch gewählt.
Danach werden die Pfade in Moodle konfiguriert. Hier muss nichts geändert werden.
Nun wird noch das Datenbankmanagementsystem ausgewählt und danach werden die Datenbank Zugangsdaten eingetragen. Der Tabellen-Prefix kann so gelassen werden.
Es folgt noch der Copy-Right Hinweis und dann kann es schon fast losgehen.
Bei der Systemüberprüfung sollte alles auf OK stehen. Ansonsten kann man auf den Bereich klicken und sich die Dokumentation dazu anschauen.
Sollte man nicht langgenug gewartet haben, erscheint diese Meldung:
Nach einiger Zeit sieht man nun die Plugin Prüfung:
Klicken Sie unten auf "Datenbank jetzt aktualisieren".
Finalisierung
Nun wird man aufgefordert, einen Administrator anzulegen. Dafür wird ein Password und der Vor- und Nachname benötigt, sowie die E-Mail-Adresse.
Um den Abschluss einzuleiten, wird noch eine Name der Website festgelegt. Dazu auch die Systemzeit. Es wird ebenso eine Support E-Mail-Adresse benötigt.
Nun ist die Installation abgeschlossen und die Moodle Konfiguration kann starten. Moodle bietet eine große Palette an Plugins mit den die Authentifizierung oder die Benutzerverwaltung gesteuert werden kann.