Unter Proxmox wurde eine VM mit Debian 12 aufgesetzt. Es existiert ein SSH-Zugang für einen User mit Sudo-Rechten. Auf dieser VM soll nun Moodle aus einem Archiv des Herstellers installiert werden. Es fehlt der Apache Webserver, eine MariaDB-Datenbank und PHP mit den für Moodle notwendigen Erweiterungen. Moodle soll nach der Installation über einen externen Nginx Proxy Manager erreicht werden. Dieser stellt die notwendigen SSL-Zertifikate bereit. Die folgende Anleitung beschreibt detailliert die notwendigen Schritte für die Installation und die notwendigen Anpassungen an php.ini und config.php.
Systemvorbereitungen
System aktualisieren
1
| sudo apt update && sudo apt upgrade -y
|
1
| sudo apt install -y wget unzip
|
Installation Apache, MariaDB und PHP
Apache installieren
1
| sudo apt install -y apache2
|
MariaDB installieren
1
| sudo apt install -y mariadb-server
|
PHP 8.1 und erforderliche Erweiterungen (Debian 12 standardmäßig mit PHP 8.2)
1
| sudo apt install -y php libapache2-mod-php php-mysql php-curl php-zip php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-opcache php-bcmath php-ldap
|
MariaDB konfigurieren
MariaDB absichern (interaktiv)
1
| sudo mysql_secure_installation
|
Datenbank und Benutzer für Moodle erstellen
1
2
3
4
5
| CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'SicheresPasswort';
GRANT ALL PRIVILEGES ON moodle.* TO 'moodleuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
|
PHP-Einstellungen anpassen
php.ini bearbeiten (Apache-Version)
1
| sudo nano /etc/php/8.2/apache2/php.ini
|
1
2
3
4
5
6
7
8
9
| memory_limit = 256M
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300
max_input_vars = 5000
date.timezone = Europe/Berlin # Anpassen an Ihre Zeitzone
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
|
1
| sudo systemctl restart apache2
|
Moodle installieren
1
2
3
4
5
6
7
8
9
| # Moodle herunterladen (aktuellste Version von https://download.moodle.org/)
cd /tmp
wget https://download.moodle.org/download.php/direct/stable402/moodle-latest-402.zip
unzip moodle-latest-402.zip
# Moodle ins Web-Verzeichnis kopieren
sudo mv moodle /var/www/html/
sudo mkdir /var/www/moodledata # Datenverzeichnis
sudo chown -R www-data:www-data /var/www/html/moodle /var/www/moodledata
|
Apache Virtual Host konfigurieren
1
| sudo nano /etc/apache2/sites-available/moodle.conf
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| <VirtualHost *:80>
ServerName moodle.example.com
DocumentRoot /var/www/html/moodle
<Directory /var/www/html/moodle>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/moodle_error.log
CustomLog ${APACHE_LOG_DIR}/moodle_access.log combined
</VirtualHost>
|
1
2
3
| sudo a2ensite moodle.conf
sudo a2enmod rewrite
sudo systemctl reload apache2
|
Moodle-Webinstaller ausführen
- Browser öffnen: [http://VM-IP/moodle]
- Folge dem Installationsassistent
- Datenverzeichnis: /var/www/moodledata
- Datenbanktyp: MariaDB
- Datenbankhost: localhost
- Datenbankname: moodle
- Datenbankbenutzer: moodleuser
- Datenbankpasswort: SicheresPasswort
Moodle-Konfiguration anpassen
A. config.php (wird automatisch generiert, prüfen Sie folgende Werte):
1
2
3
4
| $CFG->wwwroot = 'https://moodle.example.com'; # Externe HTTPS-URL
$CFG->dataroot = '/var/www/moodledata';
$CFG->directorypermissions = 0777;
$CFG->sslproxy = true; # Wichtig für Reverse-Proxy mit SSL
|
B. Reverse-Proxy-Einstellungen (falls erforderlich in config.php):
1
2
| $CFG->reverseproxy = true;
$CFG->xsendfile = 'X-Accel-Redirect'; # Für Nginx Proxy Manager
|
Cron-Job einrichten
1
| sudo crontab -u www-data -e
|
Folgende Zeile hinzufügen:
1
| */5 * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php > /dev/null
|
Abschließende Sicherheit
1
2
3
4
5
| # Konfigurationsdatei schützen
sudo chmod 440 /var/www/html/moodle/config.php
# Firewall (falls aktiviert)
sudo ufw allow 80/tcp
|