So installieren Sie Moodle mit Nginx und Let’s Encrypt SSL auf Ubuntu 20.04

Moodle ist ein freies und quelloffenes Learning Management System, das in PHP geschrieben ist. Es bietet Tutoren und Lehrkräften eine Möglichkeit, Kurse für ihre Studenten oder Lernenden zu erstellen. Moodle bietet ein robustes und sicheres integriertes System und kommt mit einem benutzerdefinierten Dashboard, das den Benutzern hilft, auf aktuelle, vergangene oder zukünftige Kurse zuzugreifen und anstehende Arbeiten zu überprüfen. Es wird von vielen Schulen, Universitäten und Organisationen auf der ganzen Welt verwendet und bietet eine bessere Lernerfahrung. Es bietet eine Vielzahl von Funktionen, wie z. B. Wiki, Benotung, Abgabe von Aufgaben, Online-Quiz, Diskussionsforen und vieles mehr.

In diesem Tutorial zeigen wir Ihnen, wie Sie Moodle mit dem Webserver Nginx und Let’s Encrypt SSL auf Ubuntu 20.04 installieren.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein gültiger Domain-Name, der auf die IP des Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie Ihre Systempakete auf die neueste Version aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald Ihr Server aktualisiert ist, können Sie mit dem nächsten Schritt fortfahren.

LEMP installieren

Zuerst müssen Sie Apache, MariaDB, PHP und andere PHP-Bibliotheken auf Ihrem System installieren. Sie können sie alle mit dem folgenden Befehl installieren:

apt-get install nginx mariadb-server php-fpm php-common php-mysql php-gmp php-curl php-intl php-mbstring php-soap php-xmlrpc php-gd php-xml php-cli php-zip unzip git curl -y

Sobald alle Pakete installiert sind, bearbeiten Sie die Datei php.ini und ändern Sie einige Einstellungen:

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

Ändern Sie die folgenden Zeilen:

memory_limit = 256M
cgi.fix_pathinfo = 0
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Chicago

Speichern und schließen Sie die Datei und starten Sie den PHP-FPM-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart php7.4-fpm

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Erstellen einer Datenbank

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

Verbinden Sie sich zunächst mit der MySQL-Shell mit folgendem Befehl:

mysql

Nach der Anmeldung erstellen Sie eine Datenbank und einen Benutzer mit dem folgenden Befehl:

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

Als nächstes erteilen Sie der Moodle-Datenbank alle Rechte mit folgendem Befehl:

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

Anschließend löschen Sie die Rechte und verlassen die MySQL-Shell mit folgendem Befehl:

FLUSH PRIVILEGES;
EXIT;

Bearbeiten Sie als nächstes die MariaDB-Standardkonfigurationsdatei und definieren Sie das innodb_file_format:

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

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

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

Speichern Sie die Datei und starten Sie den MariaDB-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart mariadb

Moodle installieren

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

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

Sobald der Download abgeschlossen ist, bearbeiten Sie die Moodle config.php und definieren Sie den Datenbanktyp:

nano /var/www/html/moodle/config.php

Suchen Sie die folgende Zeile:

$CFG->dbtype    = 'mysqli';

Und ersetzen Sie sie durch die folgende Zeile:

$CFG->dbtype    = 'mariadb';

Speichern und schließen Sie die Datei und legen Sie dann ein Moodle-Datenverzeichnis an, indem Sie mit folgendem Befehl die richtigen Eigentümer und Rechte setzen:

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 Sie damit fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Nginx für Moodle konfigurieren

Als nächstes müssen Sie eine Konfigurationsdatei für den virtuellen Nginx-Host erstellen, um Moodle zu hosten:

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

Fügen Sie die folgenden Zeilen ein:

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;
    }
}

Speichern und schließen Sie die Datei und überprüfen Sie dann Nginx mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Sie sollten 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

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

systemctl restart nginx

An diesem Punkt ist Nginx für den Betrieb von Moodle konfiguriert. Sie können nun mit dem nächsten Schritt fortfahren.

Zugriff auf die Moodle-Web-Oberfläche

Öffnen Sie nun Ihren Webbrowser und rufen Sie die Moodle-Web-Oberfläche über die URL http://moodle.example.com auf. Sie sollten die Moodle-Installationsseite sehen:

Sprache wählen

Wählen Sie Ihre Sprache und klicken Sie auf “ Weiter“. Sie sollten die folgende Seite sehen:

Webadresse und Pfad

Geben Sie Ihre Moodle-Webadresse, den Verzeichnispfad und den Datenverzeichnispfad an und klicken Sie auf Weiter. Sie sollten die folgende Seite sehen:

Datenbank-Treiber

Wählen Sie Ihren Datenbanktreiber-Typ aus und klicken Sie auf die Schaltfläche Weiter. Sie sollten die folgende Seite sehen:

MySQL-Details

Geben Sie den Datenbank-Host, den Datenbanknamen, den Benutzernamen und das Passwort an und klicken Sie auf “ Weiter“. Sie sollten die folgende Seite sehen:

Bestätigen Sie die Installation

Klicken Sie auf die Schaltfläche Weiter, um alle Bedingungen zu bestätigen. Sie sollten die folgende Seite sehen:

Systemprüfung

Vergewissern Sie sich, dass alle erforderlichen PHP-Erweiterungen installiert sind, und klicken Sie dann auf die Schaltfläche Weiter. Sie sollten die folgende Seite sehen:

PHP-Erweiterungsprüfung

Klicken Sie auf die Schaltfläche Fortfahren. Sie sollten die folgende Seite sehen:

Benutzernamen und Passwort festlegen

Ländereinstellungen wählen

Geben Sie Ihren Admin-Benutzernamen, Ihr Passwort, Ihre E-Mail-Adresse, Ihr Land und Ihre Zeitzone ein und klicken Sie auf Profil aktualisieren. Sie sollten die folgende Seite sehen:

Einstellungen für die Startseite

Geben Sie Ihre Einstellungen für die Startseite ein und klicken Sie auf die Schaltfläche Änderungen speichern, um die Änderungen zu speichern.

Moodle mit Let’s Encrypt SSL sichern

Als nächstes müssen Sie das Certbot-Tool installieren, um Let’s Encrypt SSL herunterzuladen und Nginx für die Verwendung dieses SSL zu konfigurieren.

Installieren Sie zunächst Certbot mit dem folgenden Befehl:

apt-get install python3-certbot-nginx -y

Nach der Installation führen Sie den folgenden Befehl aus, um alle SSL herunterzuladen und Nginx für deren Verwendung zu konfigurieren:

certbot --nginx -d moodle.example.com

Sie werden aufgefordert, eine gültige E-Mail-Adresse anzugeben und die Nutzungsbedingungen wie unten gezeigt zu akzeptieren:

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

Wählen Sie als Nächstes, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht, wie unten gezeigt:

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

Geben Sie 2 ein und drücken Sie die Eingabetaste, um fortzufahren. Sie sollten 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 2021-05-23. 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.

Sie können nun über die URL http://moodle.example.comauf die Moodle-Website zugreifen.

Fazit

Herzlichen Glückwunsch! Sie haben Moodle mit Nginx und Let’s Encrypt SSL erfolgreich auf Ubuntu 20.04 installiert. Sie können nun ganz einfach Ihr eigenes Learning Management System mit Moodle erstellen.

Das könnte dich auch interessieren …