Outils pour utilisateurs

Outils du site


nethserver_201_cahier_05_moodle

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nethserver_201_cahier_05_moodle [2019-08-29 01:28] michelandrenethserver_201_cahier_05_moodle [2025-01-12 19:30] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +\\ 
 +[[cours_nethserver_101|{{ Images_Cahier-201-05-000.png?650 }}]]
 +\\ 
 +====== Description générale ======
  
 +Le **Cahier-05** du cours **NethServer-201** décrit: l'installation de la version **Moodle-3.5 LTS**.
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/Moodle|https://fr.wikipedia.org/wiki/Moodle]].\\ 
 +Moodle est une plateforme d'apprentissage en ligne //(Learning Management System ou LMS)//, LIBRE, distribuée sous la Licence publique générale GNU, écrite en PHP. Développée à partir de principes pédagogiques, elle permet de créer des communautés s'instruisant autour de contenus et d'activités. Le mot "Moodle" est l'abréviation de **M**odular **O**bject-**O**riented **D**ynamic **L**earning **E**nvironment: "Environnement orienté objet d'apprentissage dynamique modulaire".
 +
 +Outre la création de cours à l'aide d'outils intégrés //(ressources et activités)// à l'usage des formateurs, Moodle offre des possibilités d'organisation des cours sous forme de filières //(catégories et sous-catégories, cohortes…)// qui lui donnent également des caractéristiques propres à la mise en place de dispositifs complets d'enseignement.
 +
 +À un système de gestion de contenu //(SGC - Content Management System ou CMS)//, Moodle ajoute aussi de nombreux outils d'interactions pédagogiques et communicatives créant un environnement d'apprentissage en ligne: cette application permet de créer, via le réseau, des interactions entre pédagogues, apprenants et ressources pédagogiques.
 +
 +Grâce à son architecture modulaire, Moodle profite d'extensions développées par sa communauté pour permettre l'extension de ses fonctionnalités et de répondre ainsi à des besoins spécifiques. 
 +
 +//Page d'accueil:// [[https://moodle.org/|https://moodle.org/]].\\ 
 +//Documentation 3.x en français:// [[https://docs.moodle.org/3x/fr/Accueil|https://docs.moodle.org/3x/fr/Accueil]].\\ 
 +//Documentation 3.7 en anglais:// [[https://docs.moodle.org/37/en/Main_page|https://docs.moodle.org/37/en/Main_page]].
 +
 +==== Version LTS ====
 +
 +Les versions LTS sont une version spéciale de Moodle qui paraît tous les deux ans en mai. Si vous souhaitez réduire vos coûts de maintenance, il s’agit des versions qu'on recommande aux clients actuels. Quelle est leur particularité? Ils reçoivent des correctifs de sécurité pendant 36 mois, par rapport aux versions majeures habituelles ne les recevant que pendant 18 mois. En optant pour les versions LTS, vous pouvez conserver la même version de Moodle pendant près de 2 ans, en appliquant simplement des mises à jour mineures. La prochaine version LTS de Moodle paraîtra en mai dans les années paires. Si vous utilisez une version LTS de Moodle, on ne recommande que les mises à jour mineures, à moins qu'une nouvelle fonctionnalité spécifique ne soit nécessaire.
 +
 +Pour les organisations disposant de ressources techniques limitées, d'une utilisation intensive et de cas d'utilisation complexes, ce support de sécurité étendu peut réduire les risques et les perturbations tout en augmentant la fiabilité.
 +\\
 +
 +===== But final de ce cahier =====
 +
 +{{ Images_Cahier-201-05-002.png?450 }}
 +\\ 
 +
 +===== Cours NethServer-101 =====
 +
 +Le //Cours NethServer-101//, se voulant une base solide pour la création d'un site de **Commerce en ligne**, comprend plusieurs cahiers:
 +
 +  - [[nethserver_101_cahier_01_linux|Cahier-01]]: -> Les bases de Linux.
 +  - [[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis|Cahier-02]]: -> Installation et configuration des logiciels prérequis sur le poste de travail.
 +  - [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: -> Création d'un Serveur NethServer virtuel.
 +  - [[nethserver_101_cahier_04_local_certificat_let_encrypt|Cahier-04]]: -> Serveur NethServer LOCAL & Let's Encrypt.
 +  - [[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver|Cahier-05]]: -> FAI, modem VDSL, domaine FQDN(( **FQDN**: Dans le //DNS//, un Fully Qualified Domain Name //(FQDN, ou nom de domaine complètement qualifié)// est un nom de domaine qui révèle la position absolue d'un nœud dans l'arborescence //DNS// en indiquant tous les domaines de niveau supérieur jusqu'à la racine. On parle également de domaine absolu, par opposition aux domaines relatifs. Par convention, le //FQDN// est ponctué par un point final.\\ 
 +//Référence:// [[https://fr.wikipedia.org/wiki/Fully_qualified_domain_name|https://fr.wikipedia.org/wiki/Fully_qualified_domain_name]]. \\ \\ )) et Serveur NethServer physique.
 +  - [[nethserver_101_cahier_06_nethserver_wordPress|Cahier-06]]: -> Installation de WordPress.
 +  - [[nethserver_101_cahier_07_nethserver_wordPress_wordfence|Cahier-07]]: -> Installation de l'extension de sécurité Wordfence.
 +  - [[nethserver_101_cahier_08_woocommerce_paypal_stripe|Cahier-08]]: -> WooCommerce, comptes chez Stripe et   PayPal pour les paiements en ligne.
 +  - [[nethserver_101_cahier_09_duplicator_migration|Cahier-09]]: -> Sauvegarde/restauration ou migration d'un site avec l'extension Duplicator.
 +  - [[nethserver_101_cahier_10_mandataire_inverse|Cahier-10]]: -> Serveur mandataire inversé.
 +  - [[nethserver_101_cahier_11_nethserver_backuppc|Cahier-11]]: -> Sauvegarde/restauration avec BackupPC.
 +
 +==== Cours NethServer-201 ====
 +
 +Le //Cours NethServer-201// décrit l'installation et la configuration d'applications sur un serveur NethServer.
 +
 +  - [[nethserver_201_cahier_01_nethserver_et_dolibarr|Cahier-201-01]]: -> Dolibarr.
 +  - [[nethserver_201_cahier_02_odoo_12|Cahier-201-02]]: -> Odoo-12.
 +  - [[nethserver_201_cahier_03_mediawiki|Cahier-201-03]]: -> MediaWiki.
 +  - [[nethserver_201_cahier_04_dokuwiki|Cahier-201-04]]: -> DokuWiki.
 +  - [[nethserver_201_cahier_05_moodle|Cahier-201-05]]: -> Moodle.
 +  - [[nethserver_201_cahier_06_proxmox|Cahier-201-06]]: -> Proxmox.
 +  - [[nethserver_201_cahier_07_flectra|Cahier-201-07]]: -> Flectra.
 +
 +==== Logiciels ====
 +
 +Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence //GPL//; ils ne coûtent pas un sou. Le seul achat nécessaire est l'obtention d'un nom de domaine au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD.
 +
 +==== But final ====
 +
 +Après avoir suivi le //Cours NethServer-101//, vous posséderez un site de //Commerce en ligne// fiable et hautement sécuritaire. De plus, vous pourrez utiliser un clone de votre site, sur un //Serveur NethServer// virtuel roulant sur votre poste de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de votre site en ligne.
 +
 +{{ NS-101_001_Diagramme.png?500 }}
 +
 +===== Particularités de ce document =====
 +
 +==== Notes au lecteur ====
 +
 +<nowiki>*</nowiki> Les captures d'écrans ne sont que des références.\\
 +<nowiki>**</nowiki> Les informations écrites ont préséance sur celles retrouvées dans les captures d'écrans. Veillez vous référer aux différents tableaux lorsque ceux-ci sont présents.\\ 
 +<nowiki>***</nowiki> Une capture d'écran avec une accentuation en magenta indique qu'il faut remplacer cette distinction par vos propres paramètres ou implique un choix laissé à votre appréciation.
 +
 +==== Conventions ====
 +
 +{{Images_icone-201-001_doigt.png?22}} Manipulation, truc ou ruse pour se tirer d'embarras.\\
 +{{Images_icone-201-002_Lumiere.png?25}} Une recommandation ou astuce.\\
 +{{Images_icone-201-003_Note.png?25}} Une note.\\
 +{{Images_icone-201-004_Triangle.png?25}} Une étape, note ou procédure à surveiller.\\
 +{{Images_icone-201-005_Non-termine.png?25}} Paragraphe non complété ou non vérifié.\\
 +{{Images_icone-201-006_Securite.png?25}} Danger pour la sécurité du système.
 +
 +Toutes les commandes à la console ou à travers //PuTTY// sont précédées d'une invite qui est toujours présente.
 +
 +<file>
 +[root@dorgee ~]# ping 10.10.10.75 -c1
 +
 +PING 10.10.10.75 (10.10.10.75) 56(84) bytes of data.
 +64 bytes from 10.10.10.75: icmp_seq=1 ttl=64 time=1.63 ms
 +
 +--- 10.10.10.75 ping statistics ---
 +1 packets transmitted, 1 received, 0% packet loss, time 0ms
 +rtt min/avg/max/mdev = 1.639/1.639/1.639/0.000 ms
 +[root@dorgee ~]#
 +</file>
 +
 +<WRAP box round>
 +<file>
 +Commande à exécuter si ce n'est déjà fait.
 +</file>
 +</WRAP>
 +
 +<WRAP box>
 +<file>
 +Commande indiquée à titre d'information seulement.
 +</file>
 +</WRAP>
 +\\ 
 +
 +====== À savoir ======
 +
 +===== Diagramme réseau =====
 +
 +{{ Images_Cahier-201-05-003.png?700 }}
 +\\
 +
 +===== Serveur NethServer-7.6.1810 =====
 +
 +Le Serveur NethServer-7.6.1810 est un dérivé de la distribution Linux CentOS et est équivalent à CentOS-7.6.1810.
 +
 +==== dorgee.micronator.org ====
 +
 +Serveur passerelle pour les connexions à l'Internet.\\ 
 +Serveur DHCP pour tout le réseau LOCAL.
 +
 +==== tchana.micronator-dev.org ====
 +
 +Serveur virtuel sous VirtualBox Version 6.0.4 r128413 (Qt5.6.2).
 +
 +==== Répertoire d'installation ====
 +
 +Nous installerons Moodle dans le répertoire ''/var/lib/nethserver/vhost/moodle''.
 +
 +===== Poste de travail =====
 +
 +Windows-8.1: on utilisera ce poste de travail pour tout ce document.
 +
 +===== Éditeur de texte =====
 +
 +Ne modifiez pas les fichiers avec des éditeurs de documents tels Notepad, TextEdit ou autres qui ajoutent une marque d'ordre d'octets //(byte order marks)// aux fichiers et qui casse le programme PHP. Utilisez plutôt un éditeur de code tel vi, vim, **Notepad++**, ou Atom. Ces éditeurs gèrent l'encodage des fichiers de manière appropriée; ils peuvent aussi être utilisés pour réparer les fichiers précédemment cassés par les autres éditeurs de documents.
 +
 +==== Notepad++ ====
 +
 +Voir le [[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis|Cahier-02]]: //Installations & configurations des logiciels prérequis// du "Cours NethServer-101" pour l'installation et la configuration de cet éditeur.
 +
 +==== Description ====
 +
 +//Référence:// [[https://notepad-plus-plus.org/fr/|https://notepad-plus-plus.org/fr/]].\\ 
 +Notepad++ est un éditeur de code source qui prend en charge plusieurs langages. Ce logiciel, codé en C++ avec STL et win32 api, a pour vocation de fournir un éditeur de code source de taille réduite mais très performant. En optimisant de nombreuses fonctions, tout en conservant une facilité d’utilisation et une certaine convivialité, Notepad++ contribue à la limitation des émissions de dioxyde de carbone dans le monde; en effet, en réduisant l’utilisation du CPU, la consommation d’énergie des ordinateurs chute considérablement, en conséquence de quoi, la terre est plus verte.
 +
 +//Site de téléchargement:// [[https://notepad-plus-plus.org/fr/|https://notepad-plus-plus.org/fr/]].
 +
 +==== Documentation ====
 +
 +Guide pratique //(1er août 2013)//: [[http://nliautaud.developpez.com/tutoriels/web/notepadplusplus-guide-pratique/|http://nliautaud.developpez.com/tutoriels/web/notepadplusplus-guide-pratique/]].\\ 
 +Aide-mémoire des principales commande: [[https://drive.google.com/file/d/0B86nuTd5nMTKaENHcmliUC1kdnc/edit|https://drive.google.com/file/d/0B86nuTd5nMTKaENHcmliUC1kdnc/edit]].
 +
 +===== Connexion sécuritaire =====
 +
 +Ce document décrit aussi la marche à suivre pour une connexion sécuritaire //(https)// vers Moodle.\\ 
 +HTTPS //(Hyper Text Transfer Protocol Secure)// apparaît dans l'URL lorsqu'un site Web est sécurisé par un certificat SSL/TLS. Les détails du certificat, y compris l'autorité émettrice et la dénomination sociale du propriétaire du site Web, peuvent être consultés en cliquant sur l'icône du cadenas sur la barre du navigateur.
 +\\ 
 +\\ 
 +
 +====== Préparation de l'environnement de travail ======
 +
 +===== Configuration du poste de travail =====
 +
 +Voir la section __À savoir__ du 
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#À savoir|Cahier-03]]
 +: //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101".
 +
 +<WRAP column 60%>
 +==== Vérification ====
 +
 +**Centre Réseau et partage -> Modifier les paramètres de la carte ->** clac //(clic droit)// sur la carte Éthernet **-> Statut -> Détails**.
 +
 +● Nos deux adresses IP et nos deux passerelles son présentes.
 +
 +● **Fermer** toutes les fenêtre.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-02-007.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +''C:\Windows\System32\drivers\etc\hosts''.
 +
 +Les CNAME de notre Serveur NethServer virtuel LOCAL sont présents.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-02-008.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Installation d'un Serveur NethServer =====
 +
 +Voir le [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101".
 +
 +Pour un serveur virtuel de test, prendre un minimum de //8 Go// dynamiquement alloué __pour le disque principal__.
 +
 +==== Mise à jour du Serveur ====
 +
 +Avant de commencer quoi que ce soit, il est toujours préférable de mettre à jour le Serveur NethServer.
 +
 +==== Fail2ban & ClamAV ====
 +
 +Il est fortement recommandé d'installer //Fail2ban// et //ClamAV// pour mieux sécuriser notre futur site Moodle. L'installation de ces logiciels est décrite dans le [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101".
 +
 +===== interface Web NethServer =====
 +
 +{{Images_icone-201-004_Triangle.png?25}} Il faut activer Javascript et les témoins //(cookies)//.\\ 
 +Depuis le poste de travail, sur le réseau LOCAL //10.10.10.0/24//, on accède à l'interface Web Nethserver [[http://10.10.10.75:980|http://10.10.10.75:980]].
 +
 +==== Login ====
 +
 +Lorsque vous parvenez à l'URL, vous serez invité à entrer votre nom d’utilisateur //(qui est obligatoirement __root__ et son mot de passe)//. Entrez ce justificatif et cliquez sur **Login** afin d’être amené à l'interface Web Nethserver. L’écran du gestionnaire s’affiche.
 +
 +{{Images_icone-201-004_Triangle.png?25}} Le cadenas n'est pas //vert//, car si nous utilisons un nouveau Serveur NethServer, nous n'avons pas encore de certificat émis par une autorité de certification reconnue. Plus loin, nous réglerons cet inconvénient 
 +
 +<WRAP column 20%>
 +|{{ Images_Cahier-201-02-009.png?400 }}|
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-02-010.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Si vous avez de la difficulté à vous connecter, vidanger le cache DNS du poste de travail et celui du navigateur Firefox.
 +
 +<WRAP column 55%>
 +<nowiki>-</nowiki> Sur le poste de travail, ouvrir un écran de commandes.\\ 
 +<nowiki>-</nowiki> ''ifconfig  /flushdns''.
 +|{{ Images_Cahier-201-02-011.png?600 }}|
 +</WRAP>
 +<WRAP column 37%>
 +**Historique -> Supprimer l'historique ré­cent... -> tout -> Effacer maintenant**.
 +|{{ Images_Cahier-201-02-012.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +{{ Images_Cahier-201-02-013.png?600}}
 +==== Fournisseur des comptes ====
 +
 +**Configuration -> Fournisseur des comptes**.
 +
 +LDAP local est notre fournisseur de comptes.
 +<WRAP clear></WRAP>
 +\\
 +
 +{{ Images_Cahier-201-05-004.png?600}}
 +==== FQDN du serveur ====
 +
 +**Configuration -> DNS ->** onglet **Hôtes**.
 +
 +Le FQDN du serveur: //micronator-dev.org// est bien ce qu'il devrait être.
 +\\ 
 +\\ 
 +
 +{{ Images_Cahier-201-02-015.png?600}}
 +==== Nom du serveur ====
 +
 +**Configuration -> Nom du serveur**.
 +<WRAP clear></WRAP>
 +\\
 +
 +{{ Images_Cahier-201-02-016.png?600}}
 +==== Paramètres d'accès à distance ====
 +
 +**Sécurité -> SSH**.
 +<WRAP clear></WRAP>
 +\\
 +
 +{{ Images_Cahier-201-02-017.png?600}}
 +==== FTP ====
 +
 +**Configuration -> FTP ->** onglet **Configurer**.
 +
 +{{Images_icone-201-001_doigt.png?22}} Moodle utilise son propre logiciel FTP, il n'est donc pas nécessaire d'activer le service FTP sur le serveur.\\ 
 +__Nous ne recommandons pas d'activer ce service__, car il n'est pas sécuritaire. Pour le transfert de fichiers, il est préférable d'employer des utilitaires sécurisés tels que //WinSCP// ou //FileZilla//.
 +<WRAP clear></WRAP>
 +
 +{{ Images_Cahier-201-02-018.png?600}}
 +==== Serveurs DNS ====
 +
 +**Configuration -> Réseau ->** onglet **Serveur DNS**.
 +
 +Le serveur DNS secondaire peut être //8.8.8.8// ou //1.1.1.1//; le dernier étant plus rapide.
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Ouverture d'une session PuTTY =====
 +
 +Les paramètres du serveur sont définis correctement et on peut utiliser PuTTY pour s'y loguer.
 +
 +Voir PuTTY dans le 
 +[[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis#PuTTY|Cahier-02]]
 +: //Installations & configurations des logiciels prérequis// du "Cours NethServer-101".
 +
 +On se logue en tant que l'utilisateur __root__.
 +
 +<file>
 +login as: root
 +root@10.10.10.75's password: mot-de-passe-de-root
 +Last login: Thu May 16 09:58:33 2019 from 10.10.10.81
 +
 +************ Welcome to NethServer ************
 +
 +This is a NethServer installation.
 +
 +Before editing configuration files, be aware
 +of the automatic events and templates system.
 +
 +
 +          http://docs.nethserver.org
 +
 +***********************************************
 +[root@tchana ~]#
 +</file>
 +
 +==== Adresse IP ====
 +
 +On vérifie les adresses IP du serveur.
 +
 +<file>
 +[root@tchana ~]# ifconfig
 +
 +enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 +        inet 10.10.10.75  netmask 255.255.255.0  broadcast 10.10.10.255
 +        inet6 fe80::a00:27ff:fedd:6373  prefixlen 64  scopeid 0x20<link>
 +        ether 08:00:27:dd:63:73  txqueuelen 1000  (Ethernet)
 +        RX packets 680  bytes 63712 (62.2 KiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 634  bytes 260579 (254.4 KiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +
 +enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 +        inet 192.168.1.75  netmask 255.255.255.0  broadcast 192.168.1.255
 +        inet6 fe80::a00:27ff:feda:1348  prefixlen 64  scopeid 0x20<link>
 +        ether 08:00:27:da:13:48  txqueuelen 1000  (Ethernet)
 +        RX packets 27919  bytes 26181152 (24.9 MiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 20591  bytes 5112156 (4.8 MiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +
 +lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
 +        inet 127.0.0.1  netmask 255.0.0.0
 +        inet6 ::1  prefixlen 128  scopeid 0x10<host>
 +        loop  txqueuelen 1000  (Local Loopback)
 +        RX packets 2534  bytes 309622 (302.3 KiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 2534  bytes 309622 (302.3 KiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Fail2ban ====
 +
 +On vérifie que le pare-feu //Fail2ban// soit installé.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep -i fail2ban
 +
 +fail2ban-firewalld-0.9.7-1.el7.noarch
 +fail2ban-server-0.9.7-1.el7.noarch
 +fail2ban-0.9.7-1.el7.noarch
 +fail2ban-sendmail-0.9.7-1.el7.noarch
 +nethserver-fail2ban-1.1.6-1.ns7.noarch
 +fail2ban-shorewall-0.9.7-1.el7.noarch
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie que Fail2ban roule sur le serveur.
 +
 +<file>
 +[root@tchana ~]# ps aux | grep -i fail2ban
 +
 +root      4586  1.2  0.5 1746708 22656 ?       Sl   12:05   0:28 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b
 +root      7161  0.0  0.0 112728   984 pts/0    S+   12:44   0:00 grep --color=auto -i fail2ban
 +[root@tchana ~]#
 +</file>
 +
 +==== ClamAV ====
 +
 +Par défaut //ClamAV// est installé, mais partiellement, et s'occupe seulement du balayage des courriels.
 +
 +Dans le 
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#ClamAV|Cahier-03]]
 +: //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101", nous avons installé ClamAV qui s'occupe aussi du balayage du système de fichiers.
 +
 +On vérifie que l'antivirus ClamAV pour le système de fichiers soit installé.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep -i clamav
 +
 +clamav-scanner-systemd-0.101.2-1.el7.x86_64
 +clamav-lib-0.101.2-1.el7.x86_64
 +clamav-server-systemd-0.101.2-1.el7.x86_64
 +clamav-unofficial-sigs-5.6.2-7.el7.noarch
 +clamav-update-0.101.2-1.el7.x86_64
 +clamav-0.101.2-1.el7.x86_64
 +clamav-filesystem-0.101.2-1.el7.noarch
 +[root@tchana ~]#
 +</file>
 +
 +{{ Images_Cahier-201-02-019.png?600}}
 +**Configuration -> Scanner Antivirus ->** onglet **Clamscan**.
 +
 +ClamAV lancera un balayage complet du système à //**01h00**//.
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Utilisateurs =====
 +
 +{{ Images_Cahier-201-02-020.png?600}}
 +==== Utilisateur michelandre ====
 +
 +**Gestion -> Utilisateurs et groupes ->** onglet **Utilisateurs**.
 +
 +L'utilisateur __michelandre__ a été créé dans le 
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#Nouvel utilisateur|Cahier-03]]
 +: //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101".
 +\\ 
 +
 +===== Fichier hosts du poste de travail =====
 +
 +{{ Images_Cahier-201-05-005.png?400}}
 +Nous sommes sur un réseau LOCAL et vu que nous n'avons pas de serveur DNS pour ce réseau, on ajoute des entrées ''moodle'' dans le fichier:\\ 
 +<WRAP centeralign>''C:\Windows\System32\drivers\etc\hosts''</WRAP>
 + du poste de travail afin qu'il puisse trouver l'adresse IP de notre serveur Moodle.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Pour un serveur directement branché à l'Internet, cette procédure de modification du fichier ''hosts'' du poste de travail n'est pas nécessaire __s'il existe des CNAME moodle__ chez le régistraire du domaine.
 +<WRAP clear></WRAP>
 +\\ 
 +
 +====== Prérequis ======
 +
 +===== ClamAV =====
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=clamscan|https://wiki.nethserver.org/doku.php?id=clamscan]].\\ 
 +Il n'y a pas beaucoup de virus conçus pour les distributions Linux et, par conséquent, la plupart des utilisateurs de tels systèmes ne se donnent pas la peine d'utiliser un logiciel antivirus. Toutefois, ceux qui souhaitent pouvoir analyser leur système, ou d’autres systèmes Windows connectés sur un PC Linux via un réseau, peuvent utiliser ClamAV. ClamAV est un moteur antivirus LIBRE conçu pour détecter les virus, les chevaux de Troie, les logiciels malveillants et autres menaces. Il prend en charge plusieurs formats de fichiers //(documents, exécutables ou archives)// et utilise des fonctionnalités de balayages en traitement multifil(( **Traitement multifil:** Traitement multitâche qui se traduit par l'exécution simultanée des fils d'un même processus, et qui permet d'accélérer l'exécution d'un programme par l'exploitation à d'autres fins du temps d'attente imposé au processeur lors de l'accès aux données.//Notes://- Le traitement multifil est très utilisé, notamment pour le traitement synchronisé de données audio et vidéo.- Lors du traitement multifil, les fils constituant le processus sont exécutés de façon imbriquée de manière à simuler la simultanéité.- À la différence du multitraitement qui fonctionne au niveau de l'application, le traitement multifil fonctionne au niveau des fils du processus. Il a l'avantage de consommer moins de ressources que le traitement simultané de plusieurs processus. Par contre, il implique la synchronisation du partage des ressources et de la mémoire du processeur entre les différents fils qui composent le processus traité.\\ 
 +//Référence://[[http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8351242|http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8351242]].\\ \\ )) et reçoit les mises à jour de sa base de données de signatures au moins 3 à 4 fois par jour.
 +
 +==== Installation du référentiel stephdl ====
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=stephdl_repository|https://wiki.nethserver.org/doku.php?id=stephdl_]].
 +
 +Si ce n'est déjà fait, vous devez installer le référentiel //stephdl//.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# yum install -y  http://mirror.de-labrusse.fr/NethServer/7/x86_64/nethserver-stephdl-1.0.7-1.ns7.sdl.noarch.rpm
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total size: 40 k
 +Installed size: 40 k
 +...
 +Installed:
 +  nethserver-stephdl.noarch 0:1.0.7-1.ns7.sdl
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +Vérification.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep stephdl
 +
 +nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
 +[root@tchana ~]#
 +</file>
 +
 +==== Installation de ClamAV ====
 +
 +Si ce n'est déjà fait, on installe ClamAV.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# yum install -y nethserver-clamscan --enablerepo=stephdl
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package  (+1 Dependent package)
 +Upgrade             ( 6 Dependent packages)
 +
 +Total download size: 60 k
 +...
 +Installed:
 +  nethserver-clamscan.noarch 0:0.1.2-3.ns7.sdl
 +
 +Dependency Installed:
 +  clamav-scanner-systemd.x86_64 0:0.101.2-1.el7
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +
 +==== Mise à jour ====
 +
 +On peut manuellement mettre à jour la BD des virus.
 +
 +<file>
 +[root@tchana ~]# freshclam
 +
 +ClamAV update process started at Sat Aug 17 20:51:45 2019
 +main.cvd is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
 +nonblock_connect: connect(): fd=6 errno=101: Network is unreachable
 +Can't connect to port 80 of host database.clamav.net (IP: 2606:4700::6810:db54)
 +WARNING: getfile: daily-25425.cdiff not found on database.clamav.net (IP: 104.16.218.84)
 +WARNING: getpatch: Can't download daily-25425.cdiff from database.clamav.net
 +WARNING: getfile: daily-25425.cdiff not found on database.clamav.net (IP: 104.16.218.84)
 +WARNING: getpatch: Can't download daily-25425.cdiff from database.clamav.net
 +WARNING: getfile: daily-25425.cdiff not found on database.clamav.net (IP: 104.16.218.84)
 +WARNING: getpatch: Can't download daily-25425.cdiff from database.clamav.net
 +WARNING: Incremental update failed, trying to download daily.cvd
 +nonblock_connect: connect(): fd=6 errno=101: Network is unreachable
 +Can't connect to port 80 of host database.clamav.net (IP: 2606:4700::6810:da54)
 +Downloading daily.cvd [100%]
 +daily.cvd updated (version: 25544, sigs: 1725545, f-level: 63, builder: raynman)
 +Downloading bytecode-329.cdiff [100%]
 +Downloading bytecode-330.cdiff [100%]
 +bytecode.cld updated (version: 330, sigs: 94, f-level: 63, builder: neo)
 +Database updated (6291888 signatures) from database.clamav.net (IP: 104.16.219.84)
 +[root@tchana ~]#
 +</file>
 +
 +==== Configuration ====
 +
 +Si ce n'est déjà fait, on configure Clamscan.
 +
 +On se logue à l'interface Web du Serveur NethServer à: https://10.10.10.75:980.
 +
 +//**Configuration -> Scanner Antivirus ->** onglet **Clamscan**//.
 +
 +{{ Images_Cahier-201-01-005.png?600}}
 +
 +☑ //**Activer l'analyse des fichiers système**//\\ 
 +On coche cette option.
 +
 +On choisit l'heure de l'analyse.
 +
 +☑ //**Déplacer les fichiers détectés vers la corbeille**//\\ 
 +On coche cette option.
 +
 +☑ //**Oui, je suis totalement sûr**//\\ 
 +On coche cette option.
 +
 +Comme on le voit, la BD des virus est à jour.
 +
 +**SOUMETTRE**.
 +<WRAP clear></WRAP>
 +\\
 +
 +{{Images_Cahier-101-03-006.png?25}} Si on change un des paramètres ci-dessous, il faut ensuite cliquer **SOUMETTRE** pour que Clamscan enregistre le changement.
 +
 +<WRAP column 30%>
 +Onglet //**Détections**//, on prend les défauts.
 +|{{ Images_Cahier-201-01-006.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Onglet //**Fichiers**//, on prend les défauts.
 +|{{ Images_Cahier-201-01-007.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Onglet //**PUA**//, on prend les défauts.
 +|{{ Images_Cahier-201-01-008.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> À l'onglet //**Quarantaine**//, on peut récupérer les fichiers qui ont généré une fausse alarme.
 +
 +<nowiki>-</nowiki> Onglet //**Signatures**//, on prend les défauts
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-01-009.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-01-010.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Lancement manuel d'un balayage ====
 +
 +À la console du Serveur NethServer, on peut lancer un balayage en __arrière-plan__ en ajoutant **<wrap em>&</wrap>** à la fin de la commande de démarrage //(prendra plusieurs minutes à terminer)//.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/nethserver-clamscan &
 +
 +[1] 25238
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ps aux | grep -i nethserver-clamscan
 +
 +root     25238  0.0  0.2 151384  7848 pts/0    S    16:40   0:00 /usr/bin/perl -w /sbin/e-smith/nethserver-clamscan
 +root     25695  0.0  0.0 112708   988 pts/0    R+   16:47   0:00 grep --color=auto -i nethserver-clamscan
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 55%>
 +L'interface Web affiche que le balayage est //En cours d'exécution//.
 +</WRAP>
 +<WRAP column 35%>
 +|{{ Images_Cahier-201-01-011.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +Lorsque le balayage est terminé, le message ci-dessous apparaît à la console du Serveur NethServer.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]#
 +[1]+  Done            /sbin/e-smith/nethserver-clamscan
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +<WRAP column 46%>
 +On peut examiner le résultat du balayage en allant à:
 +
 +//**Configuration -> Scanner Antivirus ->**// onglet //**Quarantaine**//.
 +
 +{{Images_icone-201-003_Note.png?25}} Pour la documentation anglaise seulement, voir: [[https://github.com/Cisco-Talos/clamav-faq|https://github.com/Cisco-Talos/clamav-faq]].
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-01-012.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Collection PHP =====
 +
 +Version PHP actuelle pour notre Serveur NethServer-7.6-1810.
 +
 +<file>
 +[root@tchana ~]# php --version
 +
 +PHP 5.4.16 (cli) (built: Oct 30 2018 19:30:51)
 +Copyright (c) 1997-2013 The PHP Group
 +Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
 +[root@tchana ~]#
 +</file>
 +
 +Comme on le voit, notre version //5.4.16// de PHP est légèrement vieillotte.
 +
 +{{Images_icone-201-003_Note.png?25}} Nous allons installer la Collection PHP qui fournit une version plus récente tout en gardant installée la version originale.
 +
 +==== Collections de logiciels ====
 +
 +{{Images_icone-201-001_doigt.png?22}} Les développeurs de RedHat ont pensé qu'un inconvénient, avec entre autres la version 5 de PHP, allait survenir tôt ou tard et ont écrit les paquetages des //Collections//.
 +
 +Tous les //RPM// des Collections sont installés dans le répertoire ''/opt''; ce qui empêche toutes interférences ou conflits avec les installations par défaut.
 +
 +==== But de la Collection PHP ====
 +
 +Le but de la //Collection PHP// est d'installer //PHP-5.6//, //PHP-7.0//, //PHP-7.1//, //PHP-7.2// et //PHP-7.3// parallèlement à la version installée par défaut avec NethServer-7.6.1810, sans devoir supprimer ou modifier cette dernière. Cette Collection utilise les RPM du référentiel **remi** qui sont en fait, les mêmes que ceux sur le site Web officiel, mais ils ont l'avantage de fournir plus de choix. Cette Collection nécessite d'installer le référentiel **stephdl**.
 +
 +==== Prérequis pour l'installation de la Collection PHP ====
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=php-scl|https://wiki.nethserver.org/doku.php?id=php-scl]].\\ 
 +Il faut installer les référentiels //stephdl// et //remi// pour pouvoir installer la //Collection PHP//.
 +
 +==== Référentiel stephdl ====
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=stephdl_repository|https://wiki.nethserver.org/doku.php?id=stephdl_repository]].
 +
 +On vérifie si le référentiel **stephdl** est déjà installé.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep nethserver-stephdl
 +
 +nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
 +[root@tchana ~]#
 +</file>
 +
 +Si ce n'est déjà fait, on installe ce référentiel.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# yum install -y  http://mirror.de-labrusse.fr/NethServer/7/x86_64/nethserver-stephdl-1.0.7-1.ns7.sdl.noarch.rpm
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total size: 40 k
 +Installed size: 40 k
 +...
 +Installed:
 +  nethserver-stephdl.noarch 0:1.0.7-1.ns7.sdl
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +Vérification.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# rpm -qa | grep stephdl
 +
 +nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +==== Référentiel remi ====
 +
 +On vérifie si le référentiel **remi** est déjà installé.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep remi
 +
 +remi-release-7.6-2.el7.remi.noarch
 +[root@tchana ~]#
 +</file>
 +
 +Si ce n'est déjà fait, on installe ce référentiel.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total size: 19 k
 +Installed size: 19 k
 +...
 +Installed:
 +  remi-release.noarch 0:7.6-2.el7.remi
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +On vérifie.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# rpm -qa | grep remi
 +
 +remi-release-7.6-2.el7.remi.noarch
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +==== Installation de la Collection PHP ====
 +
 +<file>
 +[root@tchana ~]# yum install -y nethserver-php-scl --enablerepo=stephdl
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet (+130 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 47 M
 +Taille d'installation : 136 M
 +...
 +  Installation : scl-utils-20130529-19.el7.x86_64                                     1/131
 +...
 +  Installation : nethserver-php-scl-1.2.6-1.ns7.sdl.x86_64                          131/131
 +...
 +  Vérification : php72-php-xml-7.2.21-1.el7.remi.x86_64                               1/131
 +...
 +  Vérification : php73-php-json-7.3.8-1.el7.remi.x86_64                             131/131
 +
 +Installé :
 +  nethserver-php-scl.x86_64 0:1.2.6-1.ns7.sdl
 +
 +Dépendances installées :
 +  enchant.x86_64 1:1.6.0-8.el7
 +...
 +  tcl.x86_64 1:8.5.13-8.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +==== Usage ====
 +
 +Normalement, l'interface Web devrait être complète et vous ne devriez pas devoir utiliser la ligne de commande. Si vous pensez que //Stéphane de Labrusse// pourrait améliorer les paramètres PHP en apportant plus d'options, veuillez le lui demander: //stephd arobas de-labrusse point fr//.
 +
 +Les réglages sont répartis à deux endroits.
 +
 +  - À la page **Gestion -> Hôtes virtuels**.\\ 
 +Là, après avoir créé un hôte virtuel, vous pouvez choisir la version que vous utiliserez pour l'//Ibay/virtualhost// //(par défaut, la version PHP d’Apache)//.\\ - Vu que NethServer utilise un script CGI pour gérer la version de PHP, vous ne pourrez pas ajuster les paramètres PHP avec le module //nethserver-phpsettings//; vous devez régler les paramètres à l'aide du fichier ''php.ini'' correspondant. Stéphane de Labrusse voulait coder quelque chose de "cool" afin que tous les paramètres ne soient pas basés uniquement sur des commandes ''db…'' Il a alors crée une page de configuration.
 +  -  À la page **Configuration -> Paramètres PHP**.\\ Là, vous pouvez choisir la version PHP que vous souhaitez utiliser __pour l’ensemble du serveur__.\\ - Lorsqu'Apache est le gestionnaire de PHP, vous pouvez alors définir les paramètres PHP avec le module //nethserver-phpsettings//. En d'autres termes, si vous souhaitez utiliser le module //nethserver-phpsettings// et que vous avez besoin d'une version spécifique de PHP, vous devez utiliser cette version __pour tout le serveur__. Bien sûr, vous pouvez revenir à la version par défaut en cas de problème avec une ancienne application Web. Dans d’autres parties de cette page, vous pouvez ajuster les paramètres PHP pour toutes les versions de PHP.
 +\\ 
 +
 +==== Répertoire d'installation ====
 +
 +{{Images_icone-201-003_Note.png?25}} Toutes les versions PHP de la Collection proviennent du référentiel **remi-safe** et sont installées dans le répertoire ''/opt/remi''.
 +
 +On vérifie la présence du référentiel //remi-safe// sur le Serveur NethServer.
 +
 +<file>
 +[root@tchana ~]# yum repolist | grep remi
 +
 +* remi-safe: mirror.team-cymru.com
 +remi-safe                   Safe Remi's RPM repository for Enterprise Lin  3 191
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le répertoire ''/opt''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /opt
 +
 +total 0
 +0 drwxr-xr-x. 7 root root 81 Jan  4 09:16 puppetlabs
 +0 drwxr-xr-x  7 root root 71 17 août  21:00 remi
 +0 drwxr-xr-x  3 root root 27 17 août  21:15 rh
 +[root@tchana ~]#
 +</file>
 +
 +On affiche le répertoire ''/opt/remi''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /opt/remi
 +
 +total 0
 +0 dr-xr-xr-x 3 root root 32 17 août  21:00 php56
 +0 dr-xr-xr-x 3 root root 32 17 août  21:00 php70
 +0 dr-xr-xr-x 3 root root 32 17 août  21:00 php71
 +0 dr-xr-xr-x 3 root root 32 17 août  21:00 php72
 +0 dr-xr-xr-x 3 root root 32 17 août  21:00 php73
 +[root@tchana ~]#
 +</file>
 +
 +==== PHP72 par défaut après une connexion à la ligne de commande ====
 +
 +//Référence:// [[http://appdev.oit.umn.edu/2015/02/11/scl/|http://appdev.oit.umn.edu/2015/02/11/scl/]]
 +
 +On crée le fichier d'activation qui sera lu lors d'une connexion à une console du Serveur NethServer.
 +
 +{{Images_icone-201-004_Triangle.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/profile.d/activer-php72.sh <<'EOT'
 +#!/bin/bash
 +source /opt/remi/php72/enable
 +if [[ "$X_SCLS" != *php72* ]]; then
 +src="`scl enable php72 'echo $X_SCLS'`"
 +pkgs=(${src// / })
 +uniq=($(printf "%s\n" "${pkgs[@]}" | sort -u));
 +export X_SCLS="${uniq[@]}"
 +fi
 +EOT
 +
 +
 +</file>
 +
 +On rend le fichier exécutable.
 +
 +<file>
 +[root@tchana ~]# chmod +x /etc/profile.d/activer-php72.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /etc/profile.d/activer-php72.sh
 +
 +4 -rwxr-xr-x 1 root root 215 17 août  21:05 /etc/profile.d/activer-php72.sh
 +[root@tchana ~]#
 +</file>
 +
 +=== Vérification si PHP72 est le défaut ===
 +
 +{{Images_icone-201-004_Triangle.png?25}} On ferme la connexion PuTTY et on en ouvre une nouvelle.
 +
 +On vérifie l'installation de la Collection.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep scl-
 +
 +scl-utils-20130529-19.el7.x86_64
 +nethserver-php-scl-1.2.6-1.ns7.sdl.x86_64
 +centos-release-scl-rh-2-3.el7.centos.noarch
 +centos-release-scl-2-3.el7.centos.noarch
 +[root@tchana ~]#
 +</file>
 +
 +Collections installées.
 +
 +<file>
 +[root@tchana ~]# scl -l
 +
 +php56
 +php70
 +php71
 +php72
 +php73
 +[root@tchana ~]#
 +</file>
 +
 +Quel est le PHP par défaut?
 +
 +<file>
 +[root@tchana ~]# which php
 +
 +/opt/remi/php72/root/usr/bin/php
 +[root@tchana ~]#
 +</file>
 +
 +Quelle est sa version?
 +
 +<file>
 +[root@tchana ~]# php --version
 +
 +PHP 7.2.21 (cli) (built: Jul 30 2019 14:10:18) ( NTS )
 +Copyright (c) 1997-2018 The PHP Group
 +Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
 +    with Zend OPcache v7.2.21, Copyright (c) 1999-2018, by Zend Technologies
 +[root@tchana ~]#
 +</file>
 +
 +Notre fichier ''activer-php72.sh'' fonctionne correctement.
 +\\ 
 +
 +=== Sauvegarde  du fichier d'activation ===
 +
 +On vérifie si le nom du fichier ''/etc/profile.d/activer-php72.sh'' est déjà présent dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_icone-201-004_Triangle.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/profile.d/activer-php72.sh"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/profile.d/activer-php72.sh
 +
 +/etc/profile.d/activer-php72.sh
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __/etc/profile.d/activer-php72.sh__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +\\ 
 +
 +==== Mise à jour de la Collection ====
 +
 +NethServer-7.6.1810  utilise intrinsèquement le référentiel //remi-safe//. Ce qui signifie qu'il est activé par défaut. Lancez simplement la commande suivante pour mettre à jour la Collection PHP:
 +
 +<file>
 +[root@tchana ~]# yum update -y nethserver-php-scl --enablerepo=stephdl
 +
 +Loaded plugins: changelog, fastestmirror, nethserver_events
 +Loading mirror speeds from cached hostfile
 + * ce-base: it.centos.contactlab.it
 + * ce-extras: it.centos.contactlab.it
 + * ce-updates: it.centos.contactlab.it
 + * epel: epel.mirror.constant.com
 + * nethforge: mirror.nethserver.org
 + * nethserver-base: mirror.nethserver.org
 + * nethserver-updates: mirror.nethserver.org
 + * remi-safe: rpms.remirepo.net
 +No packages marked for update
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-004_Triangle.png?25}} S'il y avait une mise à jour, elle serait installée avec cette commande.\\ 
 +{{Images_icone-201-003_Note.png?25}} La mise à jour du Serveur NethServer s'occupe aussi de celle de la Collection PHP.
 +\\ 
 +
 +==== Ajustement des paramètres PHP ====
 +
 +Les valeurs de certains paramètres de PHP ne sont pas suffisants pour certains ajouts. Ces paramètres sont: **''MemoryLimit''**, **''PostMaxSize''** et **''UploadMaxFilesize''**. Il faut les ajuster.
 +
 +Affichage des paramètres par défaut.
 +
 +<file>
 +[root@tchana ~]# config show php72
 +
 +php72=configuration
 +    AllowUrlFopen=On
 +    ExposePhp=0
 +    MaxExecutionTime=30
 +    MaxFileUpload=20
 +    MaxInputTime=60
 +    MemoryLimit=128
 +    PostMaxSize=20
 +    UploadMaxFilesize=10
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-001_doigt.png?22}} Il faut obligatoirement que le paramètre ''PostMaxSize'' soit plus grand que celui de ''UploadMaxFilesize''. Si on modifie l'un, il faut vérifier l'autre pour que la correspondance des grandeurs soit respectée.
 +\\ 
 +
 +Ci-dessous, le caractère <wrap em>></wrap> signifie "plus grand que".\\ 
 +{{Images_icone-201-004_Triangle.png?25}} Nous allons ajuster: ''MemoryLimit'' //(250M)// <wrap em>></wrap> ''PostMaxSize'' //(100M)// <wrap em>></wrap> ''UploadMaxFilesize'' //(75M)//.
 +\\ 
 +
 +=== MemoryLimit ===
 +
 +Chaque fois qu'un client fait une requête au serveur Web, PHP génère un processus PHP. Le travail de ce processus est de générer du code HTML qu'il envoie au client. Le processus fournit un temps d'exécution à un script qui crée la réponse à la requête. La limite de mémoire ''MemoryLimit'' est la quantité maximale de mémoire que ce processus peut utiliser. Si la limite est atteinte ou dépassée, le processus échoue et Apache signale une erreur //HTTP 500//.
 +
 +=== PostMaxSize ===
 +
 +Le paramètre ''PostMaxSize'' définit la taille maximale autorisée pour les données d'un //post//. Ce paramètre affecte également le téléchargement de fichiers. Pour télécharger des fichiers volumineux, cette valeur doit absolument être toujours supérieure à ''UploadMaxFilesize''.
 +
 +<WRAP column 30%>
 +=== UploadMaxFilesize ===
 +
 +Pour certaines extensions telles qu'entre autres WooCommerce, WordPress doit autoriser le téléversement de fichiers et la grandeur de ceux-ci ne peut dépasser la limite définie par le paramètre ''UploadMaxFilesize'' de PHP.\\ 
 +La limite ci-contre, __est celle de WordPress__.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-02-200.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +
 +=== Version PHP par défaut ===
 +
 +On définit la version PHP par défaut pour Apache.
 +
 +**Configuration -> Paramètres PHP ->** onglet **Version PHP Apache ->** cliquer  **Php72 SCL Version -> SOUMETTRE**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-02-201.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +=== Ajustements des paramètres de la version PHP-7.2 ===
 +
 +Onglet **Php V7.2 SCL**\\
 +Ajuster tel que ci-contre //(250M - 100M - 75M)//\\ 
 +**-> SOUMETTRE**.
 +
 +{{Images_icone-201-006_Securite.png?25}} //**Allow PHP access to remote files**// est un bris de sécurité.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-02-202.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 30%>
 +Onglet **Version par défaut de PHP**\\ 
 +Ajuster tel que ci-contre //(250M - 75M - 75M)//\\ 
 +**-> SOUMETTRE**.\\
 +
 +{{Images_icone-201-006_Securite.png?25}} //**Autoriser l'accès PHP aux fichiers distants**// est un bris de sécurité.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-02-203.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Vérifications à la ligne de commande ===
 +
 +''MemoryLimit''
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i Memory_Limit
 +
 +memory_limit                           = 250M
 +[root@tchana ~]#
 +</file>
 +
 +''PostMaxSize''
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i post_max_size
 +
 +post_max_size                          = 100M
 +[root@tchana ~]#
 +</file>
 +
 +''UploadMaxFilesize''
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i upload_max_filesize
 +
 +upload_max_filesize                    = 75M
 +</file>
 +
 +{{Images_icone-201-004_Triangle.png?25}} Comme on le voit ci-dessus, les grandeurs maximales pour //PHP-7.2// sont maintenant de: ''MemoryLimit'' //(250M)// <wrap em>></wrap> ''PostMaxSize'' //(100M)// <wrap em>></wrap> ''UploadMaxFilesize'' //(75M)//.
 +\\ 
 +
 +On vérifie la configuration de //PHP-7.2//.
 +
 +<file>
 +[root@tchana ~]# config show php72
 +
 +php72=configuration
 +    AllowUrlFopen=Off
 +    ExposePhp=0
 +    MaxExecutionTime=30
 +    MaxFileUpload=20
 +    MaxInputTime=60
 +    MemoryLimit=250
 +    PostMaxSize=100
 +    UploadMaxFilesize=75
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Collection MariaDB 10.2 =====
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=mariadb102|https://wiki.nethserver.org/doku.php?id=mariadb102]].
 +
 +La Collection //rh-mariadb102// est une récente version stable de MariaDB-10.2. Cette Collection de logiciels offre aux utilisateurs de CentOS et RHEL une alternative à MySQL. Compatible binairement avec MySQL et pouvant remplacé ce dernier. Cette version fournit plusieurs nouvelles fonctionnalités et améliorations.
 +
 +==== Fin de vie ====
 +
 +//Référence:// [[https://mariadb.org/about/maintenance-policy/|https://mariadb.org/about/maintenance-policy/]].
 +
 +La Foundation MariaDB peut décider de maintenir les versions sélectionnées au-delà de la période normale de 5 ans (//fin de vie//(( **Fin de vie**//(////Eol - ////End of life////)//: Se dit en [[https://fr.wikipedia.org/wiki/Informatique|informatique]] d'un logiciel ou d'un produit en fin de vie que l'[[https://fr.wikipedia.org/wiki/Éditeur_de_logiciel|éditeur]] ou le [[https://fr.wikipedia.org/wiki/Constructeur_informatique|constructeur]] ne fait plus évoluer.\\ 
 +//Référence://[[https://fr.wikipedia.org/wiki/Fin_de_vie_(produit)|https://fr.wikipedia.org/wiki/Fin_de_vie_(produit)]].
 +\\ \\ ))//)// si leur utilisation est exceptionnellement répandue. Vu que la version //MariaDB 5.5//, incluse dans plusieurs distributions Linux importantes, jouissait d'une durée de vie jusqu'en 2017 //(date d'émission + 5ans)//, la Fondation s’est engagée à la maintenir jusqu’en 2020.
 +
 +<WRAP column 50%>
 +Vu que la version //MariaDB 10.2// est assurée d'une durée de vie __jusqu'en 2022__, nous avons décidé d'utiliser cette Collection au lieu de la version //5.5.60// ci-dessous fournie par NethServer.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep mariadb
 +
 +mariadb-server-5.5.60-1.el7_5.x86_64
 +mariadb-5.5.60-1.el7_5.x86_64
 +mariadb-libs-5.5.60-1.el7_5.x86_64
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-201-01-016.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Prérequis pour l'installation ====
 +
 +L'installation de MariaDB 10.2 requière le référentiel //stephdl// que nous avons déjà installé. Voir le paragraphe 
 +[[nethserver_201_cahier_05_moodle#Installation du référentiel stephdl]]
 +.
 +
 +==== Installation de la Collection ====
 +
 +<file>
 +[root@tchana ~]# yum install -y --enablerepo=stephdl nethserver-rh-mariadb102
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet (+8 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 27 M
 +Taille d'installation : 136 M
 +...
 +Installé :
 +  nethserver-rh-mariadb102.noarch 0:0.0.5-1.ns7.sdl
 +
 +Dépendances installées :
 +  rh-mariadb102.x86_64 0:3.0-5.el7
 +  rh-mariadb102-mariadb.x86_64 1:10.2.22-1.el7
 +  ...
 +  rh-mariadb102-runtime.x86_64 0:3.0-5.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +Vérification
 +
 +On affiche les Collections installées.
 +
 +<file>
 +[root@tchana ~]# scl -l
 +
 +php56
 +php70
 +php71
 +php72
 +php73
 +rh-mariadb102
 +[root@tchana ~]#
 +</file>
 +
 +La Collection a été installée dans le répertoire ''/opt/rh''.
 +
 +<file>
 +[root@tchana ~]# ls -als /opt/rh
 +
 +total 0
 +0 drwxr-xr-x  3 root root 27 17 août  21:15 .
 +0 drwxr-xr-x. 5 root root 46 17 août  21:00 ..
 +0 dr-xr-xr-x  3 root root 59 17 août  21:15 rh-mariadb102
 +[root@tchana ~]#
 +</file>
 +
 +Les propriétés de la Collection.
 +
 +<file>
 +[root@tchana ~]# config show rh-mariadb102-mariadb
 +
 +rh-mariadb102-mariadb=configuration
 +    LocalNetworkingOnly=no
 +    MaxAllowedPacket=16M
 +    TCPPort=3312
 +    access=private
 +    status=enabled
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Le port <wrap em>3312</wrap> est à retenir, car nous devrons le spécifier lors de l'installation de Moodle.
 +
 +On vérifie que le démon soit activé.
 +
 +<file>
 +[root@tchana ~]# systemctl list-unit-files | grep mariadb
 +
 +mariadb.service                               disabled
 +rh-mariadb102-mariadb.service                 enabled
 +rh-mariadb102-mariadb@.service                disabled
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie que le démon soit en exécution.
 +
 +<file>
 +[root@tchana ~]# ps aux | grep mariadb102
 +
 +mysql     3653  0.2  2.3 1764152 92156 ?       Ssl  19:38   0:01 /opt/rh/rh-mariadb102/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb102/root/usr
 +root      5716  0.0  0.0 112736   980 pts/0    S+   19:53   0:00 grep --color=auto mariadb102
 +[root@tchana ~]#
 +</file>
 +
 +==== Journal ====
 +
 +Le journal pour cette Collection est situé dans le fichier ''/var/log/rh-mariadb102/mariadb.log''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/log/rh-mariadb102/mariadb.log
 +
 +12 -rw-rw---- 1 mysql mysql 7248 17 août  21:17 /var/log/rh-mariadb102/mariadb.log
 +[root@tchana ~]#
 +</file>
 +
 +==== Usage ====
 +
 +{{Images_icone-201-002_Lumiere.png?25}} Il n'existe pas de page dédiée à cette Collection dans l'interface Web. Si vous en avez besoin d'une, installez //nethserver-phpmyadmin//, puis lancez ''signal-event nethserver-phpmyadmin-save''.
 +
 +Stéphane a créé plusieurs raccourcis pour faciliter l'utilisation de cette Collection depuis votre terminal.
 +
 +<WRAP box>
 +<file>
 +mysql102
 +mysqladmin102
 +mysqlbinlog102
 +mysqlcheck102
 +mysql_config_editor102
 +mysqld_multi102
 +mysqldump102
 +mysqlimport102
 +mysql_plugin102
 +mysqlshow102
 +mysqlslap102
 +</file>
 +</WRAP>
 +
 +Si vous voulez lancer MariaDB 10.2 depuis votre terminal, utilisez la commande suivante.
 +
 +<WRAP box>
 +<file>
 + mysql102
 +</file>
 +</WRAP>
 +
 +==== Mise à jour de la Collection ====
 +
 +Nous utilisons pour NS7, le référentiel //remi-safe//. Ce qui signifie qu'il est activé par défaut, lancez simplement la commande suivante pour la mise à jour de la Collection.
 +
 +<file>
 +[root@tchana ~]# yum update -y rh-mariadb102-mariadb --enablerepo=stephdl
 +
 +Modules complémentaires chargés : changelog, fastestmirror, nethserver_events
 +Loading mirror speeds from cached hostfile
 + * ce-base: mirror.net.cen.ct.gov
 + * ce-extras: mirror.net.cen.ct.gov
 + * ce-sclo-rh: mirror.net.cen.ct.gov
 + * ce-sclo-sclo: mirror.net.cen.ct.gov
 + * ce-updates: mirror.net.cen.ct.gov
 + * epel: mirror.siena.edu
 + * nethforge: mirror.nethserver.org
 + * nethserver-base: mirror.nethserver.org
 + * nethserver-updates: mirror.nethserver.org
 + * remi-safe: mirror.team-cymru.com
 +No packages marked for update
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-004_Triangle.png?25}} S'il y avait une mise à jour, elle serait installée avec cette commande.
 +\\ 
 +\\ 
 +
 +===== Installation de git =====
 +
 +On installe git qui nous aidera pour les mises à jour de notre version Moodle.
 +
 +<file>
 +[root@tchana ~]# yum install -y git
 +
 +...
 +Installation   1 Paquet (+3 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 4.5 M
 +Taille d'installation : 22 M
 +...
 +Installé:
 +  git.x86_64 0:1.8.3.1-20.el7
 +
 +Dépendance(s) installée(s) :
 +  perl-Error.noarch 1:0.17020-2.el7               perl-Git.noarch 0:1.8.3.1-20.el7
 +  perl-TermReadKey.x86_64 0:2.30-20.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Création de l'hôte virtuel moodle =====
 +
 +**Gestion -> Hôtes virtuels -> CRÉER NOUVEAU ->** onglet  **Général**.
 +
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-006.png?400 }}|
 +
 +//**Nom**//\\ 
 +On peut utiliser n'importe quel mot pour //**Nom**//, mais il est préférable d'utiliser **moodle**, car un nouveau répertoire sera créé pour le nouvel hôte virtuel et il portera ce nom.
 +
 +C'est dans ce répertoire qu'on installera Moodle.
 +
 +On entre les informations demandées.
 +
 +**-> SOUMETTRE**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-007.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 46%>
 +\\ 
 +\\ 
 +<nowiki>-</nowiki> Onglet **Bibliothèque d'applications PHP**.\\ 
 +<nowiki>-</nowiki> On ajuste tel que ci-dessous.\\ 
 +<nowiki>-</nowiki> **SOUMETTRE**.
 +|{{ Images_Cahier-201-05-008.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> Onglet **Paramètres PHP**.\\ 
 +<nowiki>-</nowiki> On ajuste tel que ci-dessous.\\ 
 +<nowiki>-</nowiki> //**Autoriser l'accès PHP aux fichiers distants**// <wrap em>est une faille de sécurité</wrap>.\\ - **SOUMETTRE**.
 +|{{ Images_Cahier-201-05-009.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 20%>
 +On vérifie le résultat.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-010.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +==== Vérification du répertoire moodle ====
 +
 +La création de l'hôte virtuel a produit un nouveau répertoire: ''/var/lib/nethserver/vhost/moodle''. Ce répertoire prend le //**Nom**// utilisé à la section [[nethserver_201_cahier_05_moodle#Création de l'hôte virtuel moodle]].
 +
 +<file>
 +[root@tchana ~]# ls -alsd /var/lib/nethserver/vhost/moodle
 +
 +0 drwxr-sr-x 2 ftp apache 6 17 août  21:31 /var/lib/nethserver/vhost/moodle
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} On voit que le propriétaire est ftp au cas où on utiliserait le service FTP pour la manipulation des fichiers du site. Moodle a son propre processus de téléchargement et il n'a pas besoin d'un service FTP externe. De plus, avoir ftp comme propriétaire interfère avec certains logiciels tel WordPress. C'est pour cette raison qu'on n'active jamais FTP sur nos serveurs NethServer.
 +
 +On change le propriétaire du répertoire.
 +
 +<file>
 +[root@tchana ~]# chown apache /var/lib/nethserver/vhost/moodle
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -alsd  /var/lib/nethserver/vhost/moodle
 +
 +0 drwxr-sr-x 2 apache apache 6 17 août  21:31 /var/lib/nethserver/vhost/moodle
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +==== Création d'une entrée DNS pour l'hôte moodle ====
 +
 +<WRAP column 30%>
 +**Configuration -> DNS ->** onglet **Hôtes -> CRÉER NOUVEAU**.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-05-011.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +{{Images_Cahier-101-03-006.png?25}} On coche //**wildcard dns record**// et ainsi on pourra accéder à l'hôte virtuel en utilisant tous ses CNAME.
 +
 +Le //**Nom d'hôte**// est le FQDN qu'on utilisera pour accéder à notre Moodle.
 +
 +L'//**Adresse IP**// est celle de l'interface du réseau LOCAL du Serveur NethServer.
 +
 +**-> SOUMETTRE**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-012.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +On vérifie le résultat.
 +
 +Si on utilise une machine virtuelle d'un Cahier précédent, il pourrait y avoir d'autres entrées DNS déjà présentes.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-013.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +==== Configuration de la messagerie électronique ====
 +
 +Si on veut que Moodle puisse envoyer et recevoir des courriels, il faut configurer le domaine de l'hôte virtuel en tant que serveur de messagerie électronique.
 +
 +<WRAP column 46%>
 +**Configuration -> Messagerie électronique ->** onglet  **Domaines -> CRÉER NOUVEAU**.
 +|{{ Images_Cahier-201-05-014.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> On entre les informations demandées.\\ 
 +<nowiki>-</nowiki> **SOUMETTRE**.
 +|{{ Images_Cahier-201-05-015.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +On vérifie le résultat.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-016.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +==== Création d'un alias pour l'utilisateur michelandre ====
 +
 +Il nous faut créer un alias de messagerie pour l'utilisateur __michelandre__ qui sera l'administrateur du site Moodle. Ainsi, il pourra recevoir des courriels en provenance de Moodle.
 +
 +<WRAP column 46%>
 +\\ 
 +\\ 
 +**Gestion -> Adresse mail ->** onglet  **Alias de messagerie -> CRÉER NOUVEAU**.
 +|{{ Images_Cahier-201-05-017.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> On entre les informations demandées.\\ 
 +<nowiki>-</nowiki> //**Destination**//, on entre **michelandre**, on clique **A­jou­ter** et on choisit **michelandre@micronator-dev.org**.\\ 
 +<nowiki>-</nowiki> **SOUMETTRE**.
 +|{{ Images_Cahier-201-05-018.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +On vérifie le résultat.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-019.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +L'utilisateur __michelandre__ pourra voir ses courriels en se connectant à:\\ 
 +<WRAP centeralign>
 +https://www.micronator-dev.org/webmail\\
 +ou\\ 
 +https://www.mail.moodle.micronator-dev.org/webmail
 +</WRAP>
 +\\ 
 +
 +===== Redirection par le module Proxy inverse =====
 +
 +//Référence:// [[http://docs.nethserver.org/en/v7/ui/ProxyPass.html|http://docs.nethserver.org/en/v7/ui/ProxyPass.html]].
 +
 +On installe le module //Proxy Inverse// qui s'occupera de rediriger les accès à Moodle vers le bon endroit.
 +
 +<WRAP column 30%>
 +**Administration -> Gestionnaire des logiciels ->** onglet **Disponible ->** cocher **Proxy inverse -> AJOUTER**.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-05-020.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +\\ 
 +**APPLIQUER LES CHAN­GE­MENTS**.
 +|{{ Images_Cahier-201-05-021.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Recharger la page**.
 +|{{ Images_Cahier-201-05-022.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Le nouveau menu //**Proxy inverse**// est disponible.
 +|{{ Images_Cahier-201-05-023.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Configuration du mandataire inversé ====
 +
 +<WRAP column 46%>
 +**Passerelle -> Mandataire inverse ->** onglet **Hôtes virtuels -> CRÉER NOUVEAU**.
 +{{ Images_Cahier-201-05-024.png?250 }}
 +\\ 
 +On configure le Serveur NethServer en tant que //mandataire inversé// pour:\\ 
 +<WRAP centeralign>
 +**moodle.micronator-dev.org**.
 +</WRAP>
 +<nowiki>-</nowiki> On entre les informations demandées.\\ 
 +<nowiki>-</nowiki> **SOUMETTRE**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-025.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 20%>
 +On vérifie le résultat.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-026.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Vérification de la connexion redirigée et sécurisée ====
 +
 +{{Images_Cahier-101-03-003.png?22}} On vidange l'historique de notre navigateur et le cache DNS du poste de travail, puis on s'assure que //java script// et les //témoins// soient activés.\\ 
 +On se rend à l'URL  https://www.moodle.micronator-dev.org, on ajoute une exception pour le nouveau certificat.\\ 
 +{{Images_icone-201-003_Note.png?25}} Si on utilisait seulement le protocole http:<nowiki>//</nowiki>..., il serait transformé en http<wrap em>s</wrap>:<nowiki>//</nowiki>..., car lors de la configuration à l'onglet Hôtes virtuels, nous avons coché: {{nethserver_201_cahier_05_moodle_image_87.png}}.
 +
 +<WRAP column 30%>
 +C'est la page Web par défaut de NethServer qui s'affiche. C'est le comportement normal, car nous n'avons encore aucun fichier dans le répertoire de Moodle.
 +
 +{{Images_Cahier-101-03-006.png?25}} Même si le protocole affiché est **http**<wrap em>s</wrap>, la connexion n'est pas sécurisée, car le cer­ti­fi­cat ne contient pas le CNAME moodle. Le prochain chapitre réglera ce problème.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-05-027.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Certificat Let's Encrypt ======
 +
 +===== CNAME =====
 +
 +{{Images_Cahier-101-03-006.png?25}} On installe un certificat Let's Encrypt selon la section 
 +[[nethserver_101_cahier_04_local_certificat_let_encrypt#Certificat pour un domaine LOCAL]]
 + du **Cahier-04** du "Cours NethServer-101". Ensuite, on se connecte chez [[https://www.cloudflare.com/|https://www.cloudflare.com/]] et on ajoute les CNAME pour //**moodle**//.
 +
 +<WRAP column 46%>
 +On clique **micronator-dev.org**.
 +|{{ Images_Cahier-201-05-028.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +**DNS**.
 +|{{ Images_Cahier-201-05-029.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +On ajoute les CNAME:
 +\\ 
 +\\ 
 +
 +**moodle**,
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +
 +**www.moodle** 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +
 +et **mail.moodle**.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-030.png?700 }}|
 +
 +|{{ Images_Cahier-201-05-031.png?700 }}|
 +
 +|{{ Images_Cahier-201-05-032.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +On rafraîchit la page, on vérifie et on quitte [[https://www.cloudflare.com/|cloudflare.com]].
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-033.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Clé API =====
 +
 +Il nous faut maintenant récupérer notre //clé API Globale//.
 +
 +<WRAP column 30%>
 +\\ 
 +\\
 +\\  
 +<nowiki>-</nowiki> Chez Cloudflare, on déroule le menu de l'usager.\\ 
 +<nowiki>-</nowiki> **My Profile**.
 +|{{ Images_Cahier-201-05-034.png?500 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Au bas de la page, vis-à-vis //**Global API key**//, on clique **View**,\\ 
 +<nowiki>-</nowiki> On entre notre mot de passe et on clique **I'm not a robot**.\\ 
 +<nowiki>-</nowiki> On sélectionne les images du Captcha.\\ 
 +<nowiki>-</nowiki> **View**.
 +|{{ Images_Cahier-201-05-035.png?500 }}|
 +
 +|{{ Images_Cahier-201-05-036.png?500 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +<nowiki>-</nowiki> Notre //clé API Globale// apparaît.\\ 
 +<nowiki>-</nowiki> Cette clé est à garder précieusement et ne la divulguer à personne.\\ 
 +<nowiki>-</nowiki> On copie et sauvegarde cette clé pour la prochaine étape.
 +|{{ Images_Cahier-201-05-037.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Installation du script acme.sh =====
 +
 +Si ce n'est déjà fait, on installe le script ''acme.sh''.
 +
 +La commande ci-dessous téléchargera les fichiers accompagnant ''acme.sh'', les stockera dans ''~/.acme.sh'' et mettra à jour votre variable d’environnement //**PATH**// pour inclure ce chemin.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# curl https://get.acme.sh | sh
 +
 +  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 +                                 Dload  Upload   Total   Spent    Left  Speed
 +100   705  100   705    0        778      0 --:--:-- --:--:-- --:--:--   778
 +  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 +                                 Dload  Upload   Total   Spent    Left  Speed
 +100  174k  100  174k    0       468k      0 --:--:-- --:--:-- --:--:--  468k
 +[mer. mars 13 15:34:08 EDT 2019] Installing from online archive.
 +[mer. mars 13 15:34:08 EDT 2019] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz
 +[mer. mars 13 15:34:09 EDT 2019] Extracting master.tar.gz
 +[mer. mars 13 15:34:09 EDT 2019] It is recommended to install socat first.
 +[mer. mars 13 15:34:09 EDT 2019] We use socat for standalone server if you use standalone mode.
 +[mer. mars 13 15:34:09 EDT 2019] If you don't use standalone mode, just ignore this warning.
 +[mer. mars 13 15:34:09 EDT 2019] Installing to /root/.acme.sh
 +[mer. mars 13 15:34:09 EDT 2019] Installed to /root/.acme.sh/acme.sh
 +[mer. mars 13 15:34:09 EDT 2019] Installing alias to '/root/.bashrc'
 +[mer. mars 13 15:34:09 EDT 2019] OK, Close and reopen your terminal to start using acme.sh
 +[mer. mars 13 15:34:09 EDT 2019] Installing alias to '/root/.cshrc'
 +[mer. mars 13 15:34:09 EDT 2019] Installing alias to '/root/.tcshrc'
 +[mer. mars 13 15:34:09 EDT 2019] Installing cron job
 +56 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
 +[mer. mars 13 15:34:09 EDT 2019] Good, bash is found, so change the shebang to use bash as preferred.
 +[mer. mars 13 15:34:10 EDT 2019] OK
 +[mer. mars 13 15:34:10 EDT 2019] Install success!
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +{{Images_Cahier-101-03-006.png?25}} {{Images_Cahier-101-03-006.png?25}} __Fermez la connexion__ et __reconnectez-vous__ pour activer le nouveau chemin.
 +
 +On vérifie le chemin du script ''acme.sh''.
 +
 +<file>
 +root@tchana ~]# which acme.sh
 +
 +alias acme.sh='/root/.acme.sh/acme.sh'
 +        /root/.acme.sh/acme.sh
 +[root@tchana ~]#
 +</file>
 +
 +==== Configuration ====
 +
 +=== Chemin des fichiers du certificat ===
 +
 +Si ce n'est déjà fait, on doit définir certaines entrées de la base de données de configuration:
 +
 +● Chemin de la clé publique du certificat.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# config setprop pki CrtFile /etc/pki/tls/certs/cert.pem
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +● Chemin de la chaîne de certification.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# config setprop pki ChainFile /etc/pki/tls/certs/chain.pem
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +● Chemin de la clé privée du certificat.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# config setprop pki KeyFile /etc/pki/tls/private/privkey.pem
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +=== Variables d'environnement ===
 +
 +On doit définir certaines variables d’environnement correspondant à nos informations d’identification et à notre validateur DNS c.-à-d. Cloudflare.\\ 
 +{{Images_Cahier-101-03-003.png?22}} C’est ici que vous devrez effectuer des ajustements nécessaires si vous utilisez un autre serveur de noms que Cloudflare. Pour plus de détails, voir le lien suivant pour la documentation ''acme.sh'':  [[https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md|https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md]].
 +
 +{{Images_Cahier-101-03-006.png?25}} L'exemple ci-dessous est celle d'une installation utilisant le serveur de noms Cloudflare.\\ 
 +Si ce n'est déjà fait, on exporte dans l'environnement présentement en mémoire, notre //clé API Globale// de Cloudflare.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# export CF_Key="VotreCléGlobaleDeCloudflare"
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +On exporte notre adresse courriel utilisée pour notre enregistrement chez Cloudflare.
 +
 +<WRAP box round>
 +<file>[root@tchana ~]# export CF_Email="VotreAdresseCourrielDEnregistrementChezCloudflare"
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +On vérifie les exportations.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# env | grep -i CF_
 +
 +CF_Email= VotreAdresseCourrielDEnregistrementChezCloudflare
 +CF_Key= VotreCléGlobaleDeCloudflare
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +{{Images_Cahier-101-03-003.png?22}} {{Images_Cahier-101-03-006.png?25}} Si vous réamorcez le Serveur NethServer avant la demande d'un certificat, __vous perdez ces exportations__. Il vous faudra alors les refaire.
 +
 +=== Vérification de la configuration PKI ===
 +
 +<file>
 +[root@tchana ~]# config show pki
 +
 +pki=configuration
 +    CertificateDuration=3650
 +    ChainFile=/etc/pki/tls/certs/chain.pem
 +    CommonName=Micronator
 +    CountryCode=CA
 +    CrtFile=/etc/pki/tls/certs/cert.pem
 +    EmailAddress=VotreAdresseCourriel
 +    KeyFile=/etc/pki/tls/private/privkey.pem
 +    LetsEncrypt=disabled
 +    LetsEncryptDomains=
 +    LetsEncryptMail=
 +    LetsEncryptRenewDays=30
 +    Locality=Montreal
 +    Organization=RF-232
 +    OrganizationalUnitName=Service informatique
 +    State=Qc
 +    SubjectAltName=*.micronator-dev.org
 +[root@tchana ~]#
 +</file>
 +
 +La propriété //**CertificateDuration=3650**// s'applique au certificat __auto-généré__ seulement et non pas au certificat Let's Encrypt.
 +
 +===== Demande d'un certificat de TEST =====
 +
 +On force //(--force)// la demande d'un certificat de TEST //(--test)//  pour notre domaine __micronator-dev.org__ et six de ses CNAME.
 +
 +{{Images_icone-201-003_Note.png?25}} Le certificat sera "__émis pour__" le premier domaine //(-d)// de la liste, c.-à-d. __micronator-dev.org__.
 +
 +<file>
 +[root@tchana ~]# /root/.acme.sh/acme.sh                                             \
 +                      --issue                                                       \
 +                      --dns dns_cf                                                  \
 +                      -d micronator-dev.org                                         \
 +                      -d www.micronator-dev.org                                     \
 +                      -d mail.micronator-dev.org                                    \
 +                      -d wpad.micronator-dev.org                                    \
 +                      -d moodle.micronator-dev.org                                  \
 +                      -d www.moodle.micronator-dev.org                              \
 +                      -d mail.moodle.micronator-dev.org                             \
 +                      --cert-file /etc/pki/tls/certs/cert.pem                       \
 +                      --ca-file /etc/pki/tls/certs/chain.pem                        \
 +                      --key-file /etc/pki/tls/private/privkey.pem                   \
 +                      --reloadcmd "/sbin/e-smith/signal-event certificate-update"   \
 +                      --force                                                       \
 +                      --test
 +
 +...
 +[sam. août 17 22:06:44 EDT 2019] Installing cert to:/etc/pki/tls/certs/cert.pem
 +[sam. août 17 22:06:44 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem
 +[sam. août 17 22:06:44 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem
 +[sam. août 17 22:06:44 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update
 +[sam. août 17 22:06:47 EDT 2019] Reload success
 +[root@tchana ~]#
 +</file>
 +
 +La demande d'un certificat de TEST a été couronnée de succès.
 +
 +===== Demande d'un certificat officiel =====
 +
 +On force le renouvellement pour l'obtention d'un certificat officiel.
 +
 +<file>
 +[root@tchana ~]# /root/.acme.sh/acme.sh                                             \
 +                      --issue                                                       \
 +                      --dns dns_cf                                                  \
 +                      -d micronator-dev.org                                         \
 +                      -d www.micronator-dev.org                                     \
 +                      -d mail.micronator-dev.org                                    \
 +                      -d wpad.micronator-dev.org                                    \
 +                      -d moodle.micronator-dev.org                                  \
 +                      -d www.moodle.micronator-dev.org                              \
 +                      -d mail.moodle.micronator-dev.org                             \
 +                      --cert-file /etc/pki/tls/certs/cert.pem                       \
 +                      --ca-file /etc/pki/tls/certs/chain.pem                        \
 +                      --key-file /etc/pki/tls/private/privkey.pem                   \
 +                      --reloadcmd "/sbin/e-smith/signal-event certificate-update"   \
 +                      --force
 +
 +...
 +[sam. août 17 22:09:30 EDT 2019] Installing cert to:/etc/pki/tls/certs/cert.pem
 +[sam. août 17 22:09:30 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem
 +[sam. août 17 22:09:30 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem
 +[sam. août 17 22:09:30 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update
 +[sam. août 17 22:09:32 EDT 2019] Reload success
 +[root@tchana ~]#
 +</file>
 +
 +La demande d'un certificat officiel a été couronnée de succès.
 +\\ 
 +
 +===== Vérification de la connexion sécurisée =====
 +
 +● On se rend à: https://www.moodle.micronator-dev.org.\\
 +● On peut aussi utiliser **http:...** qui sera transformé en **http**<wrap em>s</wrap>**:...**
 +
 +<WRAP column 46%>
 +Le cadenas est __vert__, car le certificat a été émis par Let's Encrypt qui est une autorité de certification reconnue et la connexion est sécurisée par un chiffrement //TLS/SSL//.
 +
 +C'est la page Web par défaut de NethServer qui s'affiche. C'est le comportement normal, car nous n'avons encore aucun fichier dans le répertoire de Moodle.
 +
 +Si nous avions un site WordPress dans le répertoire web par défaut, c'est la page WordPress du site qui s'afficherait.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-038.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-003.png?22}} Si vous avez de la difficulté à vous connecter, vidanger le cache DNS du poste de travail et celui du navigateur Firefox.
 +
 +<WRAP column 55%>
 +<nowiki>-</nowiki> Sur le poste de travail, ouvrir un écran de commandes.\\ 
 +<nowiki>-</nowiki> ''ifconfig  /flushdns''.
 +|{{ Images_Cahier-201-05-039.png?500 }}|
 +</WRAP>
 +<WRAP column 37%>
 +**Historique -> Supprimer l'historique ré­cent... -> tout -> Effacer maintenant**.
 +|{{ Images_Cahier-201-05-040.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Préparation de l'installation ======
 +
 +===== Répertoire de données (moodledata) =====
 +
 +  - Moodle nécessite un répertoire pour emmagasiner tous ses fichiers: //(les fichiers qui y seront chargés, les données temporaires, les données de sessions, etc...)//.
 +  - Ce répertoire __ne doit pas__ se trouver dans le répertoire racine ''/var/lib/nethserver/vhost/moodle'' ni dans un de ses sous-répertoires.
 +  - Sur les installations importantes, il faut veiller à allouer suffisamment d'espace disque pour une utilisation optimale. 
 +
 +Nous allons créer un répertoire qui servira uniquement pour les données de Moodle.
 +
 +On se rend dans le répertoire ''/var/lib/nethserver/vhost/''.
 +
 +<file>
 +[root@tchana ~]# cd /var/lib/nethserver/vhost/
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana vhost]# pwd
 +
 +/var/lib/nethserver/vhost
 +[root@tchana vhost]#
 +</file>
 +
 +On affiche le contenu du répertoire.
 +
 +<file>
 +[root@tchana vhost]# ls -als
 +
 +total 0
 +0 drwxr-xr-x   3 root   root    20 17 août  21:31 .
 +0 drwxr-xr-x. 12 root   root   155 19 avril 16:13 ..
 +0 drwxr-sr-x   2 apache apache   6 17 août  21:31 moodle
 +[root@tchana vhost]#
 +</file>
 +
 +On crée le répertoire ''moodledata''
 +
 +<file>
 +[root@tchana vhost]# mkdir /var/lib/nethserver/vhost/moodledata/
 +
 +[root@tchana vhost]#
 +</file>
 +
 +==== Sécurité ====
 +
 +=== Fichier .htaccess ===
 +
 +//Référence:// [[http://www.commentcamarche.net/contents/7-apache-les-fichiers-htaccess|http://www.commentcamarche.net/contents/7-apache-les-fichiers-htaccess]].\\ 
 +Les fichiers ''.htaccess'' sont des fichiers de configuration d'Apache, permettant de définir des règles dans un répertoire et tous ses sous-répertoires //(qui n'ont pas de fichier ''.htaccess'')//. On peut les utiliser pour protéger un répertoire par mot de passe, pour changer le nom ou l'extension de la page index ou encore pour interdire l'accès au répertoire. 
 +
 +//Principe des fichiers htaccess//
 +
 +Le fichier ''.htaccess'' est placé dans le répertoire dans lequel il doit intervenir. Il agit ainsi sur le répertoire qui le contient et sur tous ses sous-répertoires. Vous pouvez placer un autre fichier ''.htaccess'' dans un sous-répertoire d'un répertoire déjà contrôlé par un fichier ''.htaccess''. Le fichier ''.htaccess'' du répertoire parent reste en "activité" tant que les directives du fichier ''.htaccess'' du répertoire enfant n'ont pas été écrites.
 +
 +Pour la sécurité, on crée le fichier ''.htaccess'' dans le répertoire ''/var/lib/nethserver/vhost/moodledata/''.
 +
 +<file>
 +[root@tchana vhost]# touch /var/lib/nethserver/vhost/moodledata/.htaccess
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On entre les deux lignes de paramètres requis dans le fichier ''moodledata/.htaccess''.
 +
 +● Ajout de la première ligne.
 +
 +<file>
 +[root@tchana vhost]# echo order deny,allow > moodledata/.htaccess
 +
 +[root@tchana vhost]#
 +</file>
 +
 +● Ajout de la deuxième ligne.
 +
 +<file>
 +[root@tchana vhost]# echo deny from all >> moodledata/.htaccess
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana vhost]# cat /var/lib/nethserver/vhost/moodledata/.htaccess
 +
 +order deny,allow
 +deny from all
 +[root@tchana vhost]#
 +</file>
 +
 +=== AllowOverride ===
 +
 +{{Images_icone-201-003_Note.png?25}} Lors de son lancement, Apache incorpore tous les fichiers qui se trouvent dans le répertoire ''/etc/httpd/conf.d/'' et qui ont l'extension ''.conf''. Cette incorporation des fichiers se fait par ordre alphabétique.
 +
 +La directive d'un fichier de configuration d'Apache qui a le plus d'influence sur les fichiers ''.htaccess'' d'un répertoire et de ses sous-répertoires est la directive **''AllowOverride''**. Par défaut, cette directive est à //**None**// et fait en sorte que le démon httpd ne traitera aucun fichier ''.htaccess'' qu'il trouvera; il les ignorera tous.
 +
 +Nous allons donc ajouter un nouveau fichier de configuration ''z_moodledata.conf'' qu'Apache incorporera afin qu'il prenne en compte les fichiers ''.htaccess'' dans le répertoire ''/var/lib/nethserver/vhost/moodledata'' et ses sous-répertoire.
 +
 +//Référence:// [[https://dev-notes.eu/2017/01/apache-directives-in-config-vs-htaccess/|https://dev-notes.eu/2017/01/apache-directives-in-config-vs-htaccess/]]\\ //
 +Référence:// [[http://httpd.apache.org/docs/current/howto/htaccess.html#page-header|http://httpd.apache.org/docs/current/howto/htaccess.html#page-header]].
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/httpd/conf.d/z_moodledata.conf <<'EOT'
 +<Directory "/var/lib/nethserver/vhost/moodledata">
 +    #
 +    # Modification par Michel-André le 18 août 2019
 +    # Afin que le démon httpd traite les fichers .htacces dans les répertoires et
 +    # sous-répertoires de /var/lib/nethserver/vhost/moodledata.
 +    AllowOverride All
 +</Directory>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana vhost]# ls -als /etc/httpd/conf.d/z_moodledata.conf
 +
 +4 -rw-r--r-- 1 root root 296 18 août  14:24 /etc/httpd/conf.d/z_moodledata.conf
 +[root@tchana vhost]#
 +</file>
 +
 +On affiche le contenu du fichier.
 +
 +<file>
 +[root@tchana vhost]# cat /etc/httpd/conf.d/z_moodledata.conf
 +
 +<Directory "/var/lib/nethserver/vhost/moodledata">
 +    #
 +    # Modification par Michel-André le 18 août 2019
 +    # Afin que le démon httpd traite les fichers .htacces dans les répertoires et
 +    # sous-répertoires de /var/lib/nethserver/vhost/moodledata.
 +    AllowOverride All
 +</Directory>
 +
 +[root@tchana vhost]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide au dessus de __<nowiki><Directory "/var/lib/nethserver/vhost/moodledata"></nowiki>__. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +{{Images_icone-201-003_Note.png?25}} Lors de son lancement, Apache incorporera notre fichier ''z_moodledata.conf''.
 +
 +=== Redémarrage du démon httpd ===
 +
 +On redémarre le démon Apache afin qu'il relise son fichier de configuration.
 +
 +<file>
 +[root@tchana vhost]# systemctl restart httpd
 +
 +[root@tchana vhost]#
 +</file>
 +
 +=== Sauvegarde ===
 +
 +On vérifie si le nom du fichier ''/etc/httpd/conf.d/z_moodledata.conf'' est déjà présent dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/httpd/conf.d/z_moodledata.conf"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana vhost]# cat /etc/backup-data.d/custom.include | grep moodledata
 +
 +/etc/httpd/conf.d/z_moodledata.conf
 +[root@tchana vhost]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __<nowiki>/etc/httpd/conf.d/z_moodledata.conf</nowiki>__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +=== Fureteur ===
 +
 +Pour encore plus de sécurité, on enlève l'accès à ce dossier à tout fureteur en créant le fichier ''index.htm'' et en y insérant une commande qui fait retourner le fureteur à son point de départ.
 +
 +<file>
 +[root@tchana vhost]# echo  "<script>history.go(-1);</script>" > moodledata/index.htm
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On vérifie le contenu du fichier.
 +
 +<file>
 +[root@tchana vhost]# cat /var/lib/nethserver/vhost/moodledata/index.htm
 +
 +<script>history.go(-1);</script>
 +[root@tchana vhost]#
 +</file>
 +
 +=== Propriétaire, groupe et permissions ===
 +
 +On sécurise le répertoire en changeant le propriétaire et le groupe.
 +
 +<file>
 +[root@tchana vhost]# chown -R apache:apache moodledata/
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On enlève tous les droits à "other".
 +
 +<file>
 +[root@tchana vhost]# chmod -R o-rwx moodledata/
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On répète pour les fichiers cachés.
 +
 +<file>
 +[root@tchana vhost]# chmod -R o-rwx moodledata/.*
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana vhost]# ls -alsd moodledata/ ; ls -als moodledata
 +
 +0 drwxr-s--- 2 apache apache 40 18 août  14:26 moodledata/
 +total 8
 +0 drwxr-s--- 2 apache apache 40 18 août  14:26 .
 +0 drwxr-xr-x 4 root   root   38 18 août  14:22 ..
 +4 -rw-r----- 1 apache apache 31 18 août  14:24 .htaccess
 +4 -rw-r----- 1 apache apache 33 18 août  14:26 index.htm
 +[root@tchana vhost]#
 +</file>
 +
 +L'usager __root__ retourne à son répertoire personnel.
 +
 +<file>
 +[root@tchana vhost]# cd
 +
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Extensions PHP =====
 +
 +On installe quelques extensions requises par Moodle pour PHP-7.2.
 +
 +<file>
 +[root@tchana ~]# yum -y install php72-php-opcache php72-php-xmlrpc php72-php-intl
 +
 +...
 +============================================================================================
 +Installation   2 Paquets (+1 Paquet en dépendance)
 +
 +Taille totale des téléchargements : 9.1 M
 +Taille d'installation : 31 M
 +...
 +Installé :
 +  php72-php-intl.x86_64 0:7.2.21-1.el7.remi   php72-php-xmlrpc.x86_64 0:7.2.21-1.el7.remi
 +
 +Dépendances installées :
 +  libicu62.x86_64 0:62.1-3.el7.remi
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +On crée un répertoire pour un gabarit personnalisé afin d'ajouter quelques paramètres à PHP-7.2.
 +
 +<file>
 +[root@tchana ~]# mkdir -p /etc/e-smith/templates-custom/etc/opt/remi/php72/php.ini/
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande de création du fichier ''90moodle''.
 +
 +<file>
 +cat << EOF > /etc/e-smith/templates-custom/etc/opt/remi/php72/php.ini/90moodle
 +[opcache]
 +
 +; Référence: https://community.nethserver.org/t/install-moodle-on-ns7/5029/30
 +; Référence: https://www.php.net/manual/fr/opcache.configuration.php
 +
 +opcache.enable = 1
 +; Booléen
 +; OPcache est un moteur de cache intégré à PHP. Lorsqu'il est activé, il améliore
 +; considérablement les performances des sites Web utilisant PHP. Depuis php.net: OPcache
 +; améliore les performances de PHP en stockant le bytecode de script précompilé dans la
 +; mémoire partagée, évitant ainsi à PHP de charger et d’analyser les scripts à chaque
 +; requête.
 +
 +opcache.memory_consumption = 128
 +; Nombre entier
 +; La taille de la mémoire partagée utilisée par OPcache, en megabytes.
 +
 +opcache.max_accelerated_files = 8000
 +; ; Nombre entier
 +; Le nombre maximal de clés (et donc, de scripts) dans la table de hashage d'OPcache. La
 +; valeur actuellement utilisée sera le premier nombre du jeux des nombres premiers { 223,
 +; 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } qui est plus grand ou égal que
 +; la valeur configurée. La valeur minimale est 200. La valeur maximale est 100000 dans PHP
 +; < 5.5.6, et 1000000 dans les versions ultérieur.
 +
 +opcache.revalidate_freq = 60
 +; Nombre entier
 +; La fréquence de vérification du timestamps du script afin de détecter les possibles mises
 +; à jour, en secondes. La valeur 0 fera qu'OPcache vérifira les mises à jour à chaque
 +; requête. 
 +
 +; Requis par Moodle
 +
 +opcache.use_cwd = 1
 +; Booléen
 +; Si activé, OPcache ajoute le dossier de travail courant à la clé du script, éliminant
 +; ainsi les collisions possibles entre les fichiers dont le nom de base est identique. Le
 +; fait de désactiver cette fonctionalité améliore les performances, mais peut casser les
 +; applications existantes.
 +
 +opcache.validate_timestamps = 1
 +; Booléen
 +; Si activé, OPcache va vérifier les mises à jour des scripts toutes les
 +; opcache.revalidate_freq secondes. Lorsque cette directive est désactivée, vous devez
 +; réinitialiser OPcache manuellement via la fonction opcache_reset(), la fonction
 +; opcache_invalidate() ou en redémarrant le serveur Web pour que les modifications du
 +; système de fichiers ne prennent effet.
 +
 +opcache.save_comments = 1
 +; Booléen
 +; Si désactivé, tous les commentaires de documentation seront supprimés du cache opcode afin
 +; de réduire la taille du code optimisé. La désactivation de cette directive peut casser des
 +; applications et des frameworks qui s'appuient sur l'analyse des commentaires pour les
 +; annotations, comme Doctrine, Zend Framework 2 et PHPUnit.
 +
 +opcache.enable_file_override = 0
 +; Booléen
 +; Lorsqu'activé, le cache opcode sera vérifié pour savoir si un fichier a déjà été mise en
 +; cache lorsque les fonctions file_exists(), is_file() et is_readable() sont appelées. Ceci
 +; peut accroître les performances des applications qui vérifient l'existence et la
 +; lisibilité des scripts PHP, mais risque de retourner des données périmées si
 +; opcache.validate_timestamps est désactivé.
 +
 +[intl]
 +; L'extension d'Internationalization (qui est aussi appelée Intl) est une interface pour la
 +; bibliothèque ICU, qui permet aux développeurs PHP d'effectuer des opérations compatibles
 +; avec les paramètres régionaux incluant, mais non limité à cette liste, le formatage, la
 +; translittération, la conversion d'encodage, les opérations de calendrier, la collation
 +; UCA-conforme, la localisation des limites du texte et l'utilisation des identificateurs de
 +; paramètres régionaux, des fuseaux horaires et des graphèmes.
 +
 +intl.default_locale = en_utf8
 +; Chaîne de caractères
 +; La locale à utiliser avec les fonctions intl lorsqu'aucune n'est spécifiée (soit si elle
 +; est omis dans l'argument correspondant, soit si la valeur passée vaut NULL). Ceux sont des
 +; locales ICU, et non des locales système. Les locales ICU internes ainsi que leurs données
 +; peuvent être explorées ici » http://demo.icu-project.org/icu-bin/locexp.
 +; Par défaut, vaut vide, ce qui force l'utilisation de la locale ICU par défaut. Une fois
 +; définie, la configuration ini ne peut être réinitialisée par cette valeur par défaut. Il
 +; n'est pas recommandé d'utiliser cette valeur par défaut, sachant qu'elle dépend de
 +; l'environnement du serveur.
 +
 +EOF
 +
 +</file>
 +
 +On vérifie en affichant quelques lignes du fichier.
 +
 +<file>
 +[root@tchana ~]# head /etc/e-smith/templates-custom/etc/opt/remi/php72/php.ini/90moodle
 +
 +[opcache]
 +
 +; Référence: https://community.nethserver.org/t/install-moodle-on-ns7/5029/30
 +; Référence: https://www.php.net/manual/fr/opcache.configuration.php
 +
 +opcache.enable = 1
 +; Booléen
 +; OPcache est un moteur de cache intégré à PHP. Lorsqu'il est activé, il améliore
 +; considérablement les performances des sites Web utilisant PHP. Depuis php.net: OPcache
 +; améliore les performances de PHP en stockant le bytecode de script précompilé dans la
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant __<nowiki>[opcache]</nowiki>__ Nous en avons inséré une pour faciliter la copie de la commande.
 +
 +=== Sauvegarde répertoire du gabarit ===
 +
 +On vérifie si le nom du répertoire ''/etc/e-smith/templates-custom/etc/opt/remi/php72/php.ini/'' est déjà inséré dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/e-smith/templates-custom/etc/opt/remi/php72/php.ini/"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep php.ini
 +
 +/etc/e-smith/templates-custom/etc/opt/remi/php72/php.ini/
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __<nowiki>/etc/e-smith/templates-custom...</nowiki>__ Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +On signale le changement.
 +
 +<file>
 +[root@tchana ~]# signal-event nethserver-php-scl-update
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le démon Apache.
 +
 +<file>
 +[root@tchana ~]# systemctl restart httpd
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le démon MySQL.
 +
 +<file>
 +[root@tchana ~]# systemctl restart mysqld
 +
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Création de la base de données pour Moodle =====
 +
 +==== InnoDB ====
 +//
 +Référence:// [[https://mariadb.com/kb/en/library/innodb-versions/|https://mariadb.com/kb/en/library/innodb-versions/]].\\ 
 +Depuis MariaDB 10.2 et les versions ultérieures, l'implémentation d'//InnoDB// par défaut est basée sur //InnoDB// de MySQL 5.7.
 +
 +==== Jeux de caractères ====
 +
 +Moodle requiert le jeu de caractères ''utf8mb4'' et MariaDB 102 supporte ce jeu, voir: [[https://mariadb.com/kb/en/library/supported-character-sets-and-collations/|https://mariadb.com/kb/en/library/supported-character-sets-and-collations/]]
 +
 +==== Création de la BD ====
 +
 +On entre dans la console de MariaDB 102.
 +
 +<file>
 +[root@tchana ~]# mysql102
 +
 +Welcome to the MariaDB monitor.  Commands end with ; or \g.
 +Your MariaDB connection id is 12
 +Server version: 10.2.22-MariaDB MariaDB Server
 +
 +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 +
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +MariaDB [(none)]>
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Ne pas prendre l'invite "__<nowiki>MariaDB [(none)]></nowiki>__" dans les commandes, seulement ce qui la suit.\\ 
 +On crée la table <wrap em>MoodleBD</wrap> et on lui assigne le jeu de caractères ''utf8mb4''.
 +
 +<file>
 +MariaDB [(none)]> CREATE DATABASE MoodleBD DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
 +
 +Query OK, 1 row affected (0,00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +MariaDB [(none)]> show databases;
 +
 ++--------------------+
 +| Database           |
 ++--------------------+
 +| MoodleBD           |
 +| information_schema |
 +| mysql              |
 +| performance_schema |
 +| phpmyadmin         |
 ++--------------------+
 +5 rows in set (0,00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +=== Grant ===
 +
 +{{Images_Cahier-101-03-006.png?25}} Pour l'usager de la BD de Moodle, il faut choisir un __mot de passe robuste__: au moins 7 caractères, minuscules, majuscules, chiffres et signes non-alphanumériques. __Il ne faut pas prendre notre exemple de mot de passe__.
 +
 +On lui accorde des droits en créant l'usager <wrap em>usager<nowiki>_</nowiki>MoodleBD</wrap> et on lui assigne le mot de passe <wrap em>mdp_MoodleBD</wrap>.
 +
 +<file>
 +MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON MoodleBD.* TO 'usager_MoodleBD'@'localhost' IDENTIFIED BY 'mdp_MoodleBD';
 +
 +Query OK, 0 rows affected (0,00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +MariaDB [(none)]> show grants for usager_MoodleBD@localhost;
 +
 ++--------------------------------------------------------------------------------------------------------------------------+
 +| Grants for usager_MoodleBD@localhost                                                                                     |
 ++--------------------------------------------------------------------------------------------------------------------------+
 +| GRANT USAGE ON *.* TO 'usager_MoodleBD'@'localhost' IDENTIFIED BY PASSWORD '*8D073B9426500189D09A5286C990E25C759C18BD'   |
 +| GRANT ALL PRIVILEGES ON `MoodleBD`.* TO 'usager_MoodleBD'@'localhost'                                                    |
 ++--------------------------------------------------------------------------------------------------------------------------+
 +3 rows in set (0,00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +On indique à MariaDB 102 de relire les droits //(cette commande n'est pas réellement obligatoire après un ''grant'')//.
 +
 +<file>
 +MariaDB [(none)]> FLUSH PRIVILEGES;
 +
 +Query OK, 0 rows affected (0,00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +On quitte la console de MariaDB 10.2.
 +
 +<file>
 +MariaDB [(none)]> exit;
 +
 +Bye
 +[root@tchana ~]#
 +</file>
 +
 +=== Paramètres de la BD de Moodle ===
 +
 +Notez le nom de la base de données: <wrap em>MoodleBD</wrap>, le nom de l'usager: <wrap em>usager<nowiki>_</nowiki>MoodleBD</wrap> et son mot de passe: <wrap em>mdp<nowiki>_</nowiki>MoodleBD</wrap>; ils serviront plus tard dans le fichier de configuration de Moodle.
 +\\ 
 +\\ 
 +
 +===== Téléchargement de Moodle =====
 +
 +On se substitue à l'utilisateur __apache__.
 +
 +<file>
 +[root@tchana moodle]# su apache -s /bin/bash
 +
 +bash-4.2$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +bash-4.2$ whoami
 +
 +apache
 +bash-4.2$
 +</file>
 +
 +On se rend dans le répertoire racine de notre site Moodle.
 +
 +<file>
 +bash-4.2$ cd /var/lib/nethserver/vhost/moodle
 +
 +bash-4.2$
 +</file> 
 +
 +On vérifie.
 +
 +<file>
 +bash-4.2$ pwd
 +
 +/var/lib/nethserver/vhost/moodle
 +bash-4.2$
 +</file>
 +
 +
 +On utilise **git** pour télécharger la version LTS(( **Long-term**** support:** En informatique, une version Long-term support //(Support à long terme)// ou LTS désigne une version spécifique d'un logiciel dont le support est assuré pour une période de temps plus longue que la normale.Il s'agit de la mise en œuvre de la politique de gestion du cycle de vie d'un produit dans le domaine du génie logiciel, avec notamment l'application des principes de l'ingénierie de la fiabilité au processus de développement et de maintenance du logiciel. Le support à long terme étend la durée de la maintenance applicative ; il modifie également le type et la fréquence de publication des mises à jour //(correctifs)// pour réduire le risque, les dépenses et les perturbations liés au déploiement de logiciels, tout en favorisant la fiabilité. Le Support à long terme n'implique toutefois pas de support technique.Le support à long terme commence par le gel des fonctionnalités : des rustines //(patchs)// peuvent être livrées pour corriger des bogues et combler des failles de sécurité, mais aucune nouvelle fonctionnalité — susceptible de causer des régressions — n'est acceptée. Le responsable de la maintenance distribue des correctifs sous forme de rustine unitaires, de packages ou des service packs. À la fin de la période de support, le produit passe en fin de vie.Le terme support à long terme est généralement réservé à des versions définies d'un logiciel, dont l'éditeur garantit en général une période de maintenance minimale de deux ans, soit une période largement plus longtemps que la durée de vie d'une version ordinaire. Un terme apparenté est le support à court terme //(STS)//, qui désigne un support de durée ordinaire.\\ 
 +//Référence://[[https://fr.wikipedia.org/wiki/Long-term_support|https://fr.wikipedia.org/wiki/Long-term_support]].\\ \\ )) //(Long-term support)//.
 +
 +Voir la page qui définit les versions LTS: [[https://docs.moodle.org/dev/Releases|https://docs.moodle.org/dev/Releases]].
 +
 +{{Images_Cahier-101-03-006.png?25}} Ne pas oublié le "<wrap em>.</wrap>" à la fin de la commande.
 +
 +<file>
 +bash-4.2$ git clone -b MOODLE_35_STABLE git://git.moodle.org/moodle.git .
 +
 +Cloning into '.'...
 +remote: Counting objects: 1112306, done.
 +remote: Compressing objects: 100% (250892/250892), done.
 +remote: Total 1112306 (delta 828344), reused 1112183 (delta 828221)
 +Receiving objects: 100% (1112306/1112306), 369.85 MiB | 1.80 MiB/s, done.
 +Resolving deltas: 100% (828344/828344), done.
 +Checking out files: 100% (18688/18688), done.
 +bash-4.2$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana moodle]# ls -als
 +
 +total 652
 +  4 drwxr-sr-x 52 apache apache   4096 19 août  19:46 .
 +  0 drwxr-xr-x  4 root root       38   19 août  19:20 ..
 +  4 drwxr-sr-x 13 apache apache   4096 19 août  19:46 admin
 +...
 +
 +  4 -rw-r--r--  1 apache apache   1639 19 août  19:46 version.php
 +  0 drwxr-sr-x  7 apache apache   227  19 août  19:46 webservice
 +[root@tchana moodle]#
 +</file>
 +
 +On retourne à l'usager __root__.
 +
 +<file>
 +bash-4.2$ exit
 +
 +exit
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP centeralign>**Les prérequis ont été satisfaits, on est prêt pour l'installation de Moodle.**</WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Installation de Moodle ======
 +
 +===== Lancement de l'installation =====
 +
 +On se rend à l'URL: https://www.moodle.micronator-dev.org qui lancera le programme d'installation ''install.php''.
 +
 +<WRAP column 22%>
 +===== Langue =====
 +
 +On choisit la langue **-> Suivant**.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-05-041.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +===== Confirmer les chemins d'accès =====
 +
 +On vérifie les données trouvées par l'installateur.
 +
 +Il a trouvé notre répertoire de données.
 +
 +**Suivant**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-042.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +===== Base de données =====
 +
 +==== Pilote ====
 +
 +//**Type**// **→** On choisit **MariaDB (native/mariadb) -> Suivant**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-043.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +===== Réglages de la base de données =====
 +
 +//**Serveur de base de données**//\\ 
 +Il faut absolument choisir **127.0.0.1**<wrap em>:3312</wrap>.
 +
 +//**Nom de la base de données**//\\ 
 +<wrap em>MoodleBD</wrap>.
 +
 +//**Utilisateur de la base de données**//\\ 
 +<wrap em>usager_MoodleBD</wrap>.
 +
 +//**Mot de passe de la base de données**//\\ 
 +<wrap em>mdp_MoodleBD</wrap>.
 +
 +//**Préfixe des tables**//\\ 
 +On prend le défaut.
 +
 +//**-> Suivant**//.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-044.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +===== Copyright =====
 +
 +__Si on a lu, compris et qu'on accepte les conditions__, on clique **Continuer**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-045.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +===== Contrôle serveur =====
 +
 +<nowiki>-</nowiki> L'extension //**xmlrpc**// a été trouvée.
 +
 +<nowiki>-</nowiki> L'extension //**intl**// a été trouvée.
 +
 +**-> Continuer**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-046.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +La page ci-contre prend un certain à s'afficher, car elle vérifie le succès de près de 800 items, être patient!
 +
 +À la fin de page, **Continuer**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-047.png?500 }}|
 +... ... ... 
 +|{{ Images_Cahier-201-05-048.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +===== Général =====
 +
 +<nowiki>-</nowiki> On entre les informations demandées.
 +
 +**->  Enregistrer mon profil**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-049.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Nouveaux réglages =====
 +
 +On entre les informations demandées, **-> Enregistrer les modifications**.
 +
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-050.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-051.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +L'installation de Moodle est terminée.
 +
 +Si on le désire, on peut //Effectuer l'enregistrement avec Moodle.net//.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-052.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Accueil =====
 +<WRAP column 22%>
 +On clique **Accueil du site**.
 +|{{ Images_Cahier-201-05-053.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +**Suivant**.
 +|{{ Images_Cahier-201-05-054.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +**Suivant**.
 +|{{ Images_Cahier-201-05-055.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +**Terminer la visite guidée**.
 +|{{ Images_Cahier-201-05-056.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +===== Sécurité Moodle =====
 +
 +On vérifie le rapport de sécurité.
 +
 +**Tableau de bord -> Administration du site -> Rapports -> Panorama de sécurité**.
 +
 +==== Filtre .swf ====
 +
 +{{ Images_Cahier-201-05-057.png?800 }}
 +
 +{{Images_Cahier-101-03-008.png?25}} L'intégration automatique de fichiers //Flash SWF// est très dangereuse; tout utilisateur enregistré pourrait lancer une attaque XSS contre d'autres utilisateurs du serveur. Ce réglage devrait être désactivé sur des sites en production. 
 +
 +=== Désactivation ===
 +
 +<WRAP column 35%>
 +Clac //(clic droit)// sur **Filtre .swf activé -> Ouvrir le lien dans un nouvel onglet**.
 +|{{ Images_Cahier-201-05-058.png?400 }}|
 +</WRAP>
 +<WRAP column 57%>
 +\\ 
 +**Gérer les lecteurs média**.
 +|{{ Images_Cahier-201-05-059.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +Cliquer l'**icône** pour désactiver.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-060.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +Le //**Filtre .swf**// est désactivé.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-061.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +**Enregistrer les modifications** et fermer l'onglet.
 +</WRAP>
 +<WRAP column 30%>
 +|{{Images_Cahier-201-05-062.png?300 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +De retour à **Tableau de bord -> Administration du site du site** **-> Rapports -> Panorama de sécurité ->** on rafraîchit la page.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-063.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Config.php ====
 +
 +<WRAP column 20%>
 +{{Images_Cahier-101-03-008.png?25}} Le fichier de configuration de Moodle est accessible en écriture.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-064.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On affiche les droits du fichier ''config.php''.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/lib/nethserver/vhost/moodle/config.php
 +
 +4 -rw-r----- 1 apache apache 776 19 août  21:52 /var/lib/nethserver/vhost/moodle/config.php
 +[root@tchana ~]#
 +</file>
 +
 +On supprime le droit d'écriture.
 +
 +<file>
 +[root@tchana ~]# chmod -w /var/lib/nethserver/vhost/moodle/config.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/lib/nethserver/vhost/moodle/config.php
 +
 +4 -r--r----- 1 apache apache 776 19 août  21:52 /var/lib/nethserver/vhost/moodle/config.php
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 20%>
 +On retourne à **Tableau de bord -> Administration du site du site** **-> Rapports -> Panorama de sécurité ->** on rafraîchit la page.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-065.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Utilisateurs XSS fiables ====
 +
 +{{Images_Cahier-101-03-008.png?25}} Le terme //RISK<nowiki>_</nowiki>XSS// assortit toutes les capacités dangereuses qui __ne devraient être autorisées que pour des utilisateurs fiables__. Veuillez vérifier la liste d'utilisateurs et vous assurer que vous leur faites totalement confiance sur ce site.
 +
 +Vu que nous n'avons pas d'utilisateur, sauf l'administrateur __michelandre__, on remet à plus tard la configuration de ce paramètre.
 +
 +<WRAP column 20%>
 +On pourrait quand même désactiver ce paramètre tout de suite.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-066.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Sauvegarde des données des utilisateurs ====
 +
 +{{Images_Cahier-101-03-008.png?25}} Certains rôles permettent d'inclure les données des utilisateurs dans les sauvegardes. Veuillez vous assurer que cette permission est nécessaire. Vu que nous n'avons présentement qu'un rôle pour l'utilisateur __michelandre__, on remet à plus tard la configuration de ce paramètre.
 +
 +<WRAP column 20%>
 +On pourrait quand même désactiver ce paramètre tout de suite.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-067.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Chemins des programmes exécutable =====
 +
 +<WRAP column 20%>
 +On doit cibler les chemins des programmes exécutables par Moodle.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-068.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Chemin d'accès à PHP CLI ====
 +
 +<file>
 +[root@tchana ~]# which php
 +
 +/opt/remi/php72/root/usr/bin/php
 +[root@tchana ~]#
 +</file>
 +
 +==== Chemin d'accès à du ====
 +
 +<file>
 +[root@tchana ~]# which du
 +
 +/usr/bin/du
 +[root@tchana ~]#
 +</file>
 +
 +==== Chemin d'accès à aspell ====
 +
 +<file>
 +[root@tchana ~]# which aspell
 +
 +/usr/bin/aspell
 +[root@tchana ~]#
 +</file>
 +
 +==== Chemin d'accès à dot ====
 +
 +<file>
 +[root@tchana ~]# which dot
 +
 +/usr/bin/which: no dot in (/sbin/e-smith:/opt/remi/php72/root/usr/bin:/opt/remi/php72/root/usr/sbin:/usr/local
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-003.png?22}} Le programme ''dot'' fait partie de ''graphviz'', on installe donc ce dernier.
 +
 +<file>
 +[root@tchana ~]# yum install graphviz -y
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet (+20 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 14 M
 +Taille d'installation : 52 M
 +...
 +Installé :
 +  graphviz.x86_64 0:2.30.1-21.el7
 +
 +Dépendances installées :
 +  atk.x86_64 0:2.28.1-1.el7                 gd.x86_64 0:2.0.35-26.el7
 +  gdk-pixbuf2.x86_64 0:2.36.12-3.el7        ghostscript.x86_64 0:9.07-31.el7_6.11
 +  ghostscript-fonts.noarch 0:5.50-32.el7    gtk-update-icon-cache.x86_64 0:3.22.30-3.el7
 +  gtk2.x86_64 0:2.24.31-1.el7               hicolor-icon-theme.noarch 0:0.12-7.el7
 +  jasper-libs.x86_64 0:1.900.1-33.el7       lcms2.x86_64 0:2.6-3.el7
 +  libICE.x86_64 0:1.0.9-9.el7               libSM.x86_64 0:1.2.2-2.el7
 +  libXaw.x86_64 0:1.0.13-4.el7              libXcomposite.x86_64 0:0.4.4-4.1.el7
 +  libXi.x86_64 0:1.7.9-1.el7                libXmu.x86_64 0:1.1.2-2.el7
 +  libXrandr.x86_64 0:1.5.1-2.el7            libXt.x86_64 0:1.1.5-3.el7
 +  librsvg2.x86_64 0:2.40.20-1.el7           poppler-data.noarch 0:0.4.6-3.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +On recherche le chemin d'accès à ''dot''.
 +
 +<file>
 +[root@tchana ~]# which dot
 +
 +/usr/bin/dot
 +[root@tchana ~]#
 +</file>
 +
 +==== Chemin d'accès à ghostscript ====
 +
 +<file>
 +[root@tchana ~]# which ghostscript
 +
 +/usr/bin/ghostscript
 +[root@tchana ~]#
 +</file>
 +
 +==== Chemin d'accès à Python ====
 +
 +<file>
 +[root@tchana ~]# which python
 +
 +/usr/bin/python
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 35%>
 +**Tableau de bord -> Administration du site -> Serveur -> Chemins système**.
 +
 +On insère les différents chemins d'accès.
 +
 +{{ Images_Cahier-201-05-076.png?250 }}
 +
 +On s'assure du succès de l'opération.
 +
 +{{ Images_Cahier-201-05-069.png?250 }}
 +</WRAP>
 +<WRAP column 57%>
 +|{{ Images_Cahier-201-05-070.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 20%>
 +Au retour à **Tableau de bord -> Administration du site** **-> Rapports -> Panorama de sécurité**, l'avertissement est toujours présent. On peut l'ignorer.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-071.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Ajustement des droits =====
 +
 +==== Répertoire moodledata ====
 +
 +On se rend dans le répertoire racine de ''moodledata''.
 +
 +<file>
 +[root@tchana ~]# cd /var/lib/nethserver/vhost/moodledata
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana vhost]# pwd
 +
 +/var/lib/nethserver/vhost/moodledata
 +[root@tchana vhost]#
 +</file>
 +
 +On ajuste __**R**__écursivement le propriétaire et le groupe pour tout le répertoire des données de Moodle.
 +
 +<file>
 +[root@tchana vhost]# chown -R apache:apache /var/lib/nethserver/vhost/moodledata/*
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On répète la commande pour les fichiers/répertoires cachés.
 +
 +<file>
 +[root@tchana vhost]# chown -R apache:apache /var/lib/nethserver/vhost/moodledata/.*
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On renforce la sécurité de l’accès aux fichiers //( f )// en supprimant les droits à "other".\\ 
 +{{Images_Cahier-101-03-006.png?25}} L'option **-L** doit être avant le chemin pour suivre les Liens symboliques. Le chemin doit se terminer par <wrap em>/</wrap>.
 +
 +<file>
 +[root@tchana vhost]# find -L /var/lib/nethserver/vhost/moodledata/ -type f -exec chmod 0600 {} \;
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On répète l'opération pour les répertoires //( d )//.
 +
 +<file>
 +[root@tchana vhost]# find -L /var/lib/nethserver/vhost/moodledata/ -type d -exec chmod 02750 {} \;
 +
 +[root@tchana vhost]#
 +</file>
 +
 +On vérifie les paramètres des répertoires et des fichiers, standards ou cachés. On s'assure que l'utilisateur "other" n'ait aucun droit.
 +
 +<file>
 +[root@tchana vhost]# ls -als /var/lib/nethserver/vhost/moodledata/
 +
 +total 8
 +0 drwxrwx--- 12 apache apache 179 19 août  21:54 .
 +0 drwxr-xr-x  4 root   root    38 19 août  21:41 ..
 +0 drwxr-s---  3 apache apache  55 20 août  10:29 cache
 +0 drwxr-s---  8 apache apache  85 19 août  21:53 filedir
 +4 -rw-------  1 apache apache  17 19 août  21:41 .htaccess
 +4 -rw-------  1 apache apache  33 19 août  21:41 index.htm
 +0 drwxr-s---  4 apache apache  29 19 août  21:50 lang
 +0 drwxr-s---  7 apache apache 101 20 août  10:30 localcache
 +0 drwxr-s---  4 apache apache  26 19 août  21:54 lock
 +0 drwxr-s---  3 apache apache  15 19 août  21:52 models
 +0 drwxr-s---  2 apache apache  24 19 août  21:52 muc
 +0 drwxr-s---  2 apache apache 141 20 août  08:53 sessions
 +0 drwxr-s---  7 apache apache 105 20 août  09:15 temp
 +0 drwxr-s---  2 apache apache   6 19 août  21:52 trashdir
 +[root@tchana vhost]#
 +</file>
 +
 +==== Répertoire moodle ====
 +
 +On se rend dans le répertoire racine de Moodle.
 +
 +<file>
 +[root@tchana moodledata]# cd /var/lib/nethserver/vhost/moodle
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana moodle]# pwd
 +
 +/var/lib/nethserver/vhost/moodle
 +[root@tchana moodle]#
 +</file>
 +
 +On ajuste __**R**__écursivement le propriétaire et le groupe pour tout le répertoire racine de Moodle.
 +
 +<file>
 +[root@tchana moodle]# chown -R apache:apache /var/lib/nethserver/vhost/moodle/*
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On répète la commande pour les fichiers/répertoires cachés.
 +
 +<file>
 +[root@tchana moodle]# chown -R apache:apache /var/lib/nethserver/vhost/moodle/.*
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On renforce la sécurité de l’accès aux fichiers //( f )// en supprimant les droits à "other".\\ 
 +{{Images_Cahier-101-03-006.png?25}} L'option **-L** doit être avant le chemin pour suivre les Liens symboliques. Le chemin doit se terminer par <wrap em>/</wrap>.
 +
 +<file>
 +[root@tchana moodle]# find -L /var/lib/nethserver/vhost/moodle/ -type f -exec chmod 0640 {} \;
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On répète l'opération pour les répertoires //( d )//.
 +
 +<file>
 +[root@tchana moodle]# find -L /var/lib/nethserver/vhost/moodle/ -type d -exec chmod 02750 {} \;
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On vérifie les paramètres des répertoires et des fichiers, standards ou cachés. On s'assure que l'utilisateur "other" n'ait aucun droit.
 +
 +<file>
 +[root@tchana moodle]# ls -als /var/lib/nethserver/vhost/moodle/
 +
 +total 656
 +  4 drwxr-sr-x 52 apache apache   4096 19 août  21:52 .
 +  0 drwxr-xr-x  4 root   root       38 19 août  21:41 ..
 +  4 drwxr-s--- 13 apache apache   4096 19 août  21:49 admin
 +...
 +  4 -rw-r-----  1 apache apache    777 19 août  21:49 config.php
 +...
 +  4 -rw-r-----  1 apache apache    486 19 août  21:49 .gherkin-lintrc
 +  0 drwxr-s---  8 apache apache    163 19 août  21:49 .git
 +  4 -rw-r-----  1 apache apache    180 19 août  21:49 .gitattributes
 +  4 -rw-r-----  1 apache apache   1071 19 août  21:49 .gitignore
 +...
 +  4 drwxr-s---  9 apache apache   4096 19 août  21:49 user
 +  0 drwxr-s---  2 apache apache     23 19 août  21:49 userpix
 +  4 -rw-r-----  1 apache apache   1639 19 août  21:49 version.php
 +  0 drwxr-s---  7 apache apache    227 19 août  21:49 webservice
 +[root@tchana moodle]#
 +</file>
 +
 +{{Images_Cahier-101-03-008.png?25}} Le fichier ''config.php'' est redevenu en écriture par le propriétaire, mais il sera protégé par le fichier ''.htaccess'' à la section 
 +[[nethserver_201_cahier_05_moodle#Protection du fichier config.php]]
 +.
 +
 +==== Fichier config.php ====
 +
 +On vérifie le fichier de configuration ''config.php''.
 +
 +<file>
 +[root@tchana moodle]# ls -ls config.php
 +
 +4 -rw-r----- 1 apache apache 776 19 août  21:52 config.php
 +[root@tchana moodle]#
 +</file>
 +
 +On affiche son contenu.
 +
 +<file>
 +[root@tchana vhost]# cat config.php
 +
 +<?php  // Moodle configuration file
 +
 +unset($CFG);
 +global $CFG;
 +$CFG = new stdClass();
 +
 +$CFG->dbtype    = 'mariadb';
 +$CFG->dblibrary = 'native';
 +$CFG->dbhost    = '127.0.0.1:3312';
 +$CFG->dbname    = 'MoodleBD';
 +$CFG->dbuser    = 'usager_MoodleBD';
 +$CFG->dbpass    = 'mdp_MoodleBD';
 +$CFG->prefix    = 'mdl_';
 +$CFG->dboptions = array (
 +  'dbpersist' => 0,
 +  'dbport' => '',
 +  'dbsocket' => '',
 +  'dbcollation' => 'utf8mb4_general_ci',
 +);
 +
 +$CFG->wwwroot   = 'https://www.moodle.micronator-dev.org';
 +$CFG->dataroot  = '/var/lib/nethserver/vhost/moodledata';
 +$CFG->admin     = 'admin';
 +
 +$CFG->directorypermissions = 0777;
 +
 +require_once(__DIR__ . '/lib/setup.php');
 +
 +// There is no php closing tag in this file,
 +// it is intentional because it prevents trailing whitespace problems!
 +[root@tchana moodle]#
 +</file>
 +
 +On ajuste ''$CFG->directorypermissions'' à <wrap em>02750</wrap> pour plus de sécurité
 +
 +<file>
 +[root@tchana moodle]# sed -i 's/'0777'/'02750'/' config.php
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana moodle]# cat config.php | grep 02750
 +
 +$CFG->directorypermissions = 02750;
 +[root@tchana moodle]#
 +</file>
 +
 +===== Vérification =====
 +
 +On se déconnecte de Moodle et on se reconnecte.
 +
 +<WRAP column 20%>
 +|{{ Images_Cahier-201-05-072.png?400 }}|
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-201-05-073.png?400 }}|
 +</WRAP>
 +<WRAP column 50%>
 +|{{ Images_Cahier-201-05-074.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 32%>
 +On s'est connecté sans aucun problème.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-05-075.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Logo =====
 +
 +Pour s'assurer que tout fonctionne correctement //(téléchargement/écriture)//, on insère notre logo.
 +
 +<WRAP column 46%>
 +** Tableau de bord -> Administration du site -> Présentation -> Logos**.
 +
 +On sélectionne le fichier de notre logo et on le glisse à l'intérieur du cadre.
 +{{ Images_Cahier-201-05-076.png?250 }}
 +
 +On s'assure du succès de l'opération.
 +{{ Images_Cahier-201-05-077.png?250 }}
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-078.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +On se rend à la page d'**Accueil** du site et notre logo s'affiche.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-079.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Cron de Moodle ======
 +
 +//Référence:// [[https://docs.moodle.org/3x/fr/Cron|https://docs.moodle.org/3x/fr/Cron]].\\ 
 +Le processus //Moodle cron// est un script PHP, partie intégrante de la distribution standard de Moodle, qui doit être lancé régulièrement. Ce script lance diverses tâches programmées à différents intervalles.
 +
 +IMPORTANT! Ne sautez pas l'étape de configuration du processus cron sur le serveur hébergeant votre installation de Moodle. Votre site ne fonctionnera pas correctement sans lui!
 +
 +Il est recommandé de lancer le cron à une fréquence d'une fois par minute, comme cela est requis pour la suppression synchrone des activités lors de l'utilisation de la corbeille.
 +
 +Le programme ''cron'' //(qui lance le script cron de Moodle)// fait partie de façon standard des systèmes Unix //(y compris Linux et macOS)// et est utilisé pour lancer toutes sortes de services dépendant de l'heure.
 +
 +Ce script est aussi connu tout simplement comme "le cron". Il recherche, dans tous les répertoires de modules, des fichiers ''cron.php'' et lance ceux-ci. Ces fichiers peuvent contenir des tâches d'arrière-plan: de nettoyage, de courriels, de notifications des forums, de sauvegarde de cours ou toutes autres fonctions qui doivent être lancées régulièrement.
 +
 +//Référence:// [[https://docs.moodle.org/all/hr/Cron|https://docs.moodle.org/all/hr/Cron]].\\ 
 +Par exemple, Moodle doit consulter les forums de discussion pour pouvoir envoyer des copies des messages aux personnes qui se sont abonnées.
 +
 +Le script se trouve dans le répertoire ''admin'' et s'appelle ''cron.php''. Cependant, il ne peut pas s'exécuter lui-même, vous devez donc configurer un mécanisme par lequel ce script est exécuté régulièrement //(par exemple toutes les cinq ou dix minutes)//. Cela fournit une "pulsation" de sorte que le script puisse exécuter des fonctions à des périodes définies par chaque module. Ce type de mécanisme régulier est connu sous le nom de //service cron//.
 +
 +Le script ''cron.php'' recherche dans tous les répertoires du module, les fichiers ''cron.php'' et les exécute. Ces fichiers peuvent contenir des fonctions de nettoyage, des fonctions de courrier électronique ou tout ce qui doit être exécuté régulièrement. Par exemple, //cron// va obliger le système à créer les sauvegardes des cours, à l'heure spécifiée dans les paramètres d'administration. Il déclenche également les notifications par courriel du module de messagerie ou de celui du forum, mais toutes les fonctions ne sont pas appelées à chaque exécution du //cron//. Certaines fonctions, telles que la désinscription d'étudiants qui ne se sont pas connectés ou la suppression d'anciennes copies de fichiers journaux, ne sont exécutées qu'occasionnellement. Le fichier ''cron.php'' possède une section qui appellera ces tâches principales de manière aléatoire environ 1 fois sur 5 de l'exécution de ''cron''.
 +
 +La charge de ce script n’est pas très importante, donc 5 minutes est généralement raisonnable, mais si cela vous inquiète, vous pouvez réduire la période à 15 ou même 30 minutes. Il est préférable de ne pas allonger la durée, car le retard des envois peut ralentir l'activité du cours. N'oubliez pas que les envois de courriels attendent également l'expiration du délai de l'édition avant d'être mis en file d'attente pour l'envoi.
 +
 +===== Cron en mode terminal seulement =====
 +
 +On s'assure que le paramètre //**cronclionly**// soit activé.
 +
 +<WRAP column 20%>
 +**Tableau de bord -> Administration du site -> Sécurité -> Réglages de sécurité du site**.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-080.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Commande cron ====
 +
 +//Fichier de cron:// -> ''/var/lib/nethserver/vhost/moodle/admin/cli/cron.php''.\\ 
 +//Programme PHP:// -> ''/opt/remi/php72/root/usr/bin/php''.\\ 
 +//Commande cron:// -> ''/opt/remi/php72/root/usr/bin/php  /var/lib/nethserver/vhost/moodle/admin/cli/cron.php''.\\ 
 +//Utilisateur lançant la commande:// -> __apache__.
 +
 +==== Tâche cron ====
 +
 +=== Shell de l'usager apache ===
 +
 +L'utilisateur __apache__ n'a pas de shell de login.
 +
 +<file>
 +[root@tchana ~]# cat /etc/passwd | grep apache
 +
 +apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
 +[root@tchana ~]#
 +</file>
 +
 +L'utilisateur __root__ va créer la //tâche cron// pour l'utilisateur __apache__.
 +
 +<file>
 +[root@tchana ~]# crontab -u apache -e
 +
 +
 +</file>
 +
 +On entre le texte ci-dessous et on quitte avec **[Échap] [:wq]**.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le texte de l'encadré.
 +
 +<file>
 +# Tâche cron qui lance /var/lib/nethserver/vhost/moodle/admin/cli/cron.php à toutes les 5
 +# minutes et qui recherche dans tous les répertoires du module les fichiers cron.php et les
 +# exécute.
 +#
 +# Michel-André, 2019-08-21_09h52
 +#
 +# ┌───────────── min (0 - 59) 
 +# │ ┌────────────── heure (0 - 23)
 +# │ │ ┌─────────────── jour du mois (1 - 31)
 +# │ │ │ ┌──────────────── mois (1 - 12)
 +# │ │ │ │ ┌───────────────── jour de la semaine (0 - 6) (0 à 6 sont de dimanche à samedi,
 +# │ │ │ │ │                  7 est dimanche, même que 0)
 +# │ │ │ │ │
 +# * * * * *  [usager] commande à exécuter
 +#
 +*/5 * * * * /opt/remi/php72/root/usr/bin/php /var/lib/nethserver/vhost/moodle/admin/cli/cron.php > /dev/null
 +
 +
 +</file>
 +
 +À la sortie de ''crontab'', celui-ci indique:
 +
 +<file>
 +...
 +crontab: installing new crontab
 +bash-4.2$
 +</file>
 +
 +On repart le démon //crond//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart crond
 +
 +[root@tchana ~]#
 +</file>
 +
 +On s'assure du bon fonctionnement de notre //tâche cron// en lançant un ''tail'' sur celle-ci.
 +
 +<file>
 +[root@tchana ~]# tail -f /var/log/cron | grep cron.php
 +
 +Aug 21 10:30:01 tchana CROND[9245]: (apache) CMD (/opt/remi/php72/root/usr/bin/php /var/lib/nethserver/vhost/moodle/admin/cli/cron.php > /dev/null)
 +Aug 21 10:35:01 tchana CROND[9539]: (apache) CMD (/opt/remi/php72/root/usr/bin/php /var/lib/nethserver/vhost/moodle/admin/cli/cron.php > /dev/null)
 +Aug 21 10:40:01 tchana CROND[9832]: (apache) CMD (/opt/remi/php72/root/usr/bin/php /var/lib/nethserver/vhost/moodle/admin/cli/cron.php > /dev/null)
 +...
 +</file>
 +
 +On sort de la commande ''tail'' avec **[CTL] + [c]**.
 +
 +<file>
 +^C
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 46%>
 +==== Journal cron ====
 +
 +**Tableau de bord -> Administration -> Logs -> /var/log/cron**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-05-081.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 20%>
 +Le journal indique les tâches que l'usager __apache__ a exécuté.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-082.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On vérifie manuellement.
 +
 +<file>
 +[root@tchana ~]# /opt/remi/php72/root/usr/bin/php /var/lib/nethserver/vhost/moodle/admin/cli/cron.php
 +
 +Server Time: Wed, 21 Aug 2019 10:40:58 -0400
 +
 +
 +Cron script completed correctly
 +Cron completed at 10:40:58. Memory used 4.3Mo.
 +Execution took 0.027558 seconds
 +[root@tchana ~]#
 +</file>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Messagerie électronique NethServer ======
 +
 +===== Configuration =====
 +
 +==== NethServer ====
 +
 +On crée un //alias// pour la messagerie électronique de notre domaine __moodle.micronator-dev.org__.
 +
 +<WRAP column 46%>
 +**Configuration -> DNS ->** onglet  **Alias du serveur -> CRÉER NOUVEAU**.
 +|{{ Images_Cahier-201-05-083.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +\\ 
 +On entre les informations demandées.
 +|{{ Images_Cahier-201-05-084.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 20%>
 +L'//alias// a été créé.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-085.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Vérification ===
 +
 +On vérifie la messagerie électronique de notre Serveur NethServer.
 +
 +On se logue à [[https://mail.moodle.micronator-dev.org/webmail/|https://mail.moodle.micronator-dev.org/webmail/]] en tant que l'utilisateur __michelandre__ et on envoie un courriel à l'utilisateur __root__.
 +
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-086.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-087.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-088.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> L'utilisateur __root__ se connecte à Webmail.
 +
 +<nowiki>-</nowiki> Il vérifie son courrier.
 +
 +Le message de l'utilisateur __michelandre__ a bien été reçu.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-089.png?500 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-090.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Moodle ===
 +
 +**Tableau de bord -> Administration du site -> Serveur -> Courriel -> Configuration du courriel sortant**.
 +
 +On prend les défauts, sauf pour //Hôtes SMTP//, //Sécurité SMTP// et //Adresse de non-réponse//. On entre les informations demandées -> __on enlève le__ <wrap em>www</wrap> de l'//**Adresse de non-réponse**// **-> Enregistrer les modifications**.
 +
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-091.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-092.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-093.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Installation d'une extension de test de courriels =====
 +
 +{{Images_Cahier-101-03-004.png?25}} Pour vérifier la messagerie électronique de Moodle, on installe une extension de test de courriels.\\ 
 +//Référence de l'extension:// [[https://moodle.org/plugins/local_mailtest|https://moodle.org/plugins/local_mailtest]].\\ 
 +//Documentation:// [[https://github.com/michael-milette/moodle-local_mailtest/blob/master/README.md|https://github.com/michael-milette/moodle-local_mailtest/blob/master/README.md]].\\ 
 +//Référence pour l'installation:// [[https://docs.moodle.org/32/en/Installing_plugins|https://docs.moodle.org/32/en/Installing_plugins]].
 +
 +==== Téléchargement ====
 +
 +On se rend à la page: [[https://moodle.org/plugins/local_mailtest|https://moodle.org/plugins/local_mailtest]].
 +
 +<WRAP column 20%>
 +On choisit notre version LTS: **Moodle 3.5**, la page se rafraîchit automatiquement.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-094.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +**Download**.
 +|{{ Images_Cahier-201-05-095.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +**Enregistrer le fichier -> OK**.
 +|{{ Images_Cahier-201-05-096.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +On choisit un répertoire **-> Enregistrer**.
 +|{{ Images_Cahier-201-05-097.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation de l'extension Moodle eMail Test ====
 +
 +<WRAP column 46%>
 +**Tableau de bord -> Administration du site -> Plugins -> Installer des plugins -> Choisir un fichier...**
 +|{{ Images_Cahier-201-05-098.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +\\ 
 +**Déposer un fichier -> Parcourir...**
 +|{{ Images_Cahier-201-05-099.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +On sélectionne le fichier téléchargé précédemment **-> Ouvrir**.
 +|{{ Images_Cahier-201-05-100.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Le fichier apparaît.\\ 
 +<nowiki>-</nowiki> **Déposer ce fichier**.
 +|{{ Images_Cahier-201-05-101.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +**Installer le plugin à partir du fichier ZIP**.
 +|{{ Images_Cahier-201-05-102.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +\\ 
 +**Continuer**.
 +|{{ Images_Cahier-201-05-103.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +**Mettre à jour la base de données maintenant**.
 +|{{ Images_Cahier-201-05-104.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Continuer**.
 +|{{ Images_Cahier-201-05-105.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Nom de nos domaines sur la liste blanche =====
 +
 +{{Images_Cahier-101-03-003.png?22}} <wrap em>__Sur notre serveur principal__</wrap>, qui nous servira de destination pour nos test de courriels, il nous faut mettre les noms de nos domaines du réseau LOCAL sur la liste blanche, sinon, il considéra ces courriels comme des pourriels provenant d'un serveur inconnu..
 +
 +<WRAP column 35%>
 +**Configuration -> Messagerie électronique ->** onglet **Filtre**.
 +
 +On déroule le menu et on clique:\\ 
 +**Nouvelle autorisation pour**.
 +
 +On ajoute:\\ 
 +**micronator-dev.org** et\\ 
 +**moodle.micronator-dev.org**.
 +
 +{{ Images_Cahier-201-05-106.png?250 }}
 +
 +{{ Images_Cahier-201-05-107.png?250 }}
 +
 +</WRAP>
 +<WRAP column 57%>
 +|{{ Images_Cahier-201-05-108.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Ce qui donne les entrées ci-contre.
 +
 +<nowiki>-</nowiki> **SOUMETTRE**.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-201-05-109.png?400 }}|
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-201-05-110.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Test de messagerie électronique de Moodle =====
 +
 +<WRAP column 35%>
 +**Tableau de bord -> Administration du site -> Serveur -> Courriel -> Test du système de courriel**.
 +</WRAP>
 +<WRAP column 57%>
 +|{{ Images_Cahier-201-05-111.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 35%>
 +//**À l'adresse de courriel**//\\ 
 +On entre l'adresse courriel d'un <wrap em>__usager de notre serveur principal__</wrap>.
 +
 +☑ **Toujours afficher le journal des communications...**
 +
 +**-> Envoyer un message de test**.
 +</WRAP>
 +<WRAP column 57%>
 +|{{ Images_Cahier-201-05-112.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 35%>
 +Succès.
 +
 +**Continuer** pour retourner à la page de test.
 +</WRAP>
 +<WRAP column 57%>
 +|{{ Images_Cahier-201-05-113.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 35%>
 +<wrap em>__Sur notre serveur principal__</wrap>, le courriel a bien été reçu par l'usager spécifié.
 +\\ 
 +\\ 
 +<WRAP centeralign>**La messagerie de Moodle fonctionne correctement.**</WRAP>
 +</WRAP>
 +<WRAP column 57%>
 +|{{ Images_Cahier-201-05-114.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Auto-enregistrement par courriel ======
 +
 +===== Introduction =====
 +
 +{{Images_Cahier-101-03-006.png?25}} N'envisagez d'activer l'//Auto-enregistrement par courriel// que pendant une courte période pour permettre aux utilisateurs de créer des comptes, puis réglez ce paramètre à //**Désactiver**// dans **Tableau de bord -> Administration du site -> Plugins -> Authentification ->** cadre  **Réglages communs -> Auto-enregistrement -> Désactiver -> Enregistrer les modifications**.
 +
 +{{Images_Cahier-101-03-003.png?22}} Limitez l'//Auto-enregistrement par courriel// à des domaines de messagerie particuliers avec le paramètre de domaines de messagerie autorisés ou refusez les adresses de messagerie de domaines de messagerie temporaires avec le paramètre de //**Domaines de courriel interdits**//. //(Recherchez sur Internet une liste actualisée de domaines pour trouver des adresses électroniques jetables et temporaires.)//\\ 
 +<WRAP centeralign>Pour voir ces domaines de messagerie temporaires, allez à l'URL: [[https://gist.github.com/adamloving/4401361|https://gist.github.com/adamloving/4401361]].\\
 +Cette URL est mise à jour quasi quotidiennement.</WRAP> 
 +Copiez et collez la liste complète dans le champ //**Domaines courriel interdits**//. Ce champ est situé dans **Tableau de bord -> Administration du site -> Plugins -> Authentification ->** cadre **Réglages communs -> Domaines courriels interdits**. Une fois la liste collée, cliquez **-> Enregistrer les modifications**.
 +
 +{{ Images_Cahier-201-05-115.png?700 }}
 +\\ 
 +
 +===== Activation de l'Auto-enregistrement =====
 +
 +Lors de l'installation, à la section 
 +[[nethserver_201_cahier_05_moodle#Nouveaux réglages]]
 +, nous n'avons pas activé //Nouveaux réglages - Gestion de l'authentification//; nous avons laissé le paramètre //**Auto-enregistrement**// à //Désactiver//. Les nouveaux utilisateurs ne peuvent donc pas s'enregistrer eux-même.
 +
 +Nous allons activer l'//Auto-enregistrement// et le célèbre Général Toto pourra ainsi s'enregistrer lui-même.
 +
 +<WRAP column 20%>
 +**Tableau de bord -> Administration du site -> Plugins -> Authentification**.
 +
 +//**Auto-enregistrement par courriel**//\\ 
 +Si non activé, on clique l'icône d'activation.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-116.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 20%>
 +//**Auto-enregistrement**//\\ 
 +**-> Auto-enregistrement par courriel**.
 +
 +On peut aussi cocher //**Permettre la connexion au moyen de l'adresse courriel**//.
 +
 +{{ Images_Cahier-201-05-076.png?150 }}
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-118.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Nouvel utilisateur =====
 +
 +<WRAP column 25%>
 +On se déconnecte.
 +|{{ Images_Cahier-201-05-119.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +**Connexion**.
 +|{{ Images_Cahier-201-05-120.png?400 }}|
 +</WRAP>
 +<WRAP column 35%>
 +**Créer un compte**.
 +|{{ Images_Cahier-201-05-121.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On entre les informations demandées pour le Grand Général **-> Créer mon compte**.
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-122.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-123.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-05-124.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 20%>
 +Le Grand Général, qui est déjà un utilisateur de la messagerie électronique <wrap em>__sur notre serveur principal__</wrap>, a reçu son courriel pour la confirmation de la création de son compte Moodle.
 +
 +Il se rend à l'adresse indiquée.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-125.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 20%>
 +L'utilisateur __toto__ est automatiquement connecté et il peut dérouler son menu utilisateur.
 +
 +Le Grand Général clique **Continuer**.
 +</WRAP>
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-05-126.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Son //Tableau de bord// s'affiche.
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +
 +<WRAP centeralign>**L'auto-enregistrement fonctionne correctement.**</WRAP>
 +</WRAP>
 +<WRAP column 46%>
 +|{{Images_Cahier-201-05-127.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +===== Tutoriels =====
 +
 +==== Texte ====
 +
 +Portail de la corporation DECclic: -> [[https://portail.moodle.decclic.qc.ca/|https://portail.moodle.decclic.qc.ca/]].
 +
 +UQAC:\\ 
 +-> //Guide Moodle pour étudiants:// [[http://www.uqac.ca/bst/knowledgebase_category/guide-moodle-pour-etudiants/|http://www.uqac.ca/bst/knowledgebase_category/guide-moodle-pour-etudiants/]].\\
 +-> //Guide Moodle conplet pour enseignants:// [[http://www.uqac.ca/bst/knowledgebase_category/guide-moodle-comple/|http://www.uqac.ca/bst/knowledgebase_category/guide-moodle-comple/]].
 +
 +100 Tutoriels Moodle //(Moodle<wrap em>-2</wrap>)//:->  [[http://public.iutenligne.net/informatique/logiciels/moodle/formation-moodle/Chapitre-2/|http://public.iutenligne.net/informatique/logiciels/moodle/formation-moodle/Chapitre-2/]].
 +
 +PDF: → [[https://moodle.univ-tln.fr/course/view.php?id=337|https://moodle.univ-tln.fr/course/view.php?id=337]].
 +
 +==== Vidéo ====
 +
 +Vidéos généraux: → [[https://www.youtube.com/channel/UC_eJsmK-DMqA9Dy7bLKKL-g|https://www.youtube.com/channel/UC_eJsmK-DMqA9Dy7bLKKL-g]]
 +
 +Vidéos Moodle-3.5: → 32 vidéos, chacun de quelques minutes seulement. -> [[https://www.youtube.com/watch?v=-0H9HLv41vY&list=PLxcO_MFWQBDehWp4JRrMqUkC-60RBGTs0&index=1|https://www.youtube.com/watch?v=-0H9HLv41vY&list=PLxcO_MFWQBDehWp4JRrMqUkC-60RBGTs0&index=1]].
 + 
 +100 tutoriels vidéos pour Moodle: ->  [[http://www.iutenligne.net/ressources/100-tutoriels-videos-pour-moodle.html?id=789|http://www.iutenligne.net/ressources/100-tutoriels-videos-pour-moodle.html?id=789]].
 +\\ 
 +\\ 
 +
 +====== Sécurité ======
 +
 +===== Fichier .htaccess =====
 +
 +Pour encore plus de sécurité, on crée un fichier ''.htaccess'' dans le répertoire ''/var/lib/nethserver/vhost/moodle/''.
 +
 +==== Protection du fichier config.php ====
 +
 +{{Images_icone-201-003_Note.png?25}} On crée //(>)// le fichier ''.htaccess'' et on y insère son contenu.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /var/lib/nethserver/vhost/moodle/.htaccess <<'EOT'
 +# **************************************
 +# Pour protéger le fichier config.php
 +<Files config.php>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie le contenu.
 +
 +<file>
 +[root@tchana ~]# tail -8 /var/lib/nethserver/vhost/moodle/.htaccess
 +
 +# **************************************
 +# Pour protéger le fichier config.php
 +<Files config.php>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant la ligne __<nowiki># ******...</nowiki>__ Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +On ajuste les droits et permissions.
 +
 +<file>
 +[root@tchana ~]# chmod 640 /var/lib/nethserver/vhost/moodle/.htaccess
 +
 +[root@tchana ~]#
 +</file>
 +
 +On ajuste le propriétaire et le groupe.
 +
 +<file>
 +[root@tchana ~]# chown apache:apache /var/lib/nethserver/vhost/moodle/.htaccess
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/lib/nethserver/vhost/moodle/.htaccess
 +
 +4 -rw-r----- 1 apache apache 142 26 août  13:04 /var/lib/nethserver/vhost/moodle/.htaccess
 +[root@tchana ~]#
 +</file>
 +
 +==== Protection du fichier .htaccess lui-même ====
 +
 +{{Images_icone-201-003_Note.png?25}} Dans la commande ci-dessous, les deux caractères //(> >)// après ''cat'', signifie qu'on ajoute au fichier ''.htaccess''.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> /var/lib/nethserver/vhost/moodle/.htaccess <<'EOT'
 +# **************************************
 +# Pour protéger le fichier htaccess lui-même
 +<Files .htaccess>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie le contenu.
 +
 +<file>
 +[root@tchana ~]# tail -8 /var/lib/nethserver/vhost/moodle/.htaccess
 +
 +# **************************************
 +# Pour protéger le fichier htaccess lui-même
 +<Files .htaccess>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant la ligne __<nowiki># ******...</nowiki>__ Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +==== Directives Apache ====
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> /var/lib/nethserver/vhost/moodle/.htaccess <<'EOT'
 +# **************************************
 +# DIRECTIVES POUR APACHE
 +
 +# Permettre au serveur de suivre les liens symboliques dans les répertoires concernés.
 +Options +FollowSymLinks
 +
 +# Empêcher d'afficher le contenu des répertoires s'ils ne contiennent aucun DirectoryIndex
 +# c'est-à-dire index.html, index.php etc...
 +Options -Indexes
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +root@tchana ~]# tail -10 /var/lib/nethserver/vhost/moodle/.htaccess
 +
 +# **************************************
 +# DIRECTIVES POUR APACHE
 +
 +# Permettre au serveur de suivre les liens symboliques dans les répertoires concernés.
 +Options +FollowSymLinks
 +
 +# Empêcher d'afficher le contenu des répertoires s'ils ne contiennent aucun DirectoryIndex
 +# c'est-à-dire index.html, index.php etc...
 +Options -Indexes
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant la ligne __<nowiki># ******...</nowiki>__ Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +==== AllowOverride ====
 +
 +Nous allons ajouter un nouveau fichier de configuration ''zz_moodledata.conf'' qu'Apache incorporera afin qu'il prenne en compte les fichiers ''.htaccess'' dans le répertoire ''/var/lib/nethserver/vhost/moodle'' et ses sous-répertoire.
 +
 +//Référence:// [[https://dev-notes.eu/2017/01/apache-directives-in-config-vs-htaccess/|https://dev-notes.eu/2017/01/apache-directives-in-config-vs-htaccess/]]\\ 
 +//Référence:// [[http://httpd.apache.org/docs/current/howto/htaccess.html#page-header|http://httpd.apache.org/docs/current/howto/htaccess.html#page-header]].
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/httpd/conf.d/zz_moodle.conf <<'EOT'
 +<Directory "/var/lib/nethserver/vhost/moodle">
 +    #
 +    # Modification par Michel-André le 26 août 2019
 +    # Afin que le démon httpd traite les fichers .htacces dans les répertoires et
 +    # sous-répertoires de /var/lib/nethserver/vhost/moodle.
 +    AllowOverride All
 +</Directory>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /etc/httpd/conf.d/zz_moodle.conf
 +
 +4 -rw-r--r-- 1 root root 288 26 août  13:22 /etc/httpd/conf.d/zz_moodle.conf
 +[root@tchana ~]#
 +</file>
 +
 +On affiche le contenu du fichier.
 +
 +<file>
 +[root@tchana ~]# cat /etc/httpd/conf.d/zz_moodle.conf
 +
 +<Directory "/var/lib/nethserver/vhost/moodledata">
 +    #
 +    # Modification par Michel-André le 26 août 2019
 +    # Afin que le démon httpd traite les fichers .htacces dans les répertoires et
 +    # sous-répertoires de /var/lib/nethserver/vhost/moodle.
 +    AllowOverride All
 +</Directory>
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide au dessus de __<nowiki><Directory "/var/lib/nethserver/vhost/moodledata"></nowiki>__. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.\\ 
 +{{Images_icone-201-003_Note.png?25}} Lors de son lancement, Apache incorporera notre fichier ''zz_moodledata.conf''.
 +
 +=== Redémarrage du démon httpd ===
 +
 +On redémarre le démon Apache afin qu'il relise son fichier de configuration.
 +
 +<file>
 +[root@tchana ~]# systemctl restart httpd
 +
 +[root@tchana ~]#
 +</file>
 +
 +=== Sauvegarde ===
 +
 +On vérifie si le nom du fichier ''/etc/httpd/conf.d/zz_moodle.conf'' est déjà présent dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/httpd/conf.d/zz_moodle.conf"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep moodle
 +
 +/etc/httpd/conf.d/z_moodledata.conf
 +/etc/httpd/conf.d/zz_moodle.conf
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Ci-dessus, il n'y a pas de ligne vide avant __<nowiki>/etc/httpd/conf.d/z_moodledata.conf</nowiki>__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +===== Proxy Web =====
 +
 +<WRAP column 40%>
 +Si vous êtes derrière un pare-feu, vous devrez renseigner les identifiants pour votre mandataire dans la section "Proxy web".
 +
 +**Tableau de bord -> Administration du site -> Serveur -> HTTP ->** cadre **Proxy web**.
 +</WRAP>
 +<WRAP column 52%>
 +|{{ Images_Cahier-201-05-128.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Bouton de connexion anonyme =====
 +
 +Par sécurité. on supprime l'affichage du //Bouton de connexion anonyme//.
 +
 +**Tableau de bord -> Administration du site -> Plugins -> Authentification -> Gestion de l'authentification ->** dans le cadre **Réglages de sécurité du site -> Bouton de connexion anonyme ->** on sélectionne **Cacher -> Enregistrer les modifications**.
 +
 +{{ Images_Cahier-201-05-129.png?800 }}
 +\\
 +
 +===== Connexion pour voir les profils =====
 +
 +**Tableau de bord -> Administration du site -> Sécurité**.
 +
 +Dans le cadre //Réglages de sécurité du site//, on s'assure que le paramètre //**Imposer la connexion pour voir les profils**// soit coché.
 +
 +{{ Images_Cahier-201-05-130.png?800 }}
 +
 +Si vous modifiez ce paramètre, il faut cliquer <wrap em>Enregistrer les modifications</wrap> pour conserver sa nouvelle valeur.
 +\\ 
 +\\ 
 +
 +===== Affichage du profil des utilisateurs inscrits à des cours uniquement =====
 +
 +**Tableau de bord -> Administration du site -> Sécurité**.
 +
 +Dans le cadre //Réglages de sécurité du site//, on s'assure que le paramètre //**Affichage du profil des utilisateurs inscrits à des cours uniquement**// soit coché.
 +
 +{{ Images_Cahier-201-05-131.png?800 }}
 +\\ 
 +
 +===== Appliquer les restrictions de domaines =====
 +
 +**Tableau de bord -> Administration du site -> Sécurité**.
 +
 +Dans le cadre //Réglages communs//, on s'assure que le paramètre //**Appliquer les restrictions de domaines lors des modifications d'adresse de courriel**// soit coché.
 +
 +{{ Images_Cahier-201-05-132.png?800 }}
 +\\ 
 +
 +===== ReCAPTCHA =====
 +
 +//Référence:// [[https://www.fastcompany.com/90369697/googles-new-recaptcha-has-a-dark-side|https://www.fastcompany.com/90369697/googles-new-recaptcha-has-a-dark-side]].\\ 
 +"Perona considère l’utilisation de //reCaptcha// par Google comme un «accaparement des terres en ligne» qui renforce la position de Google sur Internet."\\ 
 +"C’est toujours une arme à double tranchant", dit Perona. "Vous gagnez quelque chose, mais vous donnez également à Google un peu plus de contrôle sur tout ce qui est en ligne." Le gain est la sécurité et une meilleure expérience utilisateur, mais la confidentialité peut en pâtir.
 +
 +===== Sécurité supplémentaire =====
 +
 +On peut consulter les liens suivants:\\ 
 +//Security recommendations:// [[https://docs.moodle.org/33/en/Security_recommendations|https://docs.moodle.org/33/en/Security_recommendations]]\\ 
 +//Security:// [[http://docs.moodle.org/24/en/Security|http://docs.moodle.org/24/en/Security]]
 +
 +===== Ajustement des droits =====
 +
 +Pour une dernière fois après la configuration de Moodle, on ajuste le propriétaire, le groupe et les droits.
 +
 +==== Répertoire moodle ====
 +
 +On ajuste __**R**__écursivement le propriétaire et le groupe.
 +
 +<file>
 +[root@tchana ~]# chown -R apache /var/lib/nethserver/vhost/moodle/*
 +
 +[root@tchana ~]#
 +</file>
 +
 +On fait de même pour les fichiers/répertoires cachés.
 +
 +<file>
 +[root@tchana ~]# chown -R apache /var/lib/nethserver/vhost/moodle/.*
 +
 +[root@tchana ~]#
 +</file>
 +
 +On renforce la sécurité de l’accès aux fichiers //( f )// en supprimant les droits à "other".
 +
 +{{Images_Cahier-101-03-006.png?25}} L'option **-L** doit être avant le chemin pour suivre les Liens symboliques. Le chemin doit se terminer par <wrap em>/</wrap>.
 +
 +<file>
 +[root@tchana ~]# find -L /var/lib/nethserver/vhost/moodle/ -type f -exec chmod 0640 {} \;
 +
 +[root@tchana ~]#
 +</file>
 +
 +On répète l'opération pour les répertoires //( d )//.
 +
 +<file>
 +[root@tchana ~]# find -L /var/lib/nethserver/vhost/moodle/ -type d -exec chmod 02750 {} \;
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie les paramètres des répertoires et des fichiers, standards ou cachés. On s'assure que l'utilisateur "other" n'ait aucun droit.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/lib/nethserver/vhost/moodle/
 +
 +total 660
 +  4 drwxr-s--- 52 apache apache   4096 26 août  22:17 .
 +  0 drwxr-xr-x  4 apache root       38 24 août  09:20 ..
 +  4 drwxr-s--- 13 apache apache   4096 24 août  09:40 admin
 +...
 +  4 -rw-r-----  1 apache apache    777 24 août  10:39 config.php
 +...
 +  0 drwxr-s---  8 apache apache    163 24 août  09:40 .git
 +...
 +  4 -rw-r-----  1 apache apache    628 26 août  13:11 .htaccess
 +...
 +  4 -rw-r-----  1 apache apache   1639 24 août  09:40 version.php
 +  0 drwxr-s---  7 apache apache    227 24 août  09:40 webservice
 +[root@tchana ~]#
 +</file>
 +
 +==== Répertoire moodledata ====
 +
 +On ajuste __**R**__écursivement le propriétaire et le groupe.
 +
 +<file>
 +[root@tchana ~]# chown -R apache /var/lib/nethserver/vhost/moodledata/*
 +
 +[root@tchana ~]#
 +</file>
 +
 +On fait de même pour les fichiers/répertoires cachés.
 +
 +<file>
 +[root@tchana ~]# chown -R apache /var/lib/nethserver/vhost/moodledata/.*
 +
 +[root@tchana ~]#
 +</file>
 +
 +On renforce la sécurité de l’accès aux fichiers //( f )// en supprimant les droits à "other".
 +
 +{{Images_Cahier-101-03-006.png?25}} L'option **-L** doit être avant le chemin pour suivre les Liens symboliques. Le chemin doit se terminer par <wrap em>/</wrap>.
 +
 +<file>
 +[root@tchana ~]# find -L /var/lib/nethserver/vhost/moodledata/ -type f -exec chmod 0640 {} \;
 +
 +[root@tchana ~]#
 +</file>
 +
 +On répète l'opération pour les répertoires //( d )//.
 +
 +<file>
 +[root@tchana ~]# find -L /var/lib/nethserver/vhost/moodledata/ -type d -exec chmod 02750 {} \;
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie les paramètres des répertoires et des fichiers, standards ou cachés. On s'assure que l'utilisateur "other" n'ait aucun droit.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/lib/nethserver/vhost/moodledata/
 +
 +total 12
 +0 drwxr-s--- 12 apache apache  179 26 août  11:14 .
 +0 drwxr-xr-x  4 apache root     38 24 août  09:20 ..
 +0 drwxr-s---  3 apache apache   55 24 août  11:21 cache
 +0 drwxr-s--- 11 apache apache  115 24 août  11:18 filedir
 +4 -rw-r-----  1 apache apache   31 26 août  12:47 .htaccess
 +4 -rw-r-----  1 apache apache   33 26 août  12:48 index.htm
 +0 drwxr-s---  4 apache apache   29 26 août  11:10 lang
 +0 drwxr-s---  8 apache apache  119 24 août  11:45 localcache
 +4 drwxr-s--- 65 apache apache 4096 26 août  18:05 lock
 +0 drwxr-s---  3 apache apache   15 24 août  10:12 models
 +0 drwxr-s---  2 apache apache   24 24 août  10:11 muc
 +0 drwxr-s---  2 apache apache   51 26 août  22:03 sessions
 +0 drwxr-s---  8 apache apache  130 26 août  11:10 temp
 +0 drwxr-s---  2 apache apache    6 26 août  11:14 trashdir
 +[root@tchana ~]#
 +</file>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Mise à jour de Moodle ======
 +
 +===== Restez à jour =====
 +
 +{{Images_Cahier-101-03-006.png?25}} Ici, mise à jour ne signifie pas de passer à une version supérieure de Moodle, mais seulement une mise à jour des fichiers de la branche actuelle.\\ 
 +{{Images_Cahier-101-03-003.png?22}} S'assurer d'avoir une sauvegarde du Serveur NethServer avant d'effectuer une mise à jour.\\ 
 +L'utilitaire ''git'' ne met à jour que le code principal de Moodle. Si des extensions ont été installées de manière typique //(via l'interface utilisateur de Moodle)//, elles ne sont, ni mises à jour ni mises à niveau, par les commandes ''git'' pour mettre à jour le noyau, mais plutôt via l'interface utilisateur de Moodle. Voir la capture d'écran à la section 
 +[[nethserver_201_cahier_05_moodle#Extensions]]
 +.
 +
 +===== Mise à jour du Noyau Moodle =====
 +
 +//Référence:// [[https://docs.moodle.org/3x/fr/Git_pour_administrateurs|https://docs.moodle.org/3x/fr/Git_pour_administrateurs]].\\ 
 +Lors d'une mise à jour, ''git'' va comparer le code qui est sur votre serveur avec le code hébergé chez le fournisseur de code, supprimer certaines lignes et en ajouter d'autres, idem pour les fichiers et répertoires. 
 +
 +On se rend dans le répertoire racine de Moodle.
 +
 +<file>
 +[root@tchana ~]# cd /var/lib/nethserver/vhost/moodle
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana moodle]# pwd
 +
 +/var/lib/nethserver/vhost/moodle
 +[root@tchana moodle]#
 +</file>
 +
 +On s'assure de notre branche de Moodle.
 +
 +<file>
 +bash-4.2$ git branch -a
 +
 +* MOODLE_35_STABLE
 +  remotes/origin/HEAD -> origin/master
 +  remotes/origin/MOODLE_13_STABLE
 +...
 +  remotes/origin/MOODLE_35_STABLE
 +  remotes/origin/MOODLE_36_STABLE
 +  remotes/origin/MOODLE_37_STABLE
 +  remotes/origin/master
 +bash-4.2$
 +</file>
 +
 +L'astérisque <wrap em>*</wrap> indique que nous traquons la __branche 35 stable__.
 +
 +On met à jour le noyau de Moodle.
 +
 +<file>
 +[root@tchana moodle]# git pull
 +
 +remote: Counting objects: 1988, done.
 +remote: Compressing objects: 100% (251/251), done.
 +remote: Total 1275 (delta 1017), reused 1264 (delta 1006)
 +Receiving objects: 100% (1275/1275), 255.07 KiB | 463.00 KiB/s, done.
 +Resolving deltas: 100% (1017/1017), completed with 306 local objects.
 +From git://git.moodle.org/moodle
 +   d6af305..de16819  MOODLE_35_STABLE -> origin/MOODLE_35_STABLE
 +   d36b303..5f5e77c  MOODLE_36_STABLE -> origin/MOODLE_36_STABLE
 +   5a0c850..684d142  MOODLE_37_STABLE -> origin/MOODLE_37_STABLE
 +   7e16c70..0dca957  master     -> origin/master
 +Updating d6af305..de16819
 +Fast-forward
 + admin/tests/behat/manage_tokens.feature                    |   1 +
 + admin/tool/lp/amd/build/competencies.min.js                | Bin 5266 -> 5347 bytes
 + admin/tool/lp/amd/build/competencyactions.min.js           | Bin 11119 -> 11162 bytes
 + admin/tool/lp/amd/build/competencypicker.min.js            | Bin 5159 -> 5200 bytes
 + admin/tool/lp/amd/build/course_competency_settings.min.js  | Bin 1917 -> 1979 bytes
 + admin/tool/lp/amd/build/grade_dialogue.min.js              | Bin 1314 -> 1313 bytes
 + .../tool/lp/amd/build/grade_user_competency_inline.min.js  | Bin 1610 -> 1684 bytes
 + admin/tool/lp/amd/src/competencies.js                      |  43 ++++---
 + admin/tool/lp/amd/src/competencyactions.js                  13 ++-
 + admin/tool/lp/amd/src/competencypicker.js                  |  10 +-
 + admin/tool/lp/amd/src/course_competency_settings.js        |  63 ++++++----
 + admin/tool/lp/amd/src/grade_dialogue.js                    |  23 ++--
 + admin/tool/lp/amd/src/grade_user_competency_inline.js      |  21 +++-
 + admin/tool/lp/tests/behat/framework_crud.feature             1 +
 + admin/tool/lp/tests/behat/template_crud.feature            |   1 +
 + composer.json                                              |   9 +-
 + composer.lock                                              | 153 +++++++++++++------------
 + course/tests/behat/navigate_course_list.feature            |   3 +
 + .../form/rubric/tests/behat/grade_calculation.feature      |   1 +
 + .../form/rubric/tests/behat/negative_points.feature        |   1 +
 + .../report/history/tests/behat/basic_functionality.feature |   4 +-
 + .../singleview/classes/local/ui/dropdown_attribute.php       3 +-
 + .../singleview/templates/dropdown_attribute.mustache         1 +
 + grade/report/singleview/tests/behat/singleview.feature       4 +-
 + install/lang/ro_wp/moodle.php                              |   3 +
 + lib/behat/behat_base.php                                     6 +-
 + lib/behat/classes/partial_named_selector.php                 5 +
 + lib/editor/tinymce/tests/behat/disablecontrol.feature      |   4 +-
 + lib/tests/behat/behat_forms.php                            |  14 +++
 + lib/tests/behat/behat_general.php                          | 126 +++++++++++++++-----
 + mod/glossary/tests/behat/categories.feature                |   9 +-
 + question/tests/generator/lib.php                            13 ++-
 + report/participation/index.php                               2 +-
 + search/tests/behat/search_by_user.feature                  |  14 +--
 + .../gradereport_singleview/dropdown_attribute.mustache       1 +
 + user/tests/behat/behat_user.php                            |  12 +-
 + version.php                                                |   4 +-
 + 37 files changed, 379 insertions(+), 189 deletions(-)
 +[root@tchana moodle]#
 +</file>
 +
 +Le noyau de Moodle a été mis à jour: //compilation// **d6af305 ->** //compilation// **de16819**.
 +
 +===== Propriétaire, groupe et droits =====
 +
 +Après une mise à jour, il est toujours préférable d'ajuster le propriétaire, le groupe et les droits.
 +
 +On ajuste __**R**__écursivement le propriétaire et le groupe pour tout le répertoire racine de Moodle.
 +
 +<file>
 +[root@tchana moodle]# chown -R apache:apache /var/lib/nethserver/vhost/moodle/*
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On répète la commande pour les fichiers/répertoires cachés.
 +
 +<file>
 +[root@tchana moodle]# chown -R apache:apache /var/lib/nethserver/vhost/moodle/.*
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On renforce la sécurité de l’accès aux fichiers //( f )// en supprimant les droits à "other".
 +
 +{{Images_Cahier-101-03-006.png?25}} L'option **-L** doit être avant le chemin pour suivre les Liens symboliques. Le chemin doit se terminer par <wrap em>/</wrap>.
 +
 +<file>
 +[root@tchana moodle]# find -L /var/lib/nethserver/vhost/moodle/ -type f -exec chmod 0640 {} \;
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On répète l'opération pour les répertoires //( d )//.
 +
 +<file>
 +[root@tchana moodle]# find -L /var/lib/nethserver/vhost/moodle/ -type d -exec chmod 02750 {} \;
 +
 +[root@tchana moodle]#
 +</file>
 +
 +On vérifie les paramètres des répertoires et des fichiers, standards ou cachés. On s'assure que l'utilisateur "other" n'ait aucun droit.
 +
 +<file>
 +[root@tchana moodle]# ls -als /var/lib/nethserver/vhost/moodle/
 +
 +total 656
 +  4 drwxr-s--- 52 apache apache   4096 25 août  15:40 .
 +  0 drwxr-xr-x  4 apache apache     38 19 août  21:41 ..
 +  4 drwxr-s--- 13 apache apache   4096 19 août  21:49 admin
 +  0 drwxr-s---  4 apache apache     53 19 août  21:49 analytics
 +...
 +  4 -rw-r-----  1 apache apache   2147 19 août  21:49 .eslintignore
 +  8 -rw-r-----  1 apache apache   6713 19 août  21:49 .eslintrc
 +...
 +  0 drwxr-s---  2 apache apache     23 19 août  21:49 userpix
 +  4 -rw-r-----  1 apache apache   1639 25 août  15:40 version.php
 +  0 drwxr-s---  7 apache apache    227 19 août  21:49 webservice
 +[root@tchana moodle]#
 +</file>
 +
 +==== Interface Web - mise à jour de la BD ====
 +
 +Si nous sommes déjà connecté à Moodle, on rafraîchit la page, sinon on se connecte.
 +
 +<WRAP column 46%>
 +**Continuer**.
 +|{{ Images_Cahier-201-05-133.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +**Continuer**.
 +|{{ Images_Cahier-201-05-134.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Extensions ===
 +
 +C'est ici qu'on peut //Rechercher des mise à jour// pour les extensions. Ci-dessous, Moodle nous indique: //**Aucun plugin ne nécessite votre attention**//.
 +
 +<WRAP column 30%>
 +\\ 
 +**Mettre à jour la base de données**.
 +|{{ Images_Cahier-201-05-135.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\
 +**Continuer**.
 +|{{ Images_Cahier-201-05-136.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Tout s'est bien déroulé.\\ 
 +<nowiki>-</nowiki> La mise à jour de Moodle est terminée.
 +|{{ Images_Cahier-201-05-137.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Extensions, thèmes ou code personnel =====
 +
 +Si vous installez du code personnel supplémentaire sur votre Moodle, il faut demander à ''git'' de ne pas vérifier les répertoires contenant ce code.
 +
 +Pour cela, il faut tenir à jour un fichier qui liste les répertoires à ne pas être supervisés par ''git''.
 +
 +On modifie le fichier: ''/var/lib/nethserver/vhost/moodle/.git/info/exclude''.
 +
 +On ajoute, à la fin de ce fichier, la liste des répertoires à ne pas superviser. Par exemple: pour un //mod//, un //thème// et un //bloc//:
 +
 +<WRAP box>
 +<file>
 +/mod/mon_mod_ajouté/
 +/theme/mon_thème_ajouté/
 +/blocks/mon_bloc_ajouté/
 +</file>
 +</WRAP>
 +
 +===== Vérification du site Moodle =====
 +
 +{{Images_Cahier-101-03-003.png?22}} On vidange l'historique de notre navigateur et on s'assure que //java script// et les //témoins// soient activés.\\ 
 +On se connecte à Moodle et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour: https://www.moodle.micronator-dev.org.
 +
 +<WRAP column 30%>
 +**Connexion**.
 +|{{ Images_Cahier-201-05-138.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +On entre les informations demandées.
 +|{{ Images_Cahier-201-05-139.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Tableau de bord.
 +|{{ Images_Cahier-201-05-140.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On vérifie quelques pages.
 +
 +<WRAP column 30%>
 +**Accueil du site**.
 +|{{ Images_Cahier-201-05-141.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +**Fichiers personnels**.
 +|{{ Images_Cahier-201-05-142.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +**Administration du site**.
 +|{{ Images_Cahier-201-05-143.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +<WRAP centeralign>**Tout fonctionne correctement.**</WRAP>
 +\\ 
 +
 +====== Mise à jour des Collections ======
 +
 +===== Introduction =====
 +
 +{{Images_icone-201-003_Note.png?25}} L'exemple de ce chapitre provient de la section 
 +[[nethserver_101_cahier_06_nethserver_wordPress#Mise à jour des Collections|Mise à jour des Collections]]
 + du **Cahier-06:** //NethServer & WordPress// du "Cours NethServer-101".
 +
 +Présentement, nous avons deux Collections d'installées: //PHP// et //MariaDB 10.2//. Elles peuvent être mises à jour à la console du serveur. __La mise à jour du Serveur NethServer les mettra aussi automatiquement à jour__.
 +
 +===== Mises à jour =====
 +
 +On lance les mises à jour des deux //Collections//.
 +
 +<file>
 +[root@tchana ~]# yum update -y --enablerepo=stephdl nethserver-php-scl nethserver-rh-mariadb102
 +
 +Loaded plugins: changelog, fastestmirror, nethserver_events
 +Determining fastest mirrors
 +epel/x86_64/metalink                                                  15 kB  00:00:00
 + * ce-base: ewr.edge.kernel.org
 +...
 +Dependencies Resolved
 +...
 +Transaction Summary
 +============================================================================================
 +Install              4 Dependent packages)
 +Upgrade  1 Package  (+52 Dependent packages)
 +...
 +Dependency Installed:
 +  oniguruma5.x86_64 0:6.9.2-1.el7.remi         php71-php-opcache.x86_64 0:7.1.30-1.el7.remi
 +  php72-php-opcache.x86_64 0:7.2.19-2.el7.remi php73-php-opcache.x86_64 0:7.3.6-1.el7.remi
 +
 +Updated:
 +  nethserver-php-scl.x86_64 0:1.2.6-1.ns7.sdl
 +
 +Dependency Updated:
 +  php71-php-bcmath.x86_64 0:7.1.30-1.el7.remi
 +...
 +  php73-php-xml.x86_64 0:7.3.6-1.el7.remi
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-005.png?25}} Les mises à jour ont été installées.\\ 
 +{{Images_Cahier-101-03-003.png?22}} Dans la commande ci-dessus, on peut omettre l'option ''-y'' et ''yum'' demandera si on veut mettre a jour. Il suffit de répondre ''y'' ou ''n'' pour //oui// ou //non//.
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Mises à jour de NethServer ======
 +
 +===== Serveur NethServer =====
 +
 +{{Images_icone-201-003_Note.png?25}} L'exemple de ce chapitre provient de la section 
 +[[nethserver_201_cahier_04_dokuwiki#Mises à jour de NethServer|Mises à jour de NethServer]]
 + du **Cahier-04:** //DokuWiki// du "Cours NethServer-201".
 +
 +<WRAP column 46%>
 +<nowiki>-</nowiki> **Administration -> Gestionnaire des logiciels ->** onglet **Mises à jour**.\\ 
 +<nowiki>-</nowiki> **TÉLÉCHARGER ET INSTALLER**.
 +|{{ Images_Cahier-201-03-160.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +\\ 
 +\\ 
 +À la fin de la mise à jour, **Recharger la page**.
 +|{{ Images_Cahier-201-03-161.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Appendices ======
 +
 +{{Images_icone-201-003_Note.png?25}} Les exemples de ce chapitre proviennent de la section 
 +[[nethserver_201_cahier_04_dokuwiki#Appendices|Appendices]]
 + du **Cahier-04:** //DokuWiki// du "Cours NethServer-201".
 +
 +===== Écran conventionnel de démarrage =====
 +
 +<WRAP column 46%>
 +Si nous voulons voir l'écran conventionnel de démarrage tel que ci-contre, il suffit de supprimer un seul paramètre dans le fichier de configuration de //grub//:
 +
 +<WRAP centeralign>
 + ''/etc/default/grub''
 +</WRAP>
 +|{{ Images_Cahier-101-03-368.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-367.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Suppression du paramètre rhgb ====
 +
 +Ligne originale dans le fichier ''/etc/default/grub''.
 +
 +<WRAP box>
 +<file>
 +GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap nodmraid rhgb quiet"
 +</file>
 +</WRAP>
 +
 +Après avoir enlevé le paramètre **rhgb**.
 +
 +<WRAP box>
 +<file>
 +GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap nodmraid quiet"
 +</file>
 +</WRAP>
 +
 +On signale le changement en régénérant le fichier de configuration.
 +
 +<file>
 +[root@tchana ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
 +
 +Generating grub configuration file ...
 +Found linux image: /boot/vmlinuz-3.10.0-957.5.1.el7.x86_64
 +Found initrd image: /boot/initramfs-3.10.0-957.5.1.el7.x86_64.img
 +Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
 +Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
 +Found linux image: /boot/vmlinuz-0-rescue-8ee070fd1a7a4e8daf17a7dae9f85ac1
 +Found initrd image: /boot/initramfs-0-rescue-8ee070fd1a7a4e8daf17a7dae9f85ac1.img
 +done
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-005.png?25}} Au prochain réamorçage, le nouveau fichier ''grub'' sera effectif.
 +\\ 
 +\\ 
 +
 +===== Nom du serveur dans l'écran de connexion à Webmail =====
 +
 +<WRAP column 50%>
 +À l'écran de connexion à Webmail, dans le champ //**Serveur**//, le nom du domaine principal du serveur apparaît.
 +
 +On peut supprimer complètement l'affichage de cette ligne. Utile surtout si nous avons plusieurs domaines hébergés sur le Serveur NethServer, car peu importe le domaine auquel nous nous connectons, c'est toujours le nom du domaine principal qui est affiché.
 +
 +Pour supprimer l'affichage de cette ligne, il nous faut modifier le fichier de configuration de PHP:\\
 +
 +<WRAP centeralign>
 +''/etc/roundcubemail/config.inc.php''
 +</WRAP>
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-03-340.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +et y ajouter la ligne suivante:  ''config['default_host'] = '127.0.0.1';''.
 +
 +Par contre, si nous modifions directement ce fichier, le prochain ré-amorçage écrasera la modification lorsque le serveur assemblera les gabarits de configuration du système.
 +
 +{{Images_Cahier-101-03-003.png?22}} Il nous faut donc créer un //**gabarit personnalisé**// et y insérer la nouvelle ligne de configuration. Ainsi, lors de l'assemblage des gabarits, le serveur incorporera le gabarit personnalisé au gabarit standard de configuration de PHP.
 +
 +Création du répertoire pour le gabarit personnalisé.
 +
 +<file>
 +[root@tchana ~]# mkdir -p /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On crée le fichier **91CacherNomDuServeur** et on y insère la ligne de configuration.
 +
 +{{Images_Cahier-101-03-006.png?25}}Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur <<'EOT'
 +
 +$config['default_host'] = '127.0.0.1';
 +
 +EOT
 +
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur
 +
 +$config['default_host'] = '127.0.0.1';
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}}Il n'y a pas de ligne vide avant __$config...__ Nous en avons inséré une pour faciliter la copie de la commande.
 +
 +On signale le changement.
 +
 +<file>
 +[root@tchana ~]# expand-template /etc/roundcubemail/config.inc.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le démon httpd.
 +
 +<file>
 +[root@tchana ~]# systemctl restart httpd
 +
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 50%>
 +On se rend à l'URL de connexion à Webmail: https://www.micronator-dev.org/webmail/
 +Le domaine du serveur ne s'affiche plus.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-03-341.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Sauvegarde ====
 +
 +On vérifie si le nom du répertoire ''/etc/e-smith/templates-custom/etc/roundcubemail/'' est déjà présent dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_Cahier-101-03-006.png?25}}Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/e-smith/templates-custom/etc/roundcubemail/"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include |  grep roundcube
 +
 +/etc/e-smith/templates-custom/etc/roundcubemail/
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __/etc/e-smith/templates-custom/etc/roundcubemail/__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +\\ 
 +\\ 
 +
 +===== Langue à la console du serveur =====
 +
 +On affiche les langues offertes à la console du serveur.
 +
 +    [root@tchana ~]# localectl list-locales | grep fr_
 +    
 +    fr_BE
 +    fr_BE.iso88591
 +    fr_BE.iso885915@euro
 +    fr_BE.utf8
 +    fr_BE@euro
 +    fr_CA
 +    fr_CA.iso88591
 +    fr_CA.utf8
 +    fr_CH
 +    fr_CH.iso88591
 +    fr_CH.utf8
 +    fr_FR
 +    fr_FR.iso88591
 +    fr_FR.iso885915@euro
 +    fr_FR.utf8
 +    fr_FR@euro
 +    fr_LU
 +    fr_LU.iso88591
 +    fr_LU.iso885915@euro
 +    fr_LU.utf8
 +    fr_LU@euro
 +    [root@tchana ~]#
 +
 +On ajuste la langue désirée pour l'affichage. On choisit ''fr<nowiki>_</nowiki>FR.utf8'', car ce choix affectera aussi celui de la traduction pour l'interface Web. Pour l'instant, la traduction ''fr<nowiki>_</nowiki>FR'' est plus avancé que celle de ''fr<nowiki>_</nowiki>CA''.
 +
 +    [root@tchana ~]# localectl set-locale LANG=fr_FR.utf8
 +    
 +    [root@tchana ~]#
 +
 +{{Images_icone-201-003_Note.png?25}} Dorénavant, la page de connexion offrira //Français (France)// comme langue par défaut au lieu de //English (United States)// si nous avons installé le module //**Langue Française**//.
 +
 +On pourra vérifier, après le prochain redémarrage, en lançant la commande ci-dessous.
 +
 +    [root@tchana ~]# ls -als toto
 +    
 +    ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type
 +    [root@tchana ~]#
 +\\ 
 +
 +===== Langue de l'interface Web =====
 +
 +On change la langue de l'interface.
 +
 +<WRAP column 30%>
 +**Administration  ->  Software center** //(peut prendre un certain temps)//  **->**  on coche **French language**.
 +|{{ Images_Cahier-101-03-112.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**ADD**.
 +|{{ Images_Cahier-101-03-113.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**APPLY CHANGES**.
 +|{{ Images_Cahier-101-03-114.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 22%>
 +\\ 
 +Le RPM //nethserver-lang-fr// s'installe.
 +|{{ Images_Cahier-101-03-115.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +\\ 
 +\\ 
 +**Reload page**.
 +|{{ Images_Cahier-101-03-116.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +On se __déconnecte/reconnecte__ pour activer la traduction française.\\ 
 +|{{ Images_Cahier-101-03-117.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +<nowiki>-</nowiki> Par défaut, //Français (France)// est affiché.\\ 
 +<nowiki>-</nowiki> **LOGIN**.
 +|{{ Images_Cahier-101-03-118.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Table de mappe de clavier =====
 +
 +On affiche les différentes mappes de clavier(( **Table de mappe de clavier**: n.f. Disposition des touches d'un clavier.\\ 
 +//Référence:// [[http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=18050861#eng|http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=18050861#eng]]. \\ \\ )) "ca" disponibles.
 +
 +<file>
 +[root@tchana ~]# localectl list-keymaps | grep ca
 +
 +ca
 +ca-eng
 +ca-fr-dvorak
 +ca-fr-legacy
 +ca-multi
 +ca-multix
 +dvorak-ca-fr
 +es-cat
 +ph-capewell-dvorak
 +ph-capewell-qwerf2k6
 +[root@tchana ~]#
 +</file>
 +
 +On active le clavier //**ca-multi**//.
 +
 +<file>
 +[root@tchana ~]# localectl set-keymap ca-multi
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# localectl
 +
 +   System Locale: LANG=fr_FR.UTF-8
 +       VC Keymap: ca-multi
 +      X11 Layout: us
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Fermeture automatique de session (session timeout) =====
 +
 +//Référence:// [[http://docs.nethserver.org/en/v7/access.html#session-timeouts|http://docs.nethserver.org/en/v7/access.html#session-timeouts]]. \\ 
 +Par défaut //(à partir de NethServer 7.5.1804)//, une session de gestion du serveur se termine après **60** minutes d'inactivité //(délai d'inactivité)// et expire 8 heures après la connexion //(durée de vie de la session)//.
 +
 +La commande ci-dessous définit **2** heures de //délai d'inactivité// et **16** heures de //durée de vie de la session// maximale. Le temps est exprimé en secondes.
 +
 +<file>
 +[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime 7200 MaxSessionLifeTime 57600
 +
 +[root@tchana ~]#
 +</file>
 +
 +Désactivation des délais.
 +
 +<file>
 +[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime '' MaxSessionLifeTime ''
 +
 +[root@tchana ~]#
 +</file> 
 +
 +{{Images_Cahier-101-03-006.png?25}}  Les nouvelles valeurs de délais affecteront les nouvelles sessions. Ils ne changent aucune session active.
 +\\ 
 +\\ 
 +
 +
 +===== Fuseau horaire =====
 +
 +Pour le fuseau horaire, il existe un fichier pour //**Montréal**//.
 +
 +<file>
 +[root@tchana ~]# ls -ls /usr/share/zoneinfo/America/ -> grep Montreal
 +
 + 4 -rw-r--r--  3 root root 3477  1 avril 08:27 Montreal
 +[root@tchana ~]#
 +</file>
 +
 +==== Changement du fuseau horaire ====
 +
 +On affiche le fuseau horaire actuel.
 +
 +<file>
 +[root@tchana ~]# ls -l /etc/localtime
 +
 +lrwxrwxrwx 1 root root 37 19 mai   23:48 /etc/localtime -> ../usr/share/zoneinfo/America/Toronto
 +[root@tchana ~]#
 +</file>
 +
 +On change le fuseau horaire pour celui de Montréal.
 +
 +<file>
 +[root@tchana ~]# timedatectl set-timezone America/Montreal
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -l /etc/localtime
 +
 +lrwxrwxrwx 1 root root 38 22 mai   14:02 /etc/localtime -> ../usr/share/zoneinfo/America/Montreal
 +[root@tchana ~]#
 +</file>
 +
 +Voilà! Le fuseau horaire //Montréal// est récupéré...
 +\\ 
 +\\ 
 +
 +===== Certificat Let's Encrypt =====
 +
 +==== Description ====
 +
 +Un certificat émis par l'autorité de certification **Let's Encrypt** vous permettra de chiffrer les connexions de votre serveur avec une clé TLS/SSL reconnue mondialement. Les utilisateurs pourront utiliser https.
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/Let's_Encrypt|https://fr.wikipedia.org/wiki/Let's_Encrypt]]. \\ 
 +Let's Encrypt est une autorité de certification //(CA)// lancée le 3 décembre 2015 //(Bêta Version Publique)//. Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique TLS au moyen d'un mécanisme automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l'installation et le renouvellement des certificats pour la sécurisation des sites Internet.
 +
 +=== Examen du certificat ===
 +
 +{{Images_Cahier-101-03-006.png?25}}  On examine le certificat émis par Let's Encrypt pour notre serveur //**dorgee.micronator-101.org**// qui est directement branché à l'Internet.
 +
 +Si la demande de certificat a fonctionnée sans erreur, essayez de vous connecter à la page de l'interface Web du Serveur NethServer. Le certificat devrait incorporer tous les noms d'hôtes que vous avez inclus et être valide pour les quatre-vingt-dix prochains jours.
 +
 +On se connecte à l'interface Web: https://www.micronator-101.org:980.
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Le cadenas est vert. \\ 
 +<nowiki>-</nowiki> On se logue.
 +|{{ Images_Cahier-101-03-369.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> On clique le **cadenas**.\\ 
 +<nowiki>-</nowiki> On clique l'icône  "<wrap em>**>**</wrap>".
 +|{{ Images_Cahier-101-03-370.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\
 +**Plus d'informations**.
 +|{{ Images_Cahier-101-03-371.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 46%>
 +\\
 +\\
 +<nowiki>-</nowiki> Onglet **Sécurité**.\\
 +<nowiki>-</nowiki> Afficher le certificat.
 +|{{ Images_Cahier-101-03-372.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> Onglet **Détails**.\\ 
 +<nowiki>-</nowiki> //**Émis pour**//  micronator-101.org\\ 
 +<nowiki>-</nowiki> //**Émis par**//  Let's Encrypt Authority X3\\
 +<nowiki>-</nowiki> On voit la date de début et de fin.
 +|{{ Images_Cahier-101-03-373.png?400 }}|</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP center>
 +<WRAP column 46%>
 +\\
 +\\
 +<nowiki>-</nowiki> **Validité  ->  Pas après**.\\ 
 +<nowiki>-</nowiki> Le certificat est valide pour 90 jours.
 +|{{ Images_Cahier-101-03-374.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> **Nom alternatif du sujet du certificat**.\\ 
 +<nowiki>-</nowiki> Tous nos CNAME choisis lors de la demande du certificat sont affichés.\\ 
 +<nowiki>-</nowiki> **Fermer** toutes les fenêtres du certificat.\\
 +|{{ Images_Cahier-101-03-375.png?400 }}|</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Vérification par Qualsys SSLLabs ====
 +
 +{{Images_Cahier-101-03-006.png?25}}  <wrap em>__Seulement pour un serveur directement branché à l'Internet.__</wrap>\\ 
 +Une fois que vous avez obtenu votre certificat, testez-le en vous rendant chez Qualsys SSLLabs, [[https://www.ssllabs.com/ssltest/|https://www.ssllabs.com/ssltest/]].\\ 
 +Soumettez le nom FQDN de votre domaine pour vérifier que le certificat fonctionne correctement.
 +
 +<WRAP center>
 +<WRAP column 46%>
 +//**Hostname:**//\\  
 +**micronator-101.org  ->  Submit**.
 +|{{ Images_Cahier-101-03-376.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> //**Overall Rating**//  →  A.\\ 
 +<nowiki>-</nowiki> //**Certificate**//  →  100%.
 +|{{ Images_Cahier-101-03-377.png?400 }}|</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Changement du mot de passe de root =====
 +
 +//Référence:// [[https://www.rootusers.com/how-to-reset-root-user-password-in-centos-rhel-7/|https://www.rootusers.com/how-to-reset-root-user-password-in-centos-rhel-7/]].\\ 
 +Réinitialiser le mot de passe de __root__ est normalement une tâche simple si vous êtes déjà connecté avec les privilèges de root. Toutefois, si vous oubliez le mot de passe et devez le changer, les choses deviennent un peu plus difficiles.\\
 +Le processus a changé de la version 6 de CentOS/RHEL //(Red Hat Enterprise Linux)// à la version 7. Auparavant, vous démarriez en **mode mono-utilisateur**, puis changiez le mot de passe en tant qu'utilisateur root. À partir de la version 7, les modes équivalents sont: **mode de secours** et **mode d’urgence**. Cependant, ces modes d'opération nécessitent le mot de passe de root avant de pouvoir faire quoi que ce soit. Cette section va vous guider dans le nouveau processus pour changer le mot de passe perdu de root. Cette procédure sera exécutée à la console du système Linux, assurez-vous donc que vous y avez accès avant de commencer.
 +
 +{{Images_Cahier-101-03-003.png?22}}  Comme pour toutes les tâches de maintenance du système, assurez-vous de disposer d'une sauvegarde/instantané du système avant de poursuivre.
 +
 +Si votre système Linux est en cours d'exécution, redémarrez-le. S'il ne roule pas, démarrez-le.
 +
 +Pour **CentOS 7**, le menu de démarrage vous laissera 5 secondes pour sélectionner le noyau du système d’exploitation à démarrer. Ces 5 secondes sont importantes, car elles permettent aux administrateurs de sélectionner différents noyaux ou d’éditer les paramètres du noyau existant avant le démarrage.
 +
 +Dans le menu de démarrage, appuyez sur "**e**" pour modifier le noyau existant tel qu'indiqué ci-dessous.
 +
 +{{ Images_Cahier-101-03-378.png?800 }}
 +\\
 +
 +Dans les options de //**grub**//, recherchez la ligne qui commence par ''linux16'' et allez à la fin. Entrez ''rd.break'' à la fin de cette ligne tel qu'indiqué ci-dessous.
 +
 +<file>
 +rd.break
 +</file>
 +
 +{{ Images_Cahier-101-03-379.png?800 }}
 +\\
 +
 +Appuyez sur **[Ctrl]** + **[x]** pour démarrer avec ces options qui vous amèneront à l'invite //**initramfs**// avec un shell root.
 +
 +{{ Images_Cahier-101-03-380.png?800 }}
 +\\
 +
 +À ce stade, le système de fichiers racine est monté en mode lecture seule //(ro)// dans le répertoire ''/sysroot'' et doit être remonté avec les autorisations de lecture/écriture //(rw)// pour que nous puissions réellement apporter certaines modifications. Ceci est réalisé avec la commande ''mount -o  remount,rw  /sysroot''.
 +
 +<file>
 +switch_root:/# mount -o  remount,rw  /sysroot
 +
 +switch_root:/#
 +</file>
 +
 +{{ Images_Cahier-101-03-381.png?800 }}
 +\\
 +
 +Une fois le système de fichiers remonté, changez-le en une //**prison chroot**// afin que le répertoire ''/sysroot'' soit utilisé comme racine du système de fichiers. Ceci est nécessaire pour que toutes les commandes que nous exécuterons se rapportent à ''/sysroot''. La commande à lancer est ''chroot  /sysroot''.
 +
 +<file>
 +switch_root:/# chroot /sysroot
 +
 +sh-4.2#
 +</file>
 +
 +{{ Images_Cahier-101-03-382.png?800 }}
 +\\
 +
 +À partir d'ici, le mot de passe de root peut être réinitialisé à l’aide de la commande ''passwd''.
 +
 +<file>
 +sh-4.2# passwd
 +
 +Changing password for user root.
 +New password: Nouveau-mot-de-passe-de-root
 +Retype new passwd: Nouveau-mot-de-passe-de-root
 +passwd: all authentification tokens updated successfully.
 +sh-4.2#
 +</file> 
 +
 +{{ Images_Cahier-101-03-383.png?800 }}
 +\\
 +
 +Si vous n'utilisiez pas SELinux, vous pourriez redémarrer à ce stade et tout irait bien. Cependant, par défaut, CentOS/RHEL-7 active SELinux. Nous devons donc corriger le contexte du fichier ''/etc/shadow''. En effet, lorsque la commande ''passwd'' est exécutée, elle crée un nouveau fichier ''/etc/shadow''. SELinux n'étant pas en cours d'exécution dans ce mode, le fichier est créé sans aucun contexte SELinux, ce qui peut entraîner des problèmes lors du redémarrage.
 +
 +On crée le fichier ''/.autorelabel'' à l’aide de ''touch''.
 +
 +<file>
 +sh-4.2# touch /.autorelabel
 +
 +sh-4.2#
 +</file> 
 +
 +{{Images_Cahier-101-03-006.png?25}}  La création de ce fichier effectuera automatiquement un ré-étiquetage de tous les fichiers au prochain démarrage. Notez que cela peut prendre un certain temps en fonction de la quantité de fichiers que vous avez. Peut prendre environ **2** minutes pour un serveur CentOS-7 ordinaire.
 +
 +On quitte l'environnement //chroot//.
 +
 +<file>
 +sh-4.2# exit
 +
 +exit
 +sh-4.2#
 +</file>  
 +
 +On quitte le shell racine ''initramfs'' //(peut prendre un certain temps, être patient...)//. Le serveur s'amorce.
 +
 +<file>
 +sh-4.2# exit
 +
 +logout
 +...
 +</file>
 +
 +==== Vérification ====
 +
 +__À la console du serveur__, vous devriez pouvoir vous connecter et utiliser le système avec le nouveau mot de passe que vous avez créé.
 +\\ 
 +\\ 
 +
 +===== ERROR Failed to send host log message =====
 +
 +Cette erreur s'affiche seulement lors de l'amorçage d'un serveur roulant sous **VirtualBox**.
 +
 +{{ Images_Cahier-101-03-384.png?800 }}
 +\\
 +
 +<WRAP center>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> On arrête le Serveur NethServer.\\ 
 +<nowiki>-</nowiki> À l'écran VirtualBox, on sélectionne la machine  **->  État actuel  ->  Configuration**.
 +|{{ Images_Cahier-101-03-385.png?400 }}|
 +\\
 +Au retour, on amorce le Serveur NethServer et le message ne s'affichera plus.
 +</WRAP>
 +<WRAP column 46%>
 +\\
 +**Affichage ->** onglet **Écran -> Contrôleur graphique ->** on change pour **VboxVGA -> OK**.
 +|{{ Images_Cahier-101-03-386.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Martian source =====
 +
 +Si dans le fichier journal ''/var/log/messages'', vous voyez plusieurs lignes telles que ci-dessous, c'est que l'IP de la passerelle du réseau vert de la carte //**enp0s3**// ou les //**Serveurs DNS**// ne sont corrects.
 +
 +<file>
 +...IPv4: martian source 192.168.1.1...
 +...IPv4: martian source 192.168.1.1...
 +...IPv4: martian source 192.168.1.1...
 +</file>
 +
 +==== Passerelle du réseau de la carte enp0s3 ====
 +
 +On trouve notre passerelle en lançant un ''traceroute'' vers google.com
 +
 +<file>
 +[root@dorgee ~]# traceroute google.com
 +
 +traceroute to google.com (172.217.165.14), 30 hops max, 60 byte packets
 +  lo0-0-lns03-tor.teksavvy.com (206.248.155.139)  10.367 ms  11.449 ms  11.487 ms
 +  ae0-2150-bdr01-tor.teksavvy.com (69.196.136.172)  11.523 ms  11.793 ms  11.826 ms
 +  72.14.212.134 (72.14.212.134)  11.868 ms  12.430 ms  12.306 ms
 +  74.125.244.161 (74.125.244.161)  12.736 ms 74.125.244.145 (74.125.244.145)  14.002 ms 74.125.244.161 (74.125.244.161)  13.174 ms
 +  216.239.40.255 (216.239.40.255)  13.577 ms  13.923 ms 216.239.41.175 (216.239.41.175)  13.923 ms
 +  yyz12s06-in-f14.1e100.net (172.217.165.14)  13.020 ms  12.009 ms  11.291 ms
 +[root@dorgee ~]#
 +</file>
 +L'adresse IP de la ligne #1 est //**206.248.155.139**// et elle est donc la passerelle utilisée par notre connexion.
 +\\
 +\\
 +
 +<WRAP column 46%>
 +**Configuration  ->  Réseau  ->  Périphérique enp0s3  →  Éditer**.
 +
 +On change l'IP de la passerelle pour l'IP du rôle __<nowiki>LAN</nowiki> (vert)__ / __enp0s3__ →  **206.248.155.139**.
 +
 +**SOUMETTRE**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-395.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Serveurs DNS ====
 +
 +//Référence://  [[https://korben.info/1-1-1-1-ou-9-9-9-9-ou-8-8-8-8-quel-dns-choisir.html|https://korben.info/1-1-1-1-ou-9-9-9-9-ou-8-8-8-8-quel-dns-choisir.html]].\\ 
 +... Le **DNS de Cloudflare** est un excellent DNS, car il est le plus rapide, mais aussi parce qu'ils ont pris les devants et s'engagent à ne pas revendre les données, et ne conservent pas les logs au-delà de 24h...\\ 
 +Le principal avantage bien sûr, c'est que contrairement au DNS de Google qui permet de mieux vous profiler pour vous balancer de la pub, on sait que Cloudflare ne trempe pas là dedans. Cela reste une boîte américaine, donc c'est évidemment à prendre avec toutes les précautions d'usage...
 +
 +//Référence://  pour //**8.8.8.8**// -  [[https://www.dnsperf.com/dns-resolver/google|https://www.dnsperf.com/dns-resolver/google]].
 +
 +//Autre référence:// comparaison mondiale des performances de différents DNS:\\
 + [[https://medium.com/@nykolas.z/dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5|https://medium.com/@nykolas.z/dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5]].
 +
 +//Référence://  pour ci-dessous //**1.1.1.1**//  -  [[https://www.dnsperf.com/#!dns-resolvers|https://www.dnsperf.com/#!dns-resolvers]].
 +
 +<WRAP center>
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-396.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-397.png?400 }}|</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +**Configuration  ->  Réseau  ->  Serveurs DNS**.
 +
 +On ajuste les //**DNS Primaire**// et //**Secondaire**//.
 +
 +{{Images_Cahier-101-03-005.png?25}} Le serveur //**DNS primaire**// **1.1.1.1** est le plus rapide et le plus utilisée de tout l'Internet.
 +
 +Le serveur //**DNS secondaire**// **206.248.182.3** est le défaut de notre FAI.
 +
 +**Soumettre**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-398.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Si votre FAI filtre l'adresse 1.1.1.1, prendre 8.8.8.8 ou une de celles citées dans la référence ci-dessous:\\ 
 +[[https://medium.com/@nykolas.z/dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5|https://medium.com/@nykolas.z/dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5]]. 
 +\\ 
 +\\ 
 +
 +===== Serveur de production =====
 +
 +{{ Images_Cahier-201-05-146.png?600}}
 +Une fois que vous maîtrisez tous les aspects de: //Moodle//, //Let's Encrypt//, //Fail2ban//, //ClamAV// et de //BackupPC//, vous pouvez créer un réseau de Production incluant un serveur Moodle, un serveur de sauvegardes et un serveur de développement; ce qui est le but ultime que nous vous souhaitons.
 +<WRAP clear></WRAP>
 +\\ 
 +\\ 
 +{{NS-101_002_Banniere_Victoire.png?50}}  Victoire totale, hissons la bannière de la victoire.
 +\\ 
 +
 +----
 +
 +====== Crédits ======
 +
 +© 2018-2019 RF-232\\ 
 +Auteur: Michel-André Robillard CLP\\ 
 +Remerciement: Tous les contributeurs GNU/GPL.\\ 
 +Intégré par: Michel-André Robillard CLP\\ 
 +Contact: michelandre at micronator.org
 +
 +Répertoire de ce document: <nowiki>E:\000_DocPourRF232_general\RF-232_NethServer-201\RF-232_Cours_NethServer-201-05_Moodle_2019-08-29_16h02_RC-001.odt</nowiki>.
 +
 +Historique des modifications:
 +
 +^Version^Date^Commentaire^Auteur|
 +|0.0.1|2012-12-17|Début sur SME-8.0.|Michel-André|
 +|0.0.2 - RC-001|2019-08-17|MAJ vers NethServer-7.6.1810 et ajustements pour DokuWiki.|Michel-André|
 +|12345678901| | |12345678901|
 +
 +
 +<html><hr style="width:50%; margin: 0 auto;"></html>
 +
 +===== AVIS DE NON-RESPONSABILITÉ =====
 +
 +Ce document est uniquement destiné à informer. Les informations, ainsi que les contenus et fonctionnalités de ce do­cument sont fournis sans engagement et peuvent être modifiés à tout moment. RF‑232 n'offre aucune garantie quant à l'actualité, la conformité, l'exhaustivité, la qualité et la durabilité des informations, contenus et fonctionnalités de ce document. L'accès et l'utilisation de ce document se font sous la seule responsabilité du lecteur ou de l'utilisateur.
 +
 +RF‑232 ne peut être tenu pour responsable de dommages de quelque nature que ce soit, y compris des dommages di­rects ou indirects, ainsi que des dommages consécutifs résultant de l'accès ou de l'utilisation de ce document ou de son contenu.
 +
 +Chaque internaute doit prendre toutes les mesures appropriées //(mettre à jour régulièrement son logiciel antivirus, ne pas ouvrir des documents suspects de source douteuse ou non connue)// de façon à protéger le contenu de son ordina­teur de la contamination d'éventuels virus circulant sur la Toile.
 +
 +Toute reproduction interdite
 +Vous reconnaissez et acceptez que tout le contenu de ce document, incluant mais sans s’y limiter, le texte et les images, sont protégés par le droit d’auteur, les marques de commerce, les marques de service, les brevets, les secrets industriels et les autres droits de propriété intellectuelle. Sauf autorisation expresse de RF-232, vous acceptez de ne pas vendre, délivrer une licence, louer, modifier, distribuer, copier, reproduire, transmettre, afficher publiquement, exécuter en public, publier, adapter, éditer ou créer d’oeuvres dérivées de ce document et de son contenu.
 +
 +==== Avertissement====
 +
 +Bien que nous utilisions ici un vocabulaire issu des techniques informatiques, nous ne prétendons nullement à la précision technique de tous nos propos dans ce domaine.
 +\\
 +\\