Moodle 3.2 auf CentOS 7 mit Nginx, PHP‑FPM 7.0 und MariaDB installieren

Kurzfassung: Diese Schritt-für-Schritt-Anleitung zeigt, wie Sie Moodle 3.2 auf einem CentOS 7 Server einrichten: Nginx als Webserver, PHP‑FPM 7.0 als PHP‑Handler und MariaDB als Datenbank. Enthalten sind SELinux‑, Firewalld‑, SSL‑Konfigurationen, Rollenchecklisten, Sicherheits‑Härtung und Migrationshinweise.
Worum es hier geht: Installation und Inbetriebnahme einer produktionsreifen Moodle‑Instanz unter CentOS 7 mit Fokus auf Sicherheit, Performance und Wartbarkeit.
Wichtig: Ersetzen Sie in der Anleitung alle Beispielpasswörter (z. B. hakaselabs123) durch sichere, eindeutige Passwörter und passen Sie Domainnamen an Ihre Umgebung an.
Übersicht
Ziel dieses Tutorials ist es, Moodle 3.2 auf CentOS 7 lauffähig zu bekommen. Die Anleitung umfasst:
- Installation von Nginx
- Installation und Konfiguration von PHP‑FPM 7.0
- Installation und Konfiguration von MariaDB
- Download und Konfiguration von Moodle
- SSL und Virtual Host für HTTPS
- SELinux und Firewalld konfigurieren
- Webinstallations‑Schritte von Moodle
- Exklusive Zusatzabschnitte: Checklisten, Sicherheits‑Härtung, Alternativansätze, Akzeptanzkriterien und Migrationshinweise
Voraussetzungen
- CentOS 7 Server
- Root‑ oder Sudo‑Rechte
- Funktionsfähige Internetverbindung zum Herunterladen von Paketen
Hinweis: Diese Anleitung verwendet die stabile Moodle‑Version 3.2 wie in der Ausgangsdokumentation angegeben. Bei neueren Moodle‑Versionen prüfen Sie bitte die jeweiligen Systemanforderungen.
Was wir tun werden
- Nginx installieren
- PHP‑FPM installieren und konfigurieren
- MariaDB installieren und konfigurieren
- Moodle herunterladen und konfigurieren
- SSL und Virtual Host konfigurieren
- SELinux und Firewalld anpassen
- Moodle per Webinstaller installieren
- Tests, Absicherungen und Betriebs‑Checklisten
Schritt 1 - Nginx installieren
In diesem Schritt installieren wir Nginx aus dem EPEL‑Repository. Nginx ist im Standard‑CentOS‑Repository nicht enthalten, daher fügen wir das EPEL‑Repository hinzu.
Installieren Sie das EPEL‑Repository:
yum -y install epel-release
Installieren Sie Nginx aus dem EPEL‑Repository:
yum -y install nginx
Starten und aktivieren Sie Nginx:
systemctl start nginx
systemctl enable nginx
Überprüfen Sie offene Ports mit netstat:
netstat -plntu
Hinweis: Falls netstat nicht vorhanden ist, installieren Sie net-tools:
yum -y install net-tools
Schritt 2 - PHP‑FPM installieren und konfigurieren
Moodle 3.2 unterstützt PHP 7; in diesem Tutorial verwenden wir PHP 7.0. Da PHP‑FPM 7.0 nicht im Standard‑Repository vorhanden ist, nutzen wir das Drittanbieter‑Repository “webtatic”.
Fügen Sie webtatic hinzu:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Installieren Sie PHP‑FPM und die Moodle‑benötigten Erweiterungen:
yum install -y graphviz aspell php70w-fpm php70w-cli php70w-pspell php70w-curl php70w-gd php70w-intl php70w-mysql php70w-xml php70w-xmlrpc php70w-ldap php70w-zip php70w-json php70w-opcache php70w-readline php70w-mbstring php70w-soap
Wenn die Installation abgeschlossen ist, bearbeiten Sie die PHP‑Konfiguration:
vim /etc/php.ini
Suchen und setzen Sie:
cgi.fix_pathinfo=0
Speichern und schließen.
Bearbeiten Sie die PHP‑FPM Pool‑Konfiguration:
cd /etc/php-fpm.d/
vim www.conf
Ändern Sie Benutzer und Gruppe auf nginx:
user = nginx
group = nginx
Nutzen Sie einen Socket anstelle eines Ports:
listen = /run/php-fpm/php-fpm.sock
Konfigurieren Sie Besitzer, Gruppe und Rechte des Sockets:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Beschränken Sie PHP auf .php‑Dateien:
security.limit_extensions = .php
Aktivieren Sie die Standard‑Umgebungsvariablen für PHP‑FPM:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Erstellen Sie das Session‑Verzeichnis und setzen Sie Rechte:
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Besitzer des Socket‑Verzeichnisses setzen:
chown -R nginx:nginx /run/php-fpm/
Starten und aktivieren Sie PHP‑FPM:
systemctl start php-fpm
systemctl enable php-fpm
Prüfen Sie den Socket:
netstat -lx | grep php-fpm.sock
Schritt 3 - MariaDB installieren und konfigurieren
Als Datenbank verwenden wir MariaDB. Wir installieren mariadb‑server aus den CentOS‑Repos, konfigurieren den Root‑Zugang und legen eine Datenbank sowie einen Benutzer für Moodle an.
Installieren:
yum -y install mariadb-server mariadb
Konfiguration anpassen:
vim /etc/my.cnf
Fügen Sie im Abschnitt [mysqld] am Ende ein:
default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda
Starten und aktivieren:
systemctl start mariadb
systemctl enable mariadb
Sichern Sie die MariaDB‑Installation und setzen Sie ein Root‑Passwort:
mysql_secure_installation
Folgen Sie den Abfragen und entfernen Sie Testzugänge und anonymen Benutzer.
Erstellen Sie die Datenbank und den Benutzer für Moodle (ersetzen Sie Passwort und Namen in der Praxis durch sichere Werte):
mysql -u root -p
SQL‑Befehle in der MySQL‑Konsole:
CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
FLUSH PRIVILEGES;
Hinweis: Wählen Sie hier ein starkes Passwort und erwägen Sie, Verbindungsbeschränkungen (Host) und separate Benutzerrechte für einzelne Aufgaben anzulegen.
Schritt 4 - Moodle herunterladen und konfigurieren
Installieren Sie git, falls noch nicht vorhanden:
yum -y install git
Erstellen Sie das Webroot und klonen Sie das Moodle‑Repository:
mkdir -p /var/www/
cd /var/www/
git clone https://github.com/moodle/moodle.git
Wechseln Sie in das Moodle‑Verzeichnis und listen Sie Branches:
cd moodle/
git branch -a
Checkout des stabilen Zweigs MOODLE_32_STABLE:
git branch --track MOODLE_32_STABLE orogin/MOODLE_32_STABLE
git checkout MOODLE_32_STABLE
Kontrollieren Sie den Status:
git status
Sollte so aussehen:
# On branch MOODLE_32_STABLE
nothing to commit, working directory clean
Erstellen Sie das Datenverzeichnis und setzen Sie Rechte:
mkdir -p /var/moodledata
chown -R nginx:nginx /var/moodledata
chmod 777 /var/moodledata
Setzen Sie Rechte für das Webverzeichnis:
chown -R nginx:nginx /var/www/moodle
chmod 755 /var/www/moodle
Schritt 5 - SSL und Virtual Host konfigurieren
Für den produktiven Betrieb sollten Sie ein offizielles Zertifikat (z. B. Let’s Encrypt) verwenden. In diesem Tutorial generieren wir ein selbstsigniertes Zertifikat für Tests.
Zertifikatsverzeichnis erstellen und Zertifikat erzeugen:
mkdir -p /etc/nginx/ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/moodle.crt -keyout /etc/nginx/ssl/moodle.key
Setzen Sie die Berechtigungen für den privaten Schlüssel:
chmod 600 /etc/nginx/ssl/moodle.key
Erstellen Sie eine Nginx‑Site‑Konfiguration:
cd /etc/nginx/
vim conf.d/moodle.conf
Fügen Sie die Virtual Host Konfiguration (Beispiel) hinzu:
# PHP Upstream Handler
upstream php-handler {
server unix:/run/php-fpm/php-fpm.sock;
}
# Nginx redirect HTTP to HTTPS - moodle.hakase-labs.com
server {
listen 80;
server_name moodle.hakase-labs.com;
# enforce https
return 301 https://$server_name$request_uri;
}
# HTTPS Configuration
server {
server_name moodle.hakase-labs.com;
listen *:443 ssl http2;
listen [::]:443 ssl http2;
# SSL Configuration
ssl on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_session_tickets off;
#ssl_stapling on;
#ssl_stapling_verify on;
resolver_timeout 5s;
ssl_certificate /etc/nginx/ssl/moodle.crt;
ssl_certificate_key /etc/nginx/ssl/moodle.key;
# Root Moodle Data DIrectory
root /var/www/moodle;
rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;
location ^~ / {
try_files $uri $uri/ /index.php?q=$request_uri;
index index.php index.html index.htm;
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass php-handler;
}
}
}
Testen und neustarten:
nginx -t
systemctl restart nginx
SSL und Virtual Host sind nun eingerichtet.
Schritt 6 - SELinux und Firewalld konfigurieren
Wenn SELinux aktiviert ist (Enforcing), passen Sie die Kontextberechtigungen an. Wenn SELinux deaktiviert ist, können Sie diesen Abschnitt überspringen, sollten aber die Firewalld‑Regeln trotzdem setzen.
Prüfen Sie SELinux:
sestatus
Installieren Sie das SELinux‑Management‑Tool:
yum -y install policycoreutils-python
Setzen Sie die passenden SELinux‑Kontexte:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
restorecon -Rv '/var/www/moodle/'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata(/.*)?'
restorecon -Rv '/var/moodledata/'
Firewalld installieren und konfigurieren:
yum -y install firewalld
systemctl start firewalld
systemctl enable firewalld
Öffnen Sie HTTP/HTTPS/SSH:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh
Neu laden und prüfen:
firewall-cmd --reload
firewall-cmd --list-all
Schritt 7 - Moodle installieren (Webinstaller)
Öffnen Sie Ihren Browser und rufen Sie die Domain Ihres Virtual Hosts auf, z. B. https://moodle.hakase-labs.com. Folgen Sie dem Installationswizard:
- Sprache wählen
- Moodle‑Webadresse, Moodle‑Verzeichnis (/var/www/moodle) und moodledata (/var/moodledata) eingeben
- Datenbanktreiber: MySQL
- Datenbankverbindungsdaten eingeben (moodledb, moodleuser, Passwort)
- Lizenz akzeptieren
- Systemchecks durchführen (stellen Sie sicher, dass alle PHP‑Erweiterungen vorhanden sind)
- Administrator‑Benutzer erstellen
- Frontpage konfigurieren
Die Screenshots in der Originalanleitung zeigen die einzelnen Schritte und Bestätigungen.
Schritt 8 - Tests
Besuchen Sie die Moodle‑Startseite und die Login‑Seite, prüfen Sie das Dashboard und die Site‑Administration. Testen Sie Dateupload, Kursanlage und Theme‑Rendern.
Zusätzliche Abschnitte: Praxistipps, Sicherheit und Betriebswissen
Wichtig: Die folgenden Erweiterungen und Checklisten sind praxisorientiert und helfen beim stabilen und sicheren Betrieb einer Moodle‑Instanz in Produktion.
Sicherheits‑Härtung (Basisebenen)
- Verwenden Sie ein offizielles TLS‑Zertifikat (Let’s Encrypt oder CA‑Zertifikat).
- Deaktivieren Sie unsichere TLS‑Versionen (TLSv1, TLSv1.1) in produktiven Umgebungen; aktivieren Sie TLSv1.2 und TLSv1.3 sofern verfügbar.
- Führen Sie regelmäßige Updates von OS, PHP, Nginx und Moodle durch.
- Beschränken Sie Datenbankzugriff auf notwendige Hosts (keine öffentliche Erreichbarkeit).
- Nutzen Sie starke Passwortrichtlinien und Zwei‑Faktor‑Authentifizierung für Admin‑Konten.
- Setzen Sie HTTP‑Header: HSTS, X‑Frame‑Options, X‑Content‑Type‑Options wie in der Nginx‑Konfiguration gezeigt.
- Sichern Sie Backups (Datenbankdump + moodledata + moodle‑Codebase) automatisiert und testen Sie Wiederherstellungen.
SELinux‑ und Rechte‑Hinweise
- Vermeiden Sie 777 als Standardberechtigung; setzen Sie sie nur temporär während der Konfiguration, wenn nötig. In der Anleitung wurde 777 für /var/moodledata gesetzt — prüfen Sie, ob restriktivere Rechte ausreichend sind (z. B. 770 mit nginx‑Besitz).
- Prüfen Sie nach Änderungen an Codes oder Plugins die SELinux‑Kontexte erneut.
Performance‑Tipps
- Aktivieren Sie PHP‑OpCache (in PHP‑Konfiguration bereits enthalten: opcache). Passen Sie opcache.memory_size, opcache.max_accelerated_files und opcache.validate_timestamps an die Umgebung an.
- Skalierung: Bei größerer Last können Sie Nginx als Reverse Proxy nutzen und mehrere PHP‑FPM‑Backends betreiben (upstream mit mehreren sockets/hosts).
- Caching: Verwenden Sie Memcached oder Redis für Session‑ und MUC‑Caching (Moodle unterstützt beide).
Backups und Wiederherstellung (Kurzspielplan)
- Täglich: mysqldump der Moodle‑Datenbank + rsync/Archiv des moodledata.
- Wöchentlich: Volles Backup der Codebasis + Datenbanken.
- Testen Sie Wiederherstellungen in einer Staging‑Umgebung monatlich.
Alternativen und Abwägungen
- Webserver: Apache mit mod_php oder php‑fpm ist eine Alternative zu Nginx; Apache bietet .htaccess‑Kompatibilität, Nginx ist leichter und performant bei statischen Inhalten.
- Datenbank: PostgreSQL ist eine gut unterstützte und robuste Alternative zu MariaDB/MySQL für Moodle.
- PHP‑Version: Neuere Moodle‑Versionen können höhere PHP‑Versionen verlangen (PHP 7.4, 8.x). Prüfen Sie die Moodle‑Dokumentation vor einem Upgrade.
Wann diese Anleitung nicht passt
- Sie betreiben eine sehr große Nutzerbasis (mehrere Zehntausende gleichzeitiger Nutzer): Benötigt horizontale Skalierung, Load Balancer, dedizierte Cache‑Layer und Monitoring.
- Sie nutzen managed Hosting oder PaaS, bei dem Systempakete nicht frei installierbar sind (dann verwendet der Anbieter eigene Prozesse).
- Sie benötigen spezielle Integrationen (LDAP/SSO), die zusätzliche Konfiguration erfordern.
Kompatibilitäts‑ und Migrationshinweise
- Versionen: Moodle 3.2 ist alt; vor einem Upgrade auf eine neuere Moodle‑Version lesen Sie die Upgrading‑Notes der Moodle‑Dokumentation.
- Plugins: Prüfen Sie die Kompatibilität aller Plugins mit der Ziel‑Moodle‑Version.
- Testmigration: Erstellen Sie eine Staging‑Instanz und migrieren Sie Daten dort, bevor Sie die Produktion umstellen.
Rollenbasierte Checkliste
Admin (Inbetriebnahme):
- OS‑Updates durchführen
- Nginx, PHP‑FPM, MariaDB installieren
- SELinux‑Kontexte setzen
- SSL‑Zertifikat installieren
- Moodle‑Datenbank und moodledata anlegen
Operator (Betrieb):
- tägliche Sicherungen prüfen
- Logrotationsregeln implementieren
- Performance‑Metriken (CPU, RAM, DB‑Latenz) überwachen
Sicherheitsverantwortlicher:
- regelmäßige Benutzerbereinigung
- Audit‑Logs prüfen
- Schwachstellen‑Scans planen
SOP / Playbook für Wartungsfenster
- Wartungsfenster ankündigen (E‑Mail + Webseite)
- Read‑only Modus in Moodle aktivieren
- Vollbackup: DB dump + moodledata + Code
- Paketupdates (OS, PHP, Nginx)
- Moodle‑Upgrade/Plugin‑Updates durchführen
- Tests: Anmelden, Kurszugriff, Datei Upload
- Monitoring prüfen, Read‑only Modus entfernen
Akzeptanzkriterien
- Moodle‑Startseite lädt fehlerfrei über HTTPS
- Admin‑Login funktioniert
- Kurs anlegen und Dateiupload funktionieren
- Cronjob läuft (site admin → Scheduled tasks)
- Backups sind vorhanden und Wiederherstellung getestet
Mini‑Methodologie: Schnelle Fehlerdiagnose
- Prüfen Sie Nginx‑ und PHP‑FPM‑Logs (/var/log/nginx/, /var/log/php-fpm/)
- Prüfen Sie MariaDB‑Logs (/var/log/mariadb/)
- Prüfen Sie SELinux‑AVCs (ausearch, audit.log)
- Replizieren Sie das Problem mit curl -I https://your.domain
Faktenbox: Wichtige Pfade und Befehle
- Webroot: /var/www/moodle
- Moodle data: /var/moodledata
- PHP‑FPM socket: /run/php-fpm/php-fpm.sock
- MariaDB Standardport: 3306
- Nginx Konfig: /etc/nginx/conf.d/moodle.conf
Kurzankündigung (100–200 Wörter)
Wir haben erfolgreich Moodle 3.2 auf CentOS 7 mit Nginx, PHP‑FPM 7.0 und MariaDB installiert. Die Anleitung umfasst die komplette Einrichtung: Webserver, PHP, Datenbank, SSL, SELinux‑Kontexte und Firewalld‑Regeln. Zusätzlich erhalten Sie Sicherheits‑ und Performance‑Tipps, Checklisten für Admins und Betreiber sowie ein kleines Playbook für Wartungsfenster. Diese Basisinstallation eignet sich für kleine bis mittlere Installationen; für größere Umgebungen werden zusätzliche Skalierungs‑ und Monitoringmaßnahmen empfohlen. Ersetzen Sie bitte die Beispielpasswörter durch sichere Werte und nutzen Sie ein offizielles TLS‑Zertifikat in Produktionsumgebungen.
Social‑Preview Vorschläge
OG Title: Moodle 3.2 auf CentOS 7 mit Nginx & MariaDB installieren OG Description: Schritt‑für‑Schritt‑Guide zur Einrichtung von Moodle 3.2 mit SSL, SELinux und Sicherheits‑Checklisten.
Zusammenfassung
- Mit dieser Anleitung richten Sie eine funktionale Moodle‑Instanz unter CentOS 7 ein.
- Achten Sie auf sichere Passwörter, offizielle TLS‑Zertifikate und regelmäßige Backups.
- Für Produktionsumgebungen prüfen Sie Skalierung, Monitoring und regelmäßige Updates.
Referenz
Ähnliche Materialien

Einstellungen-Icon im Startmenü wiederherstellen

Scrollleisten in Windows 10 & 11 anpassen

Automatische Sicherheitsupdates für Ubuntu 16.04

Android-App-Berechtigungen einschränken

Chef-Server auf Ubuntu 17.04 installieren
