Moodle est un système de gestion de l'apprentissage gratuit et open-source écrit en PHP. Il permet aux tuteurs et aux instructeurs de créer des cours pour leurs étudiants ou apprenants. Moodle fournit un système intégré robuste et sécurisé et est livré avec un tableau de bord personnalisé qui aide les utilisateurs à accéder aux cours actuels, passés ou futurs, ainsi qu'à revoir les travaux en attente. Il est utilisé par de nombreuses écoles, universités et organisations à travers le monde et offre une meilleure expérience d'apprentissage. Il fournit un riche ensemble de fonctionnalités, notamment un wiki, la notation, la soumission de devoirs, des quiz en ligne, des forums de discussion, etc.
Dans ce tutoriel, nous allons vous montrer comment installer Moodle avec le serveur Web Nginx et Let's Encrypt SSL sur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Avant de commencer, vous devrez mettre à jour vos packages système vers la dernière version. Vous pouvez les mettre à jour à l'aide de la commande suivante :
apt-get update -y
Une fois votre serveur mis à jour, vous pouvez passer à l'étape suivante.
Installer LEMP
Tout d'abord, vous devrez installer Apache, MariaDB, PHP et d'autres bibliothèques PHP sur votre système. Vous pouvez tous les installer à l'aide de la commande suivante :
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
Une fois tous les packages installés, éditez le fichier php.ini et modifiez certains paramètres :
nano /etc/php/7.4/fpm/php.ini
Modifiez les lignes suivantes :
memory_limit = 256M cgi.fix_pathinfo = 0 upload_max_filesize = 100M max_execution_time = 360 date.timezone = America/Chicago
Enregistrez et fermez le fichier puis redémarrez le service PHP-FPM pour appliquer les modifications :
systemctl restart php7.4-fpm
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Créer une base de données
Moodle utilise MySQL ou MariaDB comme backend de base de données, vous devrez donc créer une base de données et un utilisateur pour Moodle.
Tout d'abord, connectez-vous au shell MySQL avec la commande suivante :
mysql
Une fois connecté, créez une base de données et un utilisateur avec la commande suivante :
CREATE DATABASE moodledb;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';
Ensuite, accordez 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, videz les privilèges et quittez MySQL avec la commande suivante :
FLUSH PRIVILEGES;
EXIT;
Ensuite, éditez le fichier de configuration par défaut de MariaDB et définissez le innodb_file_format :
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ajoutez les lignes suivantes dans la section [mysqld] :
[mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix = ON
Enregistrez le fichier puis redémarrez le service MariaDB pour appliquer les modifications :
systemctl restart mariadb
Installer Moodle
Tout d'abord, changez le répertoire vers le répertoire racine d'Apache et téléchargez la dernière version de Moodle avec la commande suivante :
cd /var/www/html
git clone -b MOODLE_38_STABLE git://git.moodle.org/moodle.git moodle
Une fois le téléchargement terminé, éditez le fichier config.php de Moodle et définissez le type de base de données :
nano /var/www/html/moodle/config.php
Recherchez la ligne suivante :
$CFG->dbtype = 'mysqli';
Et, remplacé par la ligne suivante :
$CFG->dbtype = 'mariadb';
Enregistrez et fermez le fichier, puis créez un répertoire de données Moodle, définissez la propriété et les autorisations appropriées avec la commande suivante :
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 vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Nginx pour Moodle
Ensuite, vous devrez créer un fichier de configuration d'hôte virtuel Nginx pour héberger Moodle :
nano /etc/nginx/conf.d/moodle.conf
Ajoutez 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; } }
Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Vous devriez obtenir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
À ce stade, Nginx est configuré pour héberger Moodle. Vous pouvez maintenant passer à l'étape suivante.
Accéder à l'interface Web Moodle
Maintenant, ouvrez votre navigateur Web et accédez à l'interface Web de Moodle en utilisant l'URL http://moodle.example.com . Vous devriez voir la page d'installation de Moodle :
Sélectionnez votre langue et cliquez sur Suivant . Vous devriez voir la page suivante :
Fournissez votre adresse Web Moodle, le chemin du répertoire, le chemin du répertoire de données et cliquez sur Suivant . Vous devriez voir la page suivante :
Sélectionnez votre type de pilote de base de données et cliquez sur Suivant . Vous devriez voir la page suivante :
Indiquez votre hébergeur de base de données, le nom de la base de données, le nom d'utilisateur, le mot de passe et cliquez sur Suivant . Vous devriez voir la page suivante :
Cliquez sur Continuer pour confirmer toutes les conditions. Vous devriez voir la page suivante :
Assurez-vous que toutes les extensions PHP requises sont installées, puis cliquez sur Continuer . Vous devriez voir la page suivante :
Cliquez sur Continuer . Vous devriez voir la page suivante :
Indiquez votre nom d'utilisateur, votre mot de passe, votre adresse e-mail, votre pays, votre fuseau horaire et cliquez sur Mettre à jour profil. Vous devriez voir la page suivante :
Fournissez vos paramètres de page d'accueil et cliquez sur Enregistrer modifications bouton pour enregistrer les modifications.
Sécuriser Moodle avec Let's Encrypt SSL
Ensuite, vous devrez installer l'outil Certbot pour télécharger Let's Encrypt SSL et configurer Nginx pour utiliser ce SSL.
Tout d'abord, installez le Certbot avec la commande suivante :
apt-get install python3-certbot-nginx -y
Une fois installé, exécutez la commande suivante pour télécharger tout SSL et configurer Nginx pour l'utiliser :
certbot --nginx -d moodle.example.com
Il vous sera demandé de fournir une adresse e-mail valide et d'accepter les conditions d'utilisation 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, choisissez 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
Tapez 2 et appuyez sur Entrée pour continuer. Vous devriez 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 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.
Vous pouvez maintenant accéder au site Web de Moodle en utilisant l'URL http://moodle.example.com
Conclusion
Toutes nos félicitations! vous avez installé avec succès Moodle avec Nginx et Let's Encrypt SSL sur Ubuntu 20.04. Vous pouvez désormais créer facilement votre propre système de gestion de l'apprentissage avec Moodle.