Wie installiere ich Moodle LMS auf einem Debian 12 Server?

Moodle ist eine offene Lösung für das Learning Management System (LMS). Es ist eine Plattform für Bildungszwecke, von der Erstellung von Online-Kursen über die Verwaltung von Online-Schulen bis hin zur Verwaltung von Inhalten und dem Angebot von gemeinschaftlichem Lernen. Moodle ist hauptsächlich in PHP mit MySQL/MariaDB als Datenbank geschrieben und kann auf allen Betriebssystemen betrieben werden. Du hast die Wahl zwischen Apache oder Nginx für deine Moodle-Installation.

In dieser Anleitung erfährst du, wie du das Moodle Learning Management System auf einem Debian 12 Server installierst. Du betreibst Moodle mit dem LAMP-Stack (Linux, Apache, MariaDB und PHP), sicherst deinen Debian-Server mit UFW (Uncomplicated Firewall) und sicherst Moodle mit HTTP über Certbot und Letsencrypt.

Voraussetzungen

Vergewissere dich, dass du die folgenden Voraussetzungen hast, bevor du beginnst:

  • Einen Debian 12-Server
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten
  • Einen Domainnamen, der auf die IP-Adresse des Servers zeigt

Installieren der Abhängigkeiten

Das Moodle LMS ist in PHP und MySQL geschrieben, also musst du diese Pakete auf deinem System installieren. In diesem Beispiel wirst du Moodle mit dem LAMP-Stack (Linux, Apache, MariaDB und PHP) betreiben. Du installierst also zunächst LAMP auf deinem Debian-Server.

Bevor du ein Paket installierst, führe den folgenden Befehl aus, um deinen Debian-Paketindex zu aktualisieren.

sudo apt update

Repo aktualisieren

Installiere nun die LAMP-Stack-Abhängigkeiten (Linux, Apache, MariaDB und PHP) mit dem folgenden Befehl. Gib „Y“ ein, um mit der Installation fortzufahren.

sudo apt install apache2 mariadb-server php-cli php-intl php-xmlrpc php-soap php-mysql php-zip php-gd php-tidy php-mbstring php-curl php-xml php-pear php-bcmath libapache2-mod-php

Lampe einbauen

Nachdem die Installation abgeschlossen ist, überprüfe den Dienst „apache2“, um sicherzustellen, dass der Dienst läuft.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Du kannst unten sehen, dass der Apache Webserver läuft und aktiviert ist.

apache2 prüfen

Überprüfe nun den Dienst „mariadb“, indem du den folgenden Befehl ausführst.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

In der unten stehenden Ausgabe siehst du, dass der MariaDB-Server läuft.

mariadb prüfen

Überprüfe abschließend die PHP-Version und liste die aktivierten Module mit dem folgenden Befehl auf.

php -v
php -m

Du wirst sehen, dass PHP 8.2 installiert ist und einige Standardmodule wie „curl“, „exif“ und „date“ aktiviert sind.

php prüfen

Installation von UFW (Uncomplicated Firewall)

Nachdem du den LAMP Stack installiert hast, installieren wir die UFW (Uncomplicated Firewall), um den Server zu sichern. Dann öffnest du die Ports für die Protokolle SSH, HTTP und HTTPS. Zum Schluss musst du die UFW starten und aktivieren.

Um UFW zu installieren, führe den unten stehenden Befehl „apt“ aus.

sudo apt install ufw

ufw installieren

Sobald UFW installiert ist, führst du den Befehl „ufw“ aus, um die Ports für OpenSSH, HTTP (80) und HTTPS (443) zu öffnen. Du wirst eine Ausgabe wie „Regeln aktualisiert“ sehen.

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Führe nun den folgenden Befehl aus, um UFW auf deinem Debian-Rechner zu starten und zu aktivieren. Wenn du dazu aufgefordert wirst, gib „y“ ein, um zu bestätigen und fortzufahren. Du erhältst die Ausgabe „Firewall ist aktiv und wird beim Systemstart aktiviert“.

sudo ufw enable

ufw aktivieren

Überprüfe abschließend den UFW-Status mit dem folgenden Befehl. Du siehst, dass UFW mit OpenSSH „aktiv“ ist und die Ports „80“ und „443“„zugelassen“ sind.

sudo ufw status

Status prüfen

MariaDB Server konfigurieren

Bevor du Moodle installierst, musst du die Standard-Speicher-Engine auf „innodb“ ändern und „Barracuda“ als Standardformat einrichten. Danach musst du den MariaDB-Server sichern und das „root“-Passwort mit dem Dienstprogramm „mariadb-secure-installation“ einrichten.

Öffne die Standard-MariaDB-Serverkonfiguration „/etc/mysql/mariadb.conf.d/50-server.cnf“ mit dem Editor „nano“.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Füge die folgende Konfiguration ein, um das „Barracuda“-Format zu aktivieren und die Standard-Speicher-Engine auf „InnoDB“ einzustellen.

innodb_file_format = Barracuda 
default_storage_engine = innodb
innodb_large_prefix = 1
innodb_file_per_table = 1

Speichere die Datei und beende den Editor.

Führe nun den Befehl „systemctl“ aus, um den MariaDB-Server neu zu starten und deine Änderungen zu übernehmen.

sudo systemctl restart mariadb

Danach führst du den Befehl „mariadb-secure-installation“ aus, um deine MariaDB Serverinstallation zu sichern.

sudo mariadb-secure-installation

Daraufhin wirst du nach der Konfiguration des MariaDB-Servers gefragt:

  • Drücke ENTER, wenn du nach dem Root-Passwort gefragt wirst (du wirst es später konfigurieren)
  • Gib „n“ ein, wenn du zur „unix_socket“-Authentifizierung wechseln willst
  • Gib „Y“ ein, um das MariaDB Root-Passwort einzurichten, gib dann dein neues Passwort ein und wiederhole es
  • Gib „Y“ ein, um den anonymen Benutzer von MariaDB zu entfernen
  • Gib erneut „Y“ ein, um die Fernanmeldung für den Root-Benutzer zu deaktivieren
  • Gib „Y“ ein, um die Standarddatenbank „test“ und ihre Berechtigungen zu entfernen
  • Gib „Y“ ein, um die Tabellenberechtigungen neu zu laden und deine Änderungen zu übernehmen

Wenn du fertig bist, fahre mit dem nächsten Schritt fort, um eine neue Datenbank und einen neuen Benutzer zu erstellen.

Erstellen einer Datenbank und eines Benutzers für Moodle

Nachdem wir den MariaDB-Server konfiguriert haben, legen wir nun eine neue Datenbank und einen neuen Benutzer an, die von Moodle verwendet werden sollen. Du verwendest den „mariadb“-Client, um dich bei MariaDB anzumelden und eine neue Datenbank und einen neuen Benutzer anzulegen.

Melde dich mit dem unten stehenden Befehl „mariadb“ am MariaDB-Server an. Gib dein MariaDB Root-Passwort ein, wenn du dazu aufgefordert wirst.

sudo mariadb -u root -p

Führe die folgenden Abfragen aus, um eine neue Datenbank und den Benutzer „moodle“ mit dem Passwort „MoodlePassw0rd“ zu erstellen. Achte darauf, dass du die folgenden Datenbank-Anmeldedaten mit deinen Daten abänderst.

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON moodle.* TO 'moodle'@'localhost' IDENTIFIED BY "MoodlePassw0rd";
FLUSH PRIVILEGES;

Datenbank und Benutzer anlegen

Führe nun die folgende Abfrage aus, um den Benutzer „moodle“ zu überprüfen. Vergewissere dich, dass der Benutzer „moodle“ auf die Datenbank „moodle“ zugreifen kann.

SHOW GRANTS FOR moodle@localhost;

Zum Schluss gibst du „QUIT“ ein, um den MariaDB-Server zu verlassen.

Datenbankprivilegien anzeigen

PHP konfigurieren

Nachdem du den MariaDB-Server konfiguriert und einen neuen Datenbankbenutzer angelegt hast, müssen wir nun die Datei „php.ini“ konfigurieren und einige Standardkonfigurationen ändern, die Moodle benötigt.

Öffne die Datei „php.ini“ mit dem Editor „nano“.

sudo nano /etc/php/8.2/apache2/php.ini

Ändere die Standard-PHP-Konfiguration wie folgt. Du kannst das „memory_limit“ entsprechend ändern, je nach Speicherplatz auf deinem Server.

memory_limit = 256M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam
max_input_vars = 5000

Wenn du fertig bist, speichere die Datei und beende den Editor.

Zum Schluss führst du den Befehl „systemctl“ aus, um den Webserver „apache2“ neu zu starten und deine neue PHP-Konfiguration anzuwenden.

sudo systemctl restart apache2

Herunterladen des Moodle-Quellcodes

Nachdem du PHP konfiguriert hast, kannst du den Moodle-Quellcode herunterladen und dann das Installationsverzeichnis und das Datenverzeichnis für Moodle einrichten. In diesem Beispiel legst du das Moodle-Installationsverzeichnis unter „/var/www/moodle“ und das „Daten“-Verzeichnis unter „/var/www/moodledata“ an.

Gehe in das Verzeichnis „/var/www“ und lade den Moodle-Quellcode mit dem unten stehenden Befehl „wget“ herunter.

cd /var/www
sudo wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.tgz

Nach dem Download entpackst du den Moodle-Quellcode mit dem Befehl „tar“ und benennst das entpackte Verzeichnis in „moodle“ um. Damit befindet sich deine Moodle-Installation im Verzeichnis „/var/www/moodle“.

tar -xf moodle-latest-405.tgz

Als Nächstes erstellst du ein neues Verzeichnis „/var/www/moodledata“, das als Datenverzeichnis für deine Moodle-Installation verwendet wird.

mkdir -p /var/www/moodledata

Zuletzt führst du den folgenden Befehl aus, um die Eigentümerschaft der Verzeichnisse „/var/www/moodle“ und „/var/www/moodledata“ auf den Benutzer „www-data“ zu ändern. Stelle dann sicher, dass der Benutzer „www-data“ Dateien in diesen Verzeichnissen lesen, schreiben und ausführen kann.

sudo chown -R www-data:www-data /var/www/moodle /var/www/moodledata
sudo chmod u+rwx /var/www/moodle /var/www/moodledata

moodle-Verzeichnis einrichten

Apache Virtual Host einrichten

Nachdem du Moodle heruntergeladen hast, musst du im nächsten Schritt eine neue Apache Virtual Host Datei für Moodle erstellen. Stelle also sicher, dass du einen Domainnamen hast, der auf die IP-Adresse des Servers verweist.

Erstelle eine neue virtuelle Host-Konfiguration „/etc/apache2/sites-available/moodle.conf“ mit dem Editor „nano“.

sudo nano /etc/apache2/sites-available/moodle.conf

Füge die folgende Konfiguration ein, um eine virtuelle Hostdatei für Moodle einzurichten. Achte darauf, dass du den Parameter „ServerName“ durch deinen Domainnamen ersetzt.

<VirtualHost *:80>
DocumentRoot /var/www/moodle/
ServerName moodle.howtoforge.local
ServerAdmin admin@example.com

<Directory /var/www/moodle/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

ErrorLog /var/log/apache2/moodle_error.log
CustomLog /var/log/apache2/moodle_access.log combined
</VirtualHost>

Speichere die Datei und beende den Editor, wenn du fertig bist.

Führe nun den Befehl „a2enmod“ aus, um das Modul „rewrite“ zu aktivieren, und führe dann den Befehl „a2ensite“ aus, um den virtuellen Host „moodle.conf“ zu aktivieren.

sudo a2enmod rewrite
sudo a2ensite moodle.conf

Als Nächstes führst du den Befehl „apachectl“ aus, um deine Apache-Konfiguration zu überprüfen. Wenn du den Apache richtig konfiguriert hast, bekommst du eine Ausgabe wie „Syntax ist OK“.

sudo apachectl configtest

Apache einrichten

Zum Schluss führst du den Befehl „systemctl“ aus, um den Apache-Webserver neu zu starten und deine Änderungen zu übernehmen.

sudo systemctl restart apache2

Moodle mit HTTPS absichern

Jetzt ist deine Moodle-Installation fertig. Bevor du fortfährst, musst du Moodle mit HTTPS über Certbot und Letsencrypt absichern. Tu dies, wenn du Moodle auf einem öffentlichen Server installierst. Wenn du Moodle auf einem lokalen Server entwickelst, kannst du HTTPS überspringen oder durch selbstsignierte Zertifikate implementieren.

Installiere das „certbot“ und „python3-certbot-apache“ Plugin mit dem folgenden „apt“ Befehl. Gib „Y“ ein, um die Installation zu bestätigen.

sudo apt install certbot python3-certbot-apache

Nachdem die Installation abgeschlossen ist, führe den folgenden „certbot“-Befehl aus, um SSL-Zertifikate für Moodle zu erzeugen. Achte darauf, dass du den folgenden Domainnamen und die E-Mail-Adresse durch deine Domain ersetzt.

sudo certbot --apache --agree-tos --no-eff-email -m admin@howtoforge.local -d moodle.howtoforge.local

Wenn du fertig bist, sind deine SSL-Zertifikate im Verzeichnis „/etc/letsencrypt/live/domain.com“ verfügbar und deine Moodle-Installation läuft unter HTTPS.

Moodle-Installation

Öffne deinen Webbrowser und rufe den Domainnamen deiner Moodle-Installation auf, z. B. https://moodle.howtoforge.local/. Daraufhin wird der Moodle-Installationsassistent angezeigt.

Wähle deine Standardsprache für Moodle und klicke auf„Weiter„.

Sprache auswählen

Gib deinen Domainnamen und das Moodle-Datenverzeichnis unter„/var/www/moodledata“ ein.

Domäne und Datenverzeichnis auswählen

Wähle„MariaDB“ als Standarddatenbank für Moodle.

mariadb-Datenbanktreiber

Gib deine MariaDB-Datenbankdetails wie dbname, dbuser und Passwort ein.

mariadb-Konfiguration

Klicke auf dem Copyright-Hinweis auf„Weiter„.

copyright

Vergewissere dich im Abschnitt „Serverprüfungen“, dass dein Debian-Server die Moodle-Anforderungen erfüllt. Der Status eines jeden Punktes sollte„OK“ sein.

Systemprüfungen

Jetzt siehst du die Moodle-Installation wie folgt:

moodle-Installation

Sobald die Installation abgeschlossen ist, gibst du deine Admin-Daten ein (Benutzername, E-Mail und Passwort).

Admin-Benutzer

Nun gibst du die Informationen zu deiner Moodle-Site ein.

moodle site info

Zum Schluss siehst du das folgende Moodle-Admin-Dashboard.

Dashboard

Fazit

Herzlichen Glückwunsch! Du hast die Installation des Moodle Learning Management Systems (LMS) auf dem Debian 12 Server abgeschlossen. Moodle läuft mit dem LAMP-Stack (Linux, Apache, MariaDB und PHP) und ist mit UFW (Uncomplicated Firewall) und HTTPS über Certbot und Letsencrypt gesichert. Von hier aus kannst du ein neues Thema für Moodle anwenden, neue Addons installieren, um die Funktionalität zu erweitern, oder du kannst das Moodle-Benutzerhandbuch zur Verwaltung deiner Moodle-Installation lernen.

Das könnte dich auch interessieren …