Nous allons dans cet article décrire comment installer Moodle 4.2 sous Rocky Linux 9.2 dans un environnement de test.
Contenu de l'article
- Pré-requis
- Préparation de la machine
- Installer Apache HTTPd
- Installer PHP 8.0
- Installer MariaDb 10.6
- Créer la base-de-données Moodle
- Installer Moodle (partie 1)
- Mise-en-place du virtualhost
- Installer Moodle (partie 2)
- Liens
Pré-requis
- une machine sous Rocky Linux 9.2
- Moodle 4.2.1 nécessite au moins la version 10.6.7 de MariaDb. Attention, par défaut Rocky Linux 9.2 propose la version 10.5.16
- L'extension PHP sodium est requise pour le fonctionnement de Moodle 4.2
- Le paramètre PHP max_input_vars doit être supérieur ou égale à 5000 sous PHP 8.x
Préparation de la machine
- Configurer en ligne de commande l'adressage IP et le nom de la machine avec l'outil nmtui et rebooter
- Effectuer une mise à jour du système avec la commande suivante :
# dnf update
- Dans le fichier /etc/ssh/sshd_config, régler le paramètre suivant afin de pouvoir se connecter facilement en ssh à la machine en tant que root :
PermitRootLogin yes
Puis relancer le service SSH avec la commande suivante :# systemctl restart sshd
Note : autoriser la connexion distante SSH de l'utilisateur root n'est pas recommandé en production. - Désactiver le parefeu local avec les commandes suivantes :
# systemctl stop firewalld
Note : désactiver le parefeu local en production réduit le niveau de sécurité
# systemctl disable firewalld - Désactiver SELinux en réglant le paramètre suivant dans le fichier /etc/sysconfig/selinux et en rebootant :
SELINUX=disabled
Note : désactiver SELinux simplifie l'administration mais réduit notablement le niveau de sécurité.
Installer Apache HTTPd
- Installer le service HTTPd :
# dnf install httpd
- Lancer le service HTTPd avec les commandes suivantes :
# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
Installer PHP 8.0
Il semble y avoir des soucis pour installer l'extension php-sodium avec PHP 8.1. Nous allons donc privilégier la version 8.0 de PHP.
- Installer le dépôt EPEL et Remi :
# dnf install epel-release
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm - Lister et activer le module php de remi afin de pouvoir installer PHP 8.0. Accepter l'import des clés GPG :
# dnf module list php
# dnf module reset php
# dnf module enable php:remi-8.0 - Installer PHP 8.0 et les extensions requises :
# dnf install php php-opcache php-cli php-fpm php-gd php-curl php-zip php-mbstring php-intl php-mysqlnd php-soap php-xml php-sodium
note : PHP FPM est une implémentation de PHP qui utilise son propre démon plutôt qu'un module Apache HTTPd. Les performances sont ainsi améliorées.
# systemctl enable --now php-fpm
# systemctl start php-fpm - Vérifier l'installation de PHP avec la commande suivante :
# php -v
- PHP 8 doit être configuré avec le paramètre max_input_vars au moins égal à 5000. Pour cela, activer et modifier le paramètre dans le fichier /etc/php.ini et redémarrer le démon PHP :
# vim /etc/php.ini
# systemctl restart php-fpm
Installer MariaDB 10.6
- Afin de pouvoir installer la version 10.6 de MariaDb, créer le fichier de dépôt /etc/yum.repos.d/mariadb.repo avec le contenu suivant :
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.6/rhel9-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 - Installer le client et le serveur de base-de-données MariaDB avec la commande suivante :
# dnf install mariadb mariadb-server
- Démarrer MariaDB :
# systemctl start mariadb
# systemctl enable mariadb - Sécuriser l'installation de MariaDB en lançant le script suivant. Etant donné que nous sommes en environnement de test, les réponses aux questions posées par le script importent peu. La 1ère question "Enter current password for root" concerne le mot de passe root de mariadb. Comme celui-ci est vide, taper sur la touche "entrée" :
Pour Mariadb 10.5
# mysql_secure_installation
=> Pour Mariadb 10.6+
# mariadb-secure-installation
Créer la base-de-données Moodle
- Se connecter au SGBD en tant que root :
# mysql -u root -p
- Créer la base-de-données Moodle :
> CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Créer l'utilisateur moodle et lui associer les privilèges requis sur la base créée :
> CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'your-password';
> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* to 'moodleuser'@'localhost';
> FLUSH PRIVILEGES;
> exit;
Installer Moodle (partie 1)
- Télécharger et décompresser dans /var/www/html le package TGZ officiel de moodle 4.2 :
# cd /var/www/html
# wget https://download.moodle.org/download.php/direct/stable402/moodle-4.2.1.tgz
# tar -xzvf ./moodle-4.2.1.tgz - Régler les droits sur les sous-répertoires et fichiers du répertoire moodle :
# chown -R root:apache /var/www/html/moodle
# find /var/www/html/moodle -type d -exec chmod 0750 {} \;
# find /var/www/html/moodle -type f -exec chmod 0640 {} \; - Créer le répertoire de données (dépôt de fichiers) de Moodle. Pour des raisons de sécurité, celui-ci doit être situé en dehors du répertoire moodle :
# mkdir /var/moodledata
# chown -R root:apache /var/moodledata
# find /var/moodledata -type d -exec chmod 0775 {} \;
# find /var/moodledata -type f -exec chmod 0664 {} \; - Faire une copie du fichier de configuration de Moodle :
# cd /var/www/html/moodle
# cp -a config-dist.php config.php - Modifier le fichier de configuration config.php de la manière suivante :
$CFG->dbtype = 'mariadb'; // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', 'sqlsrv' ou'oci' $CFG->dblibrary = 'native'; // 'native' only at the moment $CFG->dbhost = 'localhost'; // ex : 'localhost' ou 'db.isp.com' ou IP $CFG->dbname = 'moodle'; // nom de la base de donnée, ex : moodle $CFG->dbuser = 'moodleuser'; // nom de l'utilisateur moodle précédemment créé $CFG->dbpass = 'your-password'; // mot-de-passe de l'utilisateur moodle $CFG->prefix = 'mdl_'; // prefixe des tables Moodle
$CFG->wwwroot = 'https://learning.your-domain.com'; $CFG->sslproxy = 'https'; $CFG->dataroot = '/var/moodledata - Si Moodle est désservi par un Reverse Proxy, le paramètre $CFG->wwwroot doit correspondre à l'URL externe permettant d'accéder au Reverse Proxy et non pas à l'URL permettant d'accéder au serveur Moodle. De plus le paramètre "$CFG->reverseproxy = true;" doit être ajouté.
Mise-en-place du virtualhost
Un virtualhost Apache permet de créer le multiple sites web sur un même serveur. Pour notre utilisation interne en labo, nous allons utiliser le virtualhost SSL par défaut avec son certificat auto-signé existant. Nous accéderons ainsi à Moodle avec une URL en HTTPS. En production, il est recommandé d'utiliser un certificat signé par une autorité de certification publique :
- Copier le virtualhost par défaut dans un autre fichier afin de pouvoir y ajouter ultérieurement des configurations spécifiques puis le désactiver :
# cd /etc/httpd/conf.d
# cp -a ./ssl.conf ./moodle.conf
# mv ./ssl.conf ./ssl.conf-DISABLED - En profiter pour changer la racine Web de Moodle en réglant le paramètre suivant dans /etc/httpd/conf/httpd.conf:
DocumentRoot "/var/www/html/moodle"
Note : à l'origine, j'avais laissé ce paramètre avec sa valeur par défaut "/var/www/html". Mais après avoir placé l'application derrière un reverse proxy, un problème de chemin se manifestait lors de certaines actions (enregistrement de cours, regénération de clés SAML...). En effet, Moodle ajoutait un .../moodle/... dans l'URL, ce qui provoquait une erreur 404. En modifiant ce paramètre et en adaptant la clause "proxypass" du reverse proxy, je suis donc passé d'une situation où le reverse proxy relayait vers une URL interne https://<serveur_interne>/moodle à une situation où le relai se fait vers https://<serveur_interne>/. Les problèmes de chemin ont alors été complètement résolus. - Relancer httpd :
# systemctl restart httpd
Installer Moodle (partie 2)
- Accéder à l'URL moodle https://learning.your-domain.com/moodle. Comme nous avons installé un certificat auto-signé, le navigateur affiche un message d'avertissement qu'on peut passer outre.
- Une page d'information apparaît, cliquer sur "continue"
- Dans la page suivante, l'assistant d'installation effectue tout un tas de vérification et doit afficher la liste suivante. Si tout est OK, cliquer sur "continue".
- Dans la page suivante, l'assistant effectue les opérations d'installation et configuration. Cliquer sur "continue" :
- Dans la page suivante, remplir les informations requises pour l'administrateur et cliquer sur "update profile" :
- Dans la page suivante, saisir les informations relatives au site Moodle et cliquer sur "save changes" :
- L'installation est terminée et Moodle peut être utilisé 😀.
Liens
https://techsbucket.com/how-to-install-moodle-lms-on-centos-8-moodle-step-by-step/
https://idroot.us/install-moodle-rocky-linux-9/
https://forums.rockylinux.org/t/broken-php-dependencies/10055
https://almalinux.discourse.group/t/anyone-successfully-got-php-sodium-x86-64-installed-on-al8-7/2229/4