Debian 9 – Serveur LEMP (Nginx, PHP7.0 FPM & MariaDB) pour Moodle avec Let’s Encrypt

L’idée de l’article, c’est d’installer un serveur web avec une base de données, du PHP7, l’application Moodle et de mettre en place un certificat Let’s Encrypt par dessus.

Je ne traiterai pas de l’installation de Debian 9 ici, uniquement des étapes qui m’ont permis d’arriver au bout de mes peines. De plus, il n’y a que très peu voir aucune sécurité pour le moment, il s’agit d’une étape complémentaire qu’il faut effectuer…


I. Préparation du serveur

Avant de se lancer dans les installations, commençons par mettre à jour notre distribution. Je pars ici d’une Debian 9.4 en « netinst ».

Lorsque toutes les mises à jour sont OK, c’est le moment d’installer les paquets nécessaires pour le serveur web, le serveur SQL et PHP !

J’en profite également pour installer les extensions PHP nécessaires pour le bon fonctionnement de Moodle. Dans tous les cas, s’il vous manque un paquet, l’installeur de Moodle sera en mesure de vous dire approximativement quel est le paquet en cause.

Les services ne sont pas actifs au démarrage du serveur, je les passent donc « enable » pour qu’ils puissent démarrer en même temps que le serveur (en cas de redémarrage machine par exemple) :


II. Préparation de l’applicatif Moodle

Moodle se télécharge comme une application web tel que Nextcloud et bien d’autres – une archive est à récupérer sur le site officiel puis doit être décompressée sur votre serveur. Lors de la saisie de cet article, Moodle est en version 3.4 stable.

Pour les patchs français, vous pouvez télécharger cette archive officielle :

Décompressez l’archive et copiez tout le contenu à la racine du dossier /var/www/ – un dossier dans /opt/ est créé pour permettre l’ajout d’extensions à Moodle, le serveur web devra pouvoir y accéder :


III. Configuration du serveur web et du serveur SQL

Maintenant que l’application est à sa place, il faut configurer le serveur web pour qu’il puisse nous diriger sur Moodle et interpréter les fichiers PHP. Je suis parti de la configuration par défaut d’un « host » nginx pour pouvoir y apporter le nécessaire pour Moodle. Je supprime aussi la configuration qui est active par défaut sur nginx, puisque nous n’en avons pas besoin.

Plutôt que faire des « copier/coller » dans tous les dossiers et devoir maintenir plusieurs fichiers, je crée un lien symbolique entre le dossier « sites-available » et le dossier « sites-enabled » (nginx ne lira et interpretera que les configurations dans le dossier « sites-enabled ») :

Enfin, nous pouvons modifier la configuration de notre « host moodle » – vous trouverez ci-dessous ma configuration « basique » pour un Moodle fonctionnel lors du « first-use » :
Contenu du fichier de configuration :

N’oubliez pas de recharger la configuration de votre serveur web, via un « systemctl reload nginx« .

Le serveur web étant prêt, il convient de préparer ensuite le serveur SQL. Pour se faire, lancez la configuration via la commande ci-dessous :

L’assistant de configuration vous aidera à avoir au plus vite une configuration « fiable » de votre serveur SQL. De plus, vous pourrez (vous devez !) mettre un mot de passe fort pour l’utilisateur « root ».


Avant de se lancer dans l’interface Moodle, il faut encore créer une base de données et y faire des « tweaks ». Sans cette phase, vous ne pourrez pas utiliser Moodle.
Connectez-vous sur votre serveur SQL, en tant qu’utilisateur « root » (mysql -u root -p)- nous allons alors créer une base de données et un utilisateur pour cette base de données, comme ci-dessous :

Par la suite, la « BDD » :

Vous noterez qu’il y a plusieurs commandes passées pour l’installation : les lignes « SET GLOBAL… » sont nécessaires pour le bon fonctionnement de l’application Moodle. La base de données doit être optimisée pour être pleinement exploitable.

Enfin, l’utilisateur qui a été créé doit avoir les droits nécessaires pour exploiter la base de données et ainsi permettre à Moodle d’être utilisable.


IV. Lancement de l’installation de Moodle

Votre serveur est enfin prêt à permettre l’exploitation de Moodle ! Ouvrez une page web, puis saisissez l’adresse de votre serveur pour accéder à Moodle – une page web comme ci-dessous doit alors s’ouvrir :

Choississez la langue d’installation et d’utilisation de Moodle (cette langue peut être changée par la suite), puis cliquez sur le bouton « Suivant ». Si des paquets PHP sont manquants, l’assistant saura vous le dire. Vous ne pourrez pas passer outre l’installation tant que certaines dépendances critiques n’ont pas été satisfaites.

Des informations complémentaires seront fournies quant à l’installation, notamment les chemins d’accès – utile à savoir en cas de maintenance sur votre Moodle.

Choix important pour l’application, le type de serveur SQL exploité. Ne vous trompez pas dans le choix, sans quoi votre application pourrait être inexploitable ! Dans le cas ici d’un serveur « LEMP », choisissez le type « MariaDB ».

La fenêtre suivante vous demande les informations relatives à la base de données MariaDB – il s’agit des commandes passées plus haut, où vous avez créer un utilisateur et son mot de passe. Remplissez les champs comme il se doit.
Le port de la base de données et le socket Unix peuvent être laissés vides.

Un récapitulatif complet de votre installation sera alors présenté – selon le statut à droite, vous pourrez avancer ou pas dans l’installation. Un statut en état « Vérifier » ne vous permettra pas de continuer – il faut régler le problème avant d’aller plus loin.

Tous les modules par défaut de Moodle s’installeront, automatiquement. La liste est assez importante, attendez-vous donc à avoir un petit temps d’attente lors du chargement de la page web.

A la fin de cette étape, Moodle est installé ! Vous vous retrouverez sur la page d’accueil de l’application, pour modifier les options associées au compte « Administrateur ».


V. Passer Moodle en HTTPS sous Let’s Encrypt

Let’s Encrypt « s’installe » via l’outil « Certbot ». Sous Debian 9, un « apt install » suffit à faire tourner la machine.

Des paquets Python vont être installés pour exploiter Certbot. L’utilitaire est ainsi installé en même temps que les outils Python. Nous allons dès maintenant exploiter Certbot pour générer une paire de clé, un certificat et en même temps effectuer la configuration HTTPS nécessaire pour Nginx (sous certaines conditions).

PS : Les commandes de cette partie HTTPS sont tirées directement du site web Certbot à cette adresse.

Avec cette commande ci dessus, un certificat va être généré et mis dans le dossier « /etc/letsencrypt/live/nom_de_domaine« . C’est dans ce dossier que vous aurez votre paire de clés et le certificat nécessaire pour la configuration HTTPS.
Ouvrez le fichier de configuration du vhost de Moodle (/etc/sites-available/moodle) – nous devons y ajouter la configuration SSL comme suit, dans la rubrique « server {« . De plus, il faut mettre en place une seconde partie « server { » pour forcer la redirection HTTP 80 vers du HTTPS 443.

Lorsque la configuration du vhost nginx est terminée, enregistrez le fichier, contrôlez la configuration (« sudo nginx -t« ) puis rechargez le service web (« sudo systemctl reload nginx« ). Dès à présent, vous avez un serveur web capable de diffuser sur le web l’application Moodle avec la couche SSL.

/!\ l’article n’est pas totalement terminé, des bouts / des explications sont peut être encore manquantes

Via
Moodle official docMoodle nginx doc

Julien H

Passionné depuis toujours par l'informatique, je transforme ma passion en expertise. J'utilise quotidiennement les outils et systèmes Microsoft. Je ne délaisse pas mon côté ouvert, notamment via l'utilisation des OS Debian et Archlinux. L'infosec m'ouvre les yeux sur les enjeux actuels et futurs de l'IT.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Apprenez comment vos données de commentaires sont traitées.

Close
Close