Configurer Moodle avec Nginx et Let's Encrypt SSL / TLS sur Ubuntu 18.04 | 16.04

  • Dylan Parker
  • 0
  • 2745
  • 218

Moodle - une puissante plate-forme de gestion de cours peut être utile pour les universités et les entreprises qui souhaitent publier leurs travaux de cours et leur matériel de formation ... Cependant, lors de la création de sites Moodle, assurez-vous de toujours les exécuter via HTTPS ...

Les sites Web et les applications fonctionnant sur HTTPS fonctionnent mieux que ceux qui ne le font pas!

Google et d'autres moteurs de recherche classent également les sites Web HTTPS mieux que HTTP et la confidentialité de vos utilisateurs sera également garantie… À l'avenir, construisez toujours vos sites pour qu'ils soient conformes HTTPS!

Ce bref didacticiel montrera aux étudiants et aux nouveaux utilisateurs un guide étape par étape sur la façon de configurer les sites Web Moodle avec Nginx et d'utiliser les certificats SSL / TLS gratuits de Let's Encrypt et les fonctionnalités de sécurité pour aider à améliorer les performances de leurs sites Web et à se protéger contre les acteurs malveillants ...

Cette configuration peut prendre un certain temps et le processus ci-dessous devrait également fonctionner sur d'autres sites Web ... Il n'est pas nécessaire que ce soit Moodle ... Cette configuration devrait fonctionner sur d'autres CMS et des sites HTML simples prêts à l'emploi ... Lorsque vous êtes prêt pour configurer Moodle et Let's Encrypt, suivez les étapes ci-dessous:

Étape 0: Obtenez votre nom de domaine

Let's Encrypt fonctionne avec un domaine valide et un serveur de travail vers lequel le domaine pointe… Cette configuration suppose que votre nom de domaine est appelé example.com et pointe vers votre serveur avec l'adresse IP 192.168.1.2

N'oubliez pas de vous assurer également www CNAME pointe vers le nom de domaine…. Devrait ressembler à quelque chose ci-dessous:

example.com A ==========> 192.168.1.2 www CNAME ==========> example.com 

Étape 1: installer et configurer Moodle

Maintenant que vous avez configuré votre domaine pour qu'il pointe vers votre serveur, continuez ci-dessous pour configurer Moodle et Let's Encrypt…

Installez d'abord le serveur HTTP Nginx puisque nous utilisons Nginx pour cet article… Pour installer le serveur Nginx, exécutez les commandes ci-dessous:

sudo apt mettre à jour sudo apt installer nginx

Après l'installation de Nginx, les commandes ci-dessous peuvent être utilisées pour arrêter, démarrer et permettre au service Nginx de toujours démarrer avec le serveur démarre…

sudo systemctl stop nginx.service sudo systemctl start nginx.service sudo systemctl activer nginx.service 

Maintenant que Nginx est installé…. pour tester si le serveur Web fonctionne, ouvrez votre navigateur et accédez à l'URL ci-dessous…

https: // localhost

Si vous voyez la page ci-dessus, cela signifie que Nginx est installé avec succès…

Étape 2: Installez le serveur de base de données MariaDB

Moodle nécessite également un serveur de base de données pour stocker son contenu… Si vous recherchez un serveur de base de données véritablement open source, alors MariaDB est un excellent point de départ… Pour installer MariaDB exécutez les commandes ci-dessous:

sudo apt-get install serveur-mariadb client-mariadb

Après l'installation de MariaDB, les commandes ci-dessous peuvent être utilisées pour arrêter, démarrer et permettre au service MariaDB de toujours démarrer au démarrage du serveur ...

Exécutez-les sur Ubuntu 16.04 LTS

sudo systemctl arrêter mysql.service sudo systemctl démarrer mysql.service sudo systemctl activer mysql.service 

Exécutez-les sur Ubuntu 19.04 et 18.04 LTS

sudo systemctl stop mariadb.service sudo systemctl start mariadb.service sudo systemctl activer mariadb.service 

Ensuite, exécutez les commandes ci-dessous pour sécuriser le serveur de base de données avec un mot de passe root si vous n'avez pas été invité à le faire pendant l'installation ...

sudo mysql_secure_installation

Lorsque vous y êtes invité, répondez aux questions ci-dessous en suivant le guide.

  • Entrez le mot de passe actuel pour root (entrez pour aucun): appuyez simplement sur Entrée
  • Définir le mot de passe root? [O / n]: Oui
  • Nouveau mot de passe: entrez le mot de passe
  • Entrez à nouveau le nouveau mot de passe: Répétez le mot de passe
  • Supprimer les utilisateurs anonymes? [O / n]: Oui
  • Interdire la connexion root à distance? [O / n]: Oui
  • Supprimer la base de données de test et y accéder? [O / n]: Oui
  • Recharger les tables de privilèges maintenant? [O / n]: Oui

Maintenant que MariaDB est installée, pour tester si le serveur de base de données a été correctement installé, exécutez les commandes ci-dessous…

sudo mysql -u racine -p

saisissez le mot de passe root lorsque vous y êtes invité…

Si vous voyez un écran similaire à celui illustré ci-dessus, cela signifie que le serveur a été installé avec succès…

Étape 3: Installez PHP 7.2-FPM et les modules associés

Moodle CMS est un CMS basé sur PHP et PHP est requis… Cependant, PHP 7.2-FPM peut ne pas être disponible dans les référentiels par défaut d'Ubuntu… Pour exécuter PHP 7.2-FPM sur Ubuntu 16.04 et les versions antérieures, vous devrez peut-être exécuter les commandes ci-dessous:

sudo apt-get install software-properties-common sudo add-apt-repository ppa: ondrej / php

Ensuite, mettez à jour et mettez à niveau vers PHP 7.2-FPM

mise à jour sudo apt

Ensuite, exécutez les commandes ci-dessous pour installer PHP 7.2-FPM et les modules associés.

sudo apt installer php7.2-fpm php7.2-commun php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-gd php7. 2-xml php7.2-cli php7.2-zip

Après avoir installé PHP 7.2, exécutez les commandes ci-dessous pour ouvrir le fichier de configuration par défaut de PHP pour Nginx…

sudo nano /etc/php/7.2/fpm/php.ini 

Les lignes ci-dessous sont de bons paramètres pour la plupart des CMS basés sur PHP… Mettez à jour le fichier de configuration avec ces derniers et enregistrez-les… .

file_uploads = On allow_url_fopen = On short_open_tag = On memory_limit = 256M cgi.fix_pathinfo = 0 upload_max_filesize = 100M max_execution_time = 360 date.timezone = Amérique / Chicago

Chaque fois que vous apportez des modifications au fichier de configuration PHP, vous devez également redémarrer le serveur Web Nginx… Pour ce faire, exécutez les commandes ci-dessous:

sudo systemctl redémarrer nginx.service

Maintenant que PHP est installé, pour tester son fonctionnement, créez un fichier de test appelé phpinfo.php dans le répertoire racine par défaut de Nginx…. ( / var / www / html /)

sudo nano /var/www/html/phpinfo.php

Tapez ensuite le contenu ci-dessous et enregistrez le fichier.

Ensuite, ouvrez votre navigateur et accédez au nom d'hôte ou à l'adresse IP du serveur suivi de phpinfo.php

http: //localhost/phpinfo.php

Vous devriez voir la page de test PHP par défaut…

Étape 4: Créer une base de données Moodle

Maintenant que vous avez installé tous les packages nécessaires au fonctionnement de Moodle, continuez ci-dessous pour commencer à configurer les serveurs. Exécutez d'abord les commandes ci-dessous pour créer une base de données Moodle vierge.

Pour vous connecter au serveur de base de données MariaDB, exécutez les commandes ci-dessous.

sudo mysql -u racine -p

Créez ensuite une base de données appelée moodle

CRÉER UNE BASE DE DONNÉES moodle;

Créez un utilisateur de base de données appelé humeur avec un nouveau mot de passe

CREATE USER 'moodleuser' @ 'localhost' IDENTIFIED BY 'new_password_here';

Ensuite, accordez à l'utilisateur un accès complet à la base de données.

GRANT ALL ON moodle. * TO 'moodleuser' @ 'localhost' IDENTIFIED BY 'user_password_here' AVEC GRANT OPTION;

Enfin, enregistrez vos modifications et quittez.

PRIVILÈGES DE RINÇAGE; SORTIE;

Étape 5: Téléchargez la dernière version de Moodle

Pour obtenir la dernière version de Moodle, vous pouvez utiliser le référentiel Github… Installez Curl et d'autres dépendances pour commencer…

sudo apt installer git curl

Après avoir installé git et curl ci-dessus, accédez au répertoire racine de Nginx et téléchargez les packages Moodle depuis Github… Remplacez toujours le numéro de branche par la dernière branche…. La version majeure actuelle est la 36… .

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

Ensuite, exécutez les commandes ci-dessous pour définir les autorisations appropriées pour que Moodle fonctionne.

sudo mkdir -p / var / www / html / moodledata sudo chown -R www-data: www-data / var / www / html / sudo chmod -R 755 / var / www / html /

Étape 6: Configurer Nginx

Ensuite, configurez le fichier de configuration du site Nginx pour Moodle… Ce fichier contrôlera la manière dont les utilisateurs accèdent au contenu Moodle. Exécutez les commandes ci-dessous pour créer un nouveau fichier de configuration appelé example.com

sudo nano /etc/nginx/sites-available/example.com

Ensuite, copiez et collez le contenu ci-dessous dans le fichier et enregistrez-le. Remplacez la ligne en surbrillance par votre propre nom de domaine et emplacement racine du répertoire.

serveur écoute 80; écouter [::]: 80; nom_serveur example.com www.example.com; root /var/www/html/example.com; index index.php; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; client_max_body_size 100M; autoindex désactivé; location / try_files $ uri $ uri / = 404;  location / dataroot / interne; alias / var / www / html / moodledata /;  location ~ [^ /] \. php (/ | $) include snippets / fastcgi-php.conf; fastcgi_pass unix: /var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $ racine_document $ fastcgi_script_name; inclure fastcgi_params;  

Enregistrez le fichier et quittez.

Maintenant, le example.com le fichier de configuration est créé, exécutez les commandes ci-dessous pour l'activer…

sudo a2ensite example.com.conf

À ce stade, Nginx doit être configuré et prêt à répondre via HTTP… Il ne prend pas encore en charge HTTPS.

Étape 7: Installez et configurez Let's Encrypt

Maintenant que notre site Nginx est activé et prêt à être utilisé, exécutez les commandes ci-dessous pour installer et configurer Let's Encrypt afin de sécuriser le site Web Nginx…

Première installation Certbot… Certbot est un outil complet et facile à utiliser qui peut automatiser les tâches d'obtention et de renouvellement des certificats SSL Let's Encrypt…

Pour l'installer, exécutez les commandes ci-dessous:

sudo apt installer certbot

Après avoir installé Certbot, créez un fichier pour Let's Encrypt vers le plugin Webroot pour valider notre domaine dans le $ chemin-webroot /. well-known / acme-challenge annuaire… .

Pour ce faire, créez le répertoire et autorisez Nginx à y accéder…

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp www-data / var / lib / letsencrypt sudo chmod g + s / var / lib / letsencrypt

Ensuite, créez un fichier de défi bien connu avec les configurations ci-dessous…

sudo nano / etc / nginx / snippets / bien connu

Ensuite, copiez et collez le contenu ci-dessous dans le fichier et enregistrez-le…

location ^ ~ /.well-known/acme-challenge/ autoriser tout; racine / var / lib / letsencrypt /; default_type "text / plain"; try_files $ uri = 404; 

Enregistrez le fichier et quittez

Étape 8: Obtenez votre certificat gratuit

À ce stade, votre domaine doit pointer vers l'adresse IP de votre serveur… Serveur HTTP Nginx installé et configuré et Certbot installé prêt à obtenir votre certificat…

Avant de demander votre certificat gratuit, ouvrez votre fichier de configuration example.com Nginx créé ci-dessus… .

sudo nano / etc / nginx / sites-available /example.com

Lorsque le fichier s'ouvre, ajoutez le Souligné ligne ci-dessous dans le fichier et enregistrez…

serveur écoute 80; écouter [::]: 80; nom_serveur example.com www.example.com; root /var/www/html/example.com; index index.php; inclure des extraits / bien connus; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; client_max_body_size 100M; autoindex désactivé; location / try_files $ uri $ uri / = 404;  location / dataroot / interne; alias / var / www / html / moodledata /;  location ~ [^ /] \. php (/ | $) include snippets / fastcgi-php.conf; fastcgi_pass unix: /var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $ racine_document $ fastcgi_script_name; inclure fastcgi_params; 

Enregistrez le fichier et quittez

Lorsque vous avez terminé, activez le site et redémarrez le serveur HTTP Nginx en exécutant les commandes ci-dessous…

sudo ln -s /etc/nginx/sites-available/example.com / etc / nginx / sites-enabled / sudo systemctl restart nginx.service 

À ce stade, tout est défini et vous êtes prêt à obtenir votre certificat… Pour ce faire, exécutez les commandes ci-dessous:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w / var / lib / letsencrypt / -d exemple.com -d www.example.com

Let's Encrypt devrait se connecter, valider votre domaine et votre serveur, puis installer le certificat de domaine ... Si tout réussit, vous devriez voir un message similaire à celui ci-dessous:

REMARQUES IMPORTANTES: - Félicitations! Votre certificat et votre chaîne ont été enregistrés à: /etc/letsencrypt/live/example.com/fullchain.pem Votre fichier de clé a été enregistré à: /etc/letsencrypt/live/example.com/privkey.pem Votre certificat expirera le 2019-08-18. Pour obtenir une version nouvelle ou modifiée de ce certificat à l'avenir, exécutez simplement à nouveau certbot. Pour renouveler * tous * vos certificats de manière non interactive, exécutez "certbot renouveler" - Si vous aimez Certbot, pensez à soutenir notre travail en: faisant un don à ISRG / Let's Encrypt: https://letsencrypt.org/donate En faisant un don à EFF: https://eff.org/donate-le 

À ce stade, vous avez un certificat, allez maintenant l'ajouter à la configuration Nginx pour le domaine example.com…

Tout d'abord, générons un certificat d'échange de clés Diffie-Hellman (DH) pour échanger en toute sécurité des clés cryptographiques ... Pour ce faire, exécutez les commandes ci-dessous pour générer un certificat avec 2048 bits ...

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Ensuite, ouvrez votre example.com config et faites-le pour qu'il ressemble à celui ci-dessous:

sudo nano /etc/nginx/sites-available/example.com

Configurez votre fichier pour qu'il ressemble à celui ci-dessous

serveur écoute 80; nom_serveur www.example.com example.com; inclure des extraits / bien connus; retourne 301 https: // $ host $ request_uri;  serveur écoute 443 ssl http2; écoute [::]: 443 ssl http2; nom_serveur example.com www.example.com; root /var/www/html/example.com; index index.php; if ($ host! = "example.com") return 301 https: //example.com$request_uri;  inclure des extraits / bien connu; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHEES-SHA4M-AES RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256: ECDHEES-EC128DSA SHA: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA: ECDHE-ECDSA-AES256-SHA384: ECDHE-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES6128-SHA: DHE-RSA-AES6128-SHA: DHE-RSA-AES128-SHA: DHE-RSA-AES256-SHA256: DHE-RSA-AES256-SHA: ECDHE-ECDSA-DES-CBC3-SHA: ECDHE-RSA-DES-CBC3-SHA: EDH-RSA-DES- CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:! DSS '; ssl_prefer_server_ciphers activé; ssl_stapling activé; ssl_stapling_verify activé; résolveur 8.8.8.8 8.8.4.4 valide = 300s; resolver_timeout 30s; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; client_max_body_size 100M; autoindex désactivé; location / try_files $ uri $ uri / = 404;  location / dataroot / interne; alias / var / www / html / moodledata /;  location ~ [^ /] \. php (/ | $) include snippets / fastcgi-php.conf; fastcgi_pass unix: /var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $ racine_document $ fastcgi_script_name; inclure fastcgi_params; 

Enregistrez vos modifications ci-dessus et redémarrez Nginx pour que les paramètres ci-dessus prennent effet…

sudo systemctl redémarrer nginx

Pour configurer un processus de renouvellement automatique des certificats, ajoutez une tâche cron pour exécuter le processus de renouvellement.

sudo crontab -e

Ensuite, ajoutez la ligne ci-dessous et enregistrez.

0 1 * * * / usr / bin / certbot renouveler &> / dev / null

Le travail cron tentera de se renouveler 30 jours avant d'expirer

Étape 9: Activez Moodle

Après cela, ouvrez votre navigateur et accédez au nom de domaine du serveur. Vous devriez voir l'assistant de configuration de Moodle pour terminer. Veuillez suivre attentivement l'assistant.

http://example.com/

Suivez ensuite les instructions à l'écran et sélectionnez la langue d'installation ici…

Ensuite, sélectionnez le pilote de connexion MariaDB et continuez…

Sur l'écran suivant, entrez les informations de connexion à la base de données que vous avez créées ci-dessus et continuez…

Créez ensuite un compte administrateur et les informations du site Moodle et terminez l'installation… .

Sur cette page, vous devez configurer votre compte administrateur principal qui aura un contrôle complet sur le site. Assurez-vous de lui donner un nom d'utilisateur et un mot de passe sécurisés ainsi qu'une adresse e-mail valide. Vous pouvez créer plus de comptes administrateur plus tard.

Félicitations! Vous avez installé avec succès Moodle sur Ubuntu 16.04 | 18.04 et peut travailler sur le prochain 18.10…

À l'avenir, lorsque vous souhaitez passer à une nouvelle version publiée, exécutez simplement les commandes ci-dessous pour mettre à niveau ...

Mettre à niveau Moodle

Arrêtez d'abord le serveur Web…

sudo systemctl stop nginx

Pour les étudiants et les nouveaux utilisateurs qui ont déjà installé Moodle et qui souhaitent mettre à niveau, en supposant que vous avez suivi les étapes ci-dessus pour installer, exécutez les commandes ci-dessous pour sauvegarder votre ancien dossier Moodle ...

sudo mv /var/www/html/example.com /var/www/html/example.com_bak

Ensuite, allez dans le répertoire racine du serveur Web et téléchargez la dernière version de Moodle depuis Github… changez toujours le numéro de version au courant (dernier)

cd / var / www / html sudo git clone -b MOODLE_37_STABLE git: //git.moodle.org/moodle.git example.com

Ensuite, copiez le fichier de configuration, le thème et le dossier de données de Moodle… Si vous avez mis à jour vos thèmes… un contenu de thème devrait être là…. Si vous avez également installé des modules supplémentaires ... vous devriez les trouver dans le /mod répertoire… copiez-les dans le nouveau dossier Moodle… .

sudo cp /var/www/html/example.com_bak/config.php /var/www/html/example.com sudo cp -pr /var/www/html/example.com_bak/theme/mytheme / var / www / html /example.com/theme/mythème sudo cp -pr /var/www/html/example.com_bak/mod/mymod /var/www/html/example.com/mod/mymod 

Après cela, mettez à jour les autorisations du serveur Web…

sudo chown -R www-data: www-data /var/www/html/example.com/ sudo chmod -R 755 /var/www/html/example.com/

Redémarrez votre serveur Web…

sudo systemctl démarrer nginx

La dernière étape consiste à déclencher les processus de mise à niveau dans Moodle… Si vous mettez votre site en mode Maintenance plus tôt; sortez-le maintenant!

Une fois que vous accédez à l'adresse IP ou au nom d'hôte du serveur, Moodle devrait vous inviter à commencer la mise à niveau de votre base de données… Après la mise à niveau de la base de données, connectez-vous à Moodle et accédez à:

Administration> Administration du site> Notifications.

Moodle détectera automatiquement la nouvelle version et effectuera toutes les mises à niveau de la base de données SQL ou du système de fichiers nécessaires. S'il y a quelque chose qu'il ne peut pas faire lui-même (très rare), vous verrez des messages vous indiquant ce que vous devez faire.

En supposant que tout se passe bien (pas de message d'erreur), vous pouvez commencer à utiliser votre nouvelle version de Moodle et profiter des nouvelles fonctionnalités!

C'est ça!

Toutes nos félicitations! Vous avez installé avec succès Moodle avec le support Cloudflare sur Ubuntu 16.04 | 18.04




Personne n'a encore commenté ce post.

Une collection utiles sur le système Linux et les nouvelles technologies
Articles frais, conseils pratiques, critiques détaillées et guides. Sentez-vous comme chez vous dans le monde du système Linux