So installierst du Moodle mit Nginx und kostenlosem Let’s Encrypt SSL auf Ubuntu 22.04

Moodle ist ein kostenloses und quelloffenes Learning Management System und CMS, das in PHP geschrieben wurde. Es ermöglicht Tutoren und Lehrkräften, Kurse für ihre Schüler zu erstellen und macht Fernunterricht und andere Online-Lernprogramme leichter zugänglich. Moodle bietet ein einfaches, benutzerfreundliches und individuelles Dashboard, mit dem die Nutzer/innen auf aktuelle, vergangene oder zukünftige Kurse zugreifen und ausstehende Arbeiten überprüfen können. Es wurde für Lehrkräfte und Pädagogen entwickelt, die einen technologieorientierten Unterricht anbieten wollen.

Diese Anleitung zeigt dir, wie du Moodle mit Nginx und Let’s Encrypt SSL auf Ubuntu 22.04 installierst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erste Schritte

Zuerst musst du deine Systempakete auf die neueste Version aktualisieren. Du kannst alle Pakete aktualisieren, indem du den folgenden Befehl ausführst:

apt-get update -y

Sobald dein Server aktualisiert ist, kannst du mit dem nächsten Schritt fortfahren.

Nginx, MariaDB und PHP installieren

Bevor du beginnst, musst du Apache, MariaDB, PHP und andere PHP-Bibliotheken auf deinem System installieren. Installiere zunächst den Apache- und MariaDB-Server mit dem folgenden Befehl:

apt-get install nginx mariadb-server -y

Ubuntu 22.04 wird standardmäßig mit der Version PHP 8.1 ausgeliefert, und Moodle unterstützt diese PHP-Version nicht. Daher musst du PHP 7.4 auf deinem Server installieren.

Installiere zunächst alle erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt install software-properties-common ca-certificates lsb-release apt-transport-https -y

Als Nächstes fügst du das PHP-Repository mit dem folgenden Befehl zu deinem Server hinzu:

add-apt-repository ppa:ondrej/php

Als Nächstes aktualisierst du das Repository mit dem folgenden Befehl:

apt update

Sobald das Repository aktualisiert ist, installierst du PHP und die anderen benötigten Erweiterungen mit dem folgenden Befehl:

apt install php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-soap php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip unzip git curl -y

Sobald alle Pakete installiert sind, bearbeite die Datei php.ini und ändere einige Einstellungen:

nano /etc/php/7.4/fpm/php.ini

Ändere die folgenden Zeilen:

memory_limit = 256M
max_input_vars = 6000

cgi.fix_pathinfo = 0
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = UTC

Speichere und schließe die Datei und starte dann den PHP-FPM-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart php7.4-fpm

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Erstelle eine Datenbank für Moodle

Moodle verwendet MySQL oder MariaDB als Datenbank-Backend, daher musst du eine Datenbank und einen Benutzer für Moodle anlegen.

Verbinde dich zunächst mit der MySQL-Shell mit dem folgenden Befehl:

mysql

Sobald du eingeloggt bist, erstelle eine Datenbank und einen Benutzer mit dem folgenden Befehl:

CREATE DATABASE moodledb;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';

Als Nächstes erteilst du der Moodle-Datenbank alle Rechte mit dem folgenden Befehl:

GRANT ALL ON moodledb.* TO 'moodle'@'localhost' WITH GRANT OPTION;

Lösche die Berechtigungen und verlasse MySQL mit folgendem Befehl:

FLUSH PRIVILEGES;
EXIT;

Als nächstes bearbeitest du die MariaDB-Standardkonfigurationsdatei und definierst das innodb_file_format:

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

Füge die folgenden Zeilen in den Abschnitt [mysqld] ein:

[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = ON

Speichere die Datei und starte dann den MariaDB-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart mariadb

Moodle auf Ubuntu 22.04 installieren

Wechsle zunächst in das Apache-Root-Verzeichnis und lade die neueste Version von Moodle mit dem folgenden Befehl herunter:

cd /var/www/html
git clone -b MOODLE_400_STABLE git://git.moodle.org/moodle.git moodle

Als Nächstes musst du Moodle die richtigen Rechte und den richtigen Eigentümer zuweisen:

mkdir -p /var/www/html/moodledata
chown -R www-data:www-data /var/www/html/moodle
chmod -R 755 /var/www/html/*
chown www-data:www-data /var/www/html/moodledata

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Nginx für Moodle konfigurieren

Als Nächstes musst du eine Konfigurationsdatei für den virtuellen Nginx-Host erstellen, um Moodle zu hosten:

nano /etc/nginx/conf.d/moodle.conf

Füge die folgenden Zeilen hinzu:

server {
    listen 80;
    root /var/www/html/moodle;
    index  index.php index.html index.htm;
    server_name  moodle.example.com;

    client_max_body_size 100M;
    autoindex off;
    location / {
        try_files $uri $uri/ =404;
    }

    location /dataroot/ {
      internal;
      alias /var/www/html/moodledata/;
    }

    location ~ [^/].php(/|$) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Speichere und schließe die Datei und überprüfe dann Nginx mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Du solltest die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Du kannst den Status des Nginx-Dienstes auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe sehen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-18 07:08:50 UTC; 26s ago
       Docs: man:nginx(8)
    Process: 51379 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 51382 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 51383 (nginx)
      Tasks: 3 (limit: 4579)
     Memory: 3.6M
        CPU: 64ms
     CGroup: /system.slice/nginx.service
             ??51383 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??51384 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??51385 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Jul 18 07:08:50 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 18 07:08:50 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

Jetzt ist Nginx so konfiguriert, dass Moodle darauf läuft. Du kannst jetzt mit dem nächsten Schritt fortfahren.

Zugriff auf die Moodle-Weboberfläche

Öffne nun deinen Webbrowser und rufe die Moodle-Weboberfläche über die URL http://moodle.example.com auf. Du solltest die Moodle-Installationsseite sehen:

Sprache wählen

Wähle deine Sprache und klicke auf Weiter. Du solltest die folgende Seite sehen:

Installationspfad

Gib deine Moodle-Webadresse, den Verzeichnispfad und den Pfad zum Datenverzeichnis an und klicke auf Weiter. Du solltest die folgende Seite sehen:

Datenbanktreiber

Wähle den Typ deines Datenbanktreibers und klicke auf Weiter. Du solltest die folgende Seite sehen:

Datenbank-Einstellungen

Gib den Datenbank-Host, den Datenbanknamen, den Benutzernamen und das Passwort ein und klicke auf Weiter. Du solltest die folgende Seite sehen:

Moodle-Installation starten

Klicke auf Weiter, um alle Bedingungen zu bestätigen. Du solltest die folgende Seite sehen:

Installationsprüfungen

Vergewissere dich, dass alle erforderlichen PHP-Erweiterungen installiert sind, und klicke dann auf Weiter. Du solltest die folgende Seite sehen:

Installation von Moodle erfolgreich

Klicke auf die Schaltfläche Weiter. Du solltest die folgende Seite sehen:

Allgemeine Einstellungen

Moodle Lernplattform

Gib deinen Admin-Benutzernamen, dein Passwort, deine E-Mail-Adresse, dein Land und deine Zeitzone ein und klicke auf Profil aktualisieren. Du solltest die folgende Seite sehen:

Website-Einstellungen

Standort und Zeitzone

Gib deine Einstellungen für die Startseite ein und klicke auf die Schaltfläche Änderungen speichern, um die Änderungen zu speichern.

Moodle mit Let’s Encrypt SSL sichern

Als Nächstes musst du das Tool Certbot installieren, um Let’s Encrypt SSL herunterzuladen und Nginx so zu konfigurieren, dass es dieses SSL verwendet.

Installiere zunächst Certbot mit dem folgenden Befehl:

apt-get install python3-certbot-nginx -y

Nach der Installation führst du den folgenden Befehl aus, um alle SSL herunterzuladen und Nginx für die Verwendung zu konfigurieren:

certbot --nginx -d moodle.example.com

Du wirst aufgefordert, eine gültige E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren (siehe unten):

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): hitjethva@gmail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for moodle.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/moodle.conf

Als Nächstes wählst du aus, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht (siehe unten):

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Gib 2 ein und drücke Enter, um fortzufahren. Du solltest die folgende Ausgabe sehen:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/moodle.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://moodle.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=moodle.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/moodle.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/moodle.example.com/privkey.pem
   Your cert will expire on 2022-10-19. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Du kannst nun die Moodle-Website über die URL http://moodle.example.com aufrufen.

Fazit

Herzlichen Glückwunsch! Du hast Moodle erfolgreich mit Nginx und Let’s Encrypt SSL auf Ubuntu 22.04 installiert. Du kannst jetzt die Funktionen von Moodle erkunden und ganz einfach dein eigenes Online-Lernmanagementsystem erstellen. Wenn du noch Fragen hast, kannst du mich gerne fragen

Das könnte dich auch interessieren …