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:
Wählen Sie Ihre Sprache und klicken Sie auf “ Weiter“. Sie sollten die folgende Seite sehen:
Geben Sie Ihre Moodle-Webadresse, den Verzeichnispfad und den Datenverzeichnispfad an und klicken Sie auf Weiter. Sie sollten die folgende Seite sehen:
Wählen Sie Ihren Datenbanktreiber-Typ aus und klicken Sie auf die Schaltfläche Weiter. Sie sollten die folgende Seite sehen:
Geben Sie den Datenbank-Host, den Datenbanknamen, den Benutzernamen und das Passwort an und klicken Sie auf “ Weiter“. Sie sollten die folgende Seite sehen:
Klicken Sie auf die Schaltfläche Weiter, um alle Bedingungen zu bestätigen. Sie sollten die folgende Seite sehen:
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:
Klicken Sie auf die Schaltfläche Fortfahren. Sie sollten die folgende Seite sehen:
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:
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.