Comment installer Moodle avec Nginx et Let’s Encrypt SSL gratuit sur Ubuntu 22.04

Moodle est un système de gestion de l’apprentissage et un CMS gratuit et open-source écrit en PHP. Il permet aux tuteurs et aux instructeurs de créer des cours pour leurs élèves et rend plus accessibles les formations à distance et autres programmes d’apprentissage en ligne. Moodle offre un tableau de bord simple, convivial et personnalisé qui aide les utilisateurs à accéder aux cours actuels, passés ou futurs et à revoir les travaux en attente. Il est conçu pour les enseignants et les éducateurs qui ont pour objectif de dispenser un enseignement adapté à la technologie.

Ce tutoriel te montrera comment installer Moodle avec Nginx et Let’s Encrypt SSL sur Ubuntu 22.04.

Conditions préalables

  • Un serveur exécutant Ubuntu 22.04.
  • Un nom de domaine valide pointé avec l’IP de ton serveur.
  • Un mot de passe root est configuré sur le serveur.

Pour commencer

Tout d’abord, tu dois mettre à jour tes paquets système à la dernière version. Tu peux tous les mettre à jour en exécutant la commande suivante :

apt-get update -y

Une fois que ton serveur est mis à jour, tu peux passer à l’étape suivante.

Installe Nginx, MariaDB et PHP

Avant de commencer, tu dois installer Apache, MariaDB, PHP et d’autres bibliothèques PHP sur ton système. Tout d’abord, installe le serveur Apache et MariaDB à l’aide de la commande suivante :

apt-get install nginx mariadb-server -y

Par défaut, Ubuntu 22.04 est livré avec la version PHP 8.1, et Moodle ne prend pas en charge cette version de PHP. Tu devras donc installer PHP 7.4 sur ton serveur.

Tout d’abord, installe toutes les dépendances requises à l’aide de la commande suivante :

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

Ensuite, ajoute le référentiel PHP à ton serveur à l’aide de la commande suivante :

add-apt-repository ppa:ondrej/php

Ensuite, mets à jour le référentiel à l’aide de la commande suivante :

apt update

Une fois le référentiel mis à jour, installe PHP avec les autres extensions requises à l’aide de la commande suivante :

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

Une fois que tous les paquets sont installés, édite le fichier php.ini et modifie certains paramètres :

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

Change les lignes suivantes :

memory_limit = 256M
max_input_vars = 6000

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

Enregistre et ferme le fichier, puis redémarre le service PHP-FPM pour appliquer les modifications :

systemctl restart php7.4-fpm

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Crée une base de données pour Moodle

Moodle utilise MySQL ou MariaDB comme backend de base de données, tu devras donc créer une base de données et un utilisateur pour Moodle.

Tout d’abord, connecte-toi au shell MySQL avec la commande suivante :

mysql

Une fois connecté, crée une base de données et un utilisateur avec la commande suivante :

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

Ensuite, accorde tous les privilèges à la base de données Moodle avec la commande suivante :

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

Ensuite, annule les privilèges et quitte MySQL avec la commande suivante: :

FLUSH PRIVILEGES;
EXIT;

Ensuite, modifie le fichier de configuration par défaut de MariaDB et définis le format innodb_file_format :

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

Ajoute les lignes suivantes dans la section [mysqld] :

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

Enregistre le fichier, puis redémarre le service MariaDB pour appliquer les modifications :

systemctl restart mariadb

Installer Moodle sur Ubuntu 22.04

Tout d’abord, change le répertoire pour le répertoire racine d’Apache et télécharge la dernière version de Moodle avec la commande suivante :

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

Ensuite, définis les autorisations et les droits de propriété appropriés pour Moodle :

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

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configure Nginx pour Moodle

Ensuite, tu devras créer un fichier de configuration d’hôte virtuel Nginx pour héberger Moodle :

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

Ajoute les lignes suivantes :

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

Enregistre et ferme le fichier, puis vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Tu devrais obtenir la sortie suivante :

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

Enfin, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

Tu peux aussi vérifier l’état du service Nginx à l’aide de la commande suivante :

systemctl status nginx

Tu devrais voir la sortie suivante :

? 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.

À ce stade, Nginx est configuré pour héberger Moodle. Tu peux maintenant passer à l’étape suivante.

Accède à l’interface Web de Moodle

Maintenant, ouvre ton navigateur Web et accède à l’interface Web de Moodle en utilisant l’URL http://moodle.example.com. Tu devrais voir la page d’installation de Moodle :

Choisis la langue

Sélectionne ta langue et clique sur Suivant. Tu devrais voir la page suivante :

Chemin d'installation

Indique ton adresse Web Moodle, le chemin du répertoire, le chemin du répertoire de données et clique sur Suivant. Tu devrais voir la page suivante :

pilote de base de données

Sélectionne ton type de pilote de base de données et clique sur Suivant. Tu devrais voir la page suivante :

Paramètres de la base de données

Indique ton hôte de base de données, le nom de la base de données, le nom d’utilisateur, le mot de passe et clique sur Suivant. Tu devrais voir la page suivante :

Lance l'installation de Moodle

Clique sur le bouton Continuer pour confirmer toutes les conditions. Tu devrais voir la page suivante :

Vérifications de l'installation

Assure-toi que toutes les extensions PHP requises sont installées, puis clique sur Continuer. Tu devrais voir la page suivante :

Installation de Moodle réussie

Clique sur le bouton Continuer. Tu devrais voir la page suivante :

Paramètres généraux

Plate-forme d'apprentissage Moodle

Indique ton nom d’utilisateur admin, ton mot de passe, ton e-mail, ton pays, ton fuseau horaire et clique sur le bouton Mettre à jour le profil. Tu devrais voir la page suivante :

Paramètres du site

Emplacement et fuseau horaire

Indique les paramètres de ta page d’accueil et clique sur le bouton Enregistrer les modifications pour sauvegarder les changements.

Sécurise Moodle avec Let’s Encrypt SSL

Ensuite, tu devras installer l’outil Certbot pour télécharger Let’s Encrypt SSL et configurer Nginx pour utiliser ce SSL.

Tout d’abord, installe l’outil Certbot avec la commande suivante :

apt-get install python3-certbot-nginx -y

Une fois installé, exécute la commande suivante pour télécharger tout le SSL et configurer Nginx pour l’utiliser :

certbot --nginx -d moodle.example.com

Il te sera demandé de fournir une adresse e-mail valide et d’accepter les conditions de service comme indiqué ci-dessous :

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): [email protected]

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

Ensuite, choisis de rediriger ou non le trafic HTTP vers HTTPS comme indiqué ci-dessous :

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

Tape 2 et appuie sur Entrée pour continuer. Tu devrais voir le résultat suivant :

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.

Tu peux maintenant accéder au site Web de Moodle en utilisant l’URL http://moodle.example.com.

Conclusion

Félicitations ! Tu as réussi à installer Moodle avec Nginx et Let’s Encrypt SSL sur Ubuntu 22.04. Tu peux maintenant explorer les fonctionnalités de Moodle et créer facilement ton propre système de gestion de l’apprentissage en ligne. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...