Outils pour utilisateurs

Outils du site


nethserver_201_cahier_07_flectra

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_07_flectra [2019-09-23 23:13] michelandrenethserver_201_cahier_07_flectra [2025-01-12 19:30] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +\\ 
 +[[cours_nethserver_101|{{ Images_Cahier-201-07-000.png?650 }}]]
 +\\
 + 
 +====== Description générale ======
  
 +===== Introduction =====
 +
 +Ce document décrit l'installation et la mise à jour de **Flectra** sur un **Serveur NethServer**-7.6.1810.
 +
 +===== Connexion sécuritaire =====
 +
 +Ce document décrit aussi la marche à suivre pour une connexion sécuritaire //(http<wrap em>s</wrap>)// vers //Flectra//. //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 d'adresse du navigateur.
 +
 +===== Le logiciel Flectra =====
 +
 +//Référence:// [[https://reviews.financesonline.com/p/flectra/|https://reviews.financesonline.com/p/flectra/]].
 +
 +//Flectra// est un logiciel de gestion d'entreprise à code source LIBRE qui intègre les fonctionnalités essentielles des systèmes CRM et ERP dans un progiciel unique, compact et puissant. Il est construit sous une approche modulaire permettant aux entreprises et aux organisations d’inclure des applications, des fonctionnalités et des outils dont elles ont besoin pour leurs opérations et leurs processus, tout en bénéficiant d'une polyvalence nécessaire pour se développer à mesure que leur activité évolue.
 +
 +Avec //Flectra//, les utilisateurs peuvent facilement modifier le système pour répondre aux besoins uniques de leur entreprise. À mesure que leur clientèle grandit, ils peuvent facilement ajouter d’autres outils à Flectra de sorte que toutes leurs exigences soient pleinement satisfaites et prises en compte. //Flectra// est tout simplement une suite d'applications ultimes.
 +
 +==== Aperçu des avantages de Flectra ====
 +
 +Suite LIBRE d'applications, //Flectra// vous offre une plate-forme complète et évolutive de gestion d'entreprise que vous pouvez facilement modifier pour l'adapter à vos besoins actuels, puis la modifier à nouveau en fonction de l'évolution de vos besoins. En tant que système LIBRE, //Flectra// vous offre toute la liberté nécessaire afin que le logiciel fonctionne pour vous et votre entreprise, au lieu de changer votre façon de procéder.
 +
 +Les développeurs surveillent en permanence le logiciel pour vérifier si les modifications qu’ils ont apportées améliorent réellement les performances de celui-ci. Ceci signifie que //Flectra// est constamment sous surveillance  pour assurer que tous les changements apportés à son noyau sont réellement bénéfiques pour les utilisateurs.
 +
 +De la gestion du contenu du site Web à la gestion des campagnes marketing en passant par l’organisation des informations client, la gestion des commandes, la réalisation d’acquisitions commerciales, etc., la conception modulaire de //Flectra// vous permet d’ajouter ou de supprimer des outils pour que //Flectra// fonctionne pour vous. Il s'agit d'une suite complète que vous pouvez facilement adapter à vos besoins. Et quelles que soient vos exigences, la flexibilité de //Flectra// couvre tous vos besoin et vous aide à demeurer fonctionnel.
 +
 +===== Étapes =====
 +
 +  - Préparation de l'environnement de travail incluant l'installation de la //Collection PHP//.
 +  - Installation du serveur de bases de données //PostgreSQL-11//.
 +  - Installation de la //Collection RH-Python36//, pour ne pas interférer avec la version de //Python// fournie par défaut avec le //Serveur NethServer//.
 +  - Installation des prérequis pour //Flectra//.
 +  - Téléchargement du code //Flectra// et installation.
 +  - Redirection sécurisée.
 +  - Post-scriptum //Flectra//.
 +  - Sauvegarde/récupération de la base de données //PostgreSQL//.
 +  - Programmer un script de sauvegarde de la base de données //PostgreSQL// et créer une tâche //cron// qui l'activera quotidiennement. Ainsi, la sauvegarde //PostgreSQL// sera intégrée à la sauvegarde régulière du //Serveur NethServer//.
 +  - Sauvegarde quotidienne //NethServer//.
 +  - Mises à jour de: //Flectra//, //PostgreSQL//, //RH-Python36//, //npm/node//, //less// et l//ess-plugin-clean-css//, //wkhtmltox//, et du //Serveur NethServer//.
 +
 +{{Images_icone-201-003_Note.png?25}} Ce document assume que vous avez réalisé une installation d'un Serveur NethServer-7.6.1810 sur votre réseau LOCAL et dédié à //Flectra//. Il est aussi assumé que vous allez rouler Flectra et //PostgreSQL-11// __sur le même serveur__.
 +
 +===== But de ce cahier =====
 +
 +Installer et configurer //Flectra// sur un //Serveur NethServer-7.6.1810// virtuel sur le réseau LOCAL. Les procédures sont exactement les mêmes pour un //Serveur NethServer// physique directement branché ou non à l'Internet.
 +
 +{{ Images_Cahier-201-07-002.png?600 }}
 +
 +===== 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-07-002.png?650 }}
 +
 +===== 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 //Flectra// dans le répertoire ''/opt/flectra/flectra''.
 +
 +===== 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/|https://notepad-plus-plus.org/]].\\ 
 +//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/downloads/|https://notepad-plus-plus.org/downloads/]].
 +
 +==== 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]].
 +
 +====== 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 61%>
 +==== 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 31%>
 +|{{ 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?500 }}|
 +</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 //Flectra//. 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 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-07-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; //micronator-101.ddns.net// provient du [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: //NethServer Virtuel// du "Cours NethServer-101", on peut le supprimer pour ce document.
 +\\ 
 +\\ 
 +
 +{{ 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}} Le //FTP// ne doit pas être activé. //Flectra// s'occupe lui-même des téléchargements.
 +<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".
 +\\ 
 +\\ 
 +
 +===== 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.
 +
 +=== 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: //stephdl 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 de configuration, 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>
 +
 +===== 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.
 +
 +====== PostgreSQL-11 - Installation ======
 +
 +===== Invite de commandes NethServer =====
 +
 +{{Images_icone-201-003_Note.png?25}} Pour ce document, le //Serveur NethServer// est à l'adresse //10.10.10.75// et connecté à l'Internet à travers le serveur //dorgee.micronator.org//.
 +
 +Si nous ne sommes pas déjà logué, nous nous connectons en tant que **__root__** au //Serveur NethServer// à l'aide de //PuTTY//.
 +
 +<WRAP box round>
 +<file>
 +login as: root
 +root@10.10.10.75's password: mot-de-passe-de-root
 +Last login: Fri May 10 17:11:57 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>
 +</WRAP>
 +
 +On affiche les adresses //IP// du serveur.
 +
 +<file>
 +[root@tchana html]# 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 664  bytes 74068 (72.3 KiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 615  bytes 289665 (282.8 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 144384  bytes 196551121 (187.4 MiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 83977  bytes 7402753 (7.0 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 3178  bytes 378438 (369.5 KiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 3178  bytes 378438 (369.5 KiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +[root@tchana ~]#
 +</file>
 +
 +===== Référentiel pgdg11 =====
 +
 +==== 32 ou 64 bits ====
 +
 +Il nous faut connaître le genre de //CPU// utilisé par notre serveur afin de choisir la bonne version de //PostgreSQL//.
 +
 +<file>
 +[root@tchana ~]# uname -p
 +
 +x86_64
 +[root@tchana ~]#
 +</file>
 +
 +==== Version CentOS ====
 +
 +Pour connaître la version //CentOS// dont notre serveur est issu.
 +
 +<file>
 +[root@tchana ~]# cat /etc/centos-release
 +
 +CentOS Linux release 7.6.1810 (Core)
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 45%>
 +==== Lien du référentiel PostgreSQL ====
 +
 +Pour connaître le lien //URL// du référentiel //PostgreSQL//, on se rend au site suivant:  [[https://yum.postgresql.org/repopackages.php#pg11|https://yum.postgresql.org/repopackages.php#pg11]]
 +
 +{{Images_icone-201-003_Note.png?25}} Le référentiel  //EPEL// //(Extra Packages pour Enterprise Linux)// est présent et //Activé// par défaut sur un //Server NethServer//.
 +
 +Notre //Serveur NethServer// est un //64 bits// issu de //CentOS-7.6//. Donc, nous choisissons //CentOS 7 - x86 64//.
 +
 +On claque sur **CentOS 7 - x86 64** et on copie l'a­dres­se du lien.
 +
 +Le lien du référentiel //PostgreSQL// pour notre serveur est:\\ 
 +https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-201-02-025.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation du référentiel ====
 +
 +La commande pour installer le référentiel //PostgreSQL// est composée de 2 parties:
 +
 +  - ''yum install -y'' et
 +  - l'URL du référentiel.
 +
 +On installe le référentiel //PostgreSQL// pour les serveurs //CentOS-7// dont le //Serveur NethServer// est issu.
 +
 +On entre ''yum install -y'' //(suivi d'un espace)// et on colle l'//URL// copié précédemment.
 +
 +<file>
 +[root@tchana ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
 +
 +Modules complémentaires chargés : changelog, fastestmirror, nethserver_events
 +pgdg-redhat-repo-latest.noarch.rpm                                   | 5.6 kB  00:00:00
 +Examen de /var/tmp/yum-root-DVkWkS/pgdg-redhat-repo-latest.noarch.rpm : pgdg-redhat-repo-42.0-4.noarch
 +Sélection de /var/tmp/yum-root-DVkWkS/pgdg-redhat-repo-latest.noarch.rpm pour installation
 +Résolution des dépendances
 +--> Lancement de la transaction de test
 +---> Le paquet pgdg-redhat-repo.noarch 0:42.0-4 sera installé
 +--> Résolution des dépendances terminée
 +
 +Dépendances résolues
 +
 +============================================================================================
 + Package               Architecture
 +                                   Version       Dépôt                                Taille
 +============================================================================================
 +Installation :
 + pgdg-redhat-repo      noarch      42.0-4        /pgdg-redhat-repo-latest.noarch      6.8 k
 +
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet
 +
 +Taille totale  : 6.8 k
 +Taille d'installation : 6.8 k
 +Downloading packages:
 +Running transaction check
 +Running transaction test
 +Transaction test succeeded
 +Running transaction
 +  Installation : pgdg-redhat-repo-42.0-4.noarch                                         1/1
 +  Vérification : pgdg-redhat-repo-42.0-4.noarch                                         1/1
 +
 +Installé :
 +  pgdg-redhat-repo.noarch 0:42.0-4
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +Le référentiel //PostgreSQL// est installé.
 +
 +===== Installation =====
 +
 +Maintenant, on peut procéder à l'installation de //PostgreSQL-11//.
 +
 +<file>
 +[root@tchana ~]# yum install -y --enablerepo=pgdg11                          \
 +                                postgresql11         postgresql11-libs       \
 +                                postgresql11-server  postgresql11-contrib    \
 +                                postgresql11-devel   postgresql11-docs       \
 +                                postgresql11-test
 +
 +...
 +Install  7 Packages (+1 Dependent package)
 +
 +Total download size: 23 M
 +Installed size: 89 M
 +
 +...
 +Installed:
 +  postgresql11.x86_64 0:11.3-1PGDG.rhel7
 +  postgresql11-contrib.x86_64 0:11.3-1PGDG.rhel7
 +  postgresql11-devel.x86_64 0:11.3-1PGDG.rhel7
 +  postgresql11-docs.x86_64 0:11.3-1PGDG.rhel7
 +  postgresql11-libs.x86_64 0:11.3-1PGDG.rhel7
 +  postgresql11-server.x86_64 0:11.3-1PGDG.rhel7
 +  postgresql11-test.x86_64 0:11.3-1PGDG.rhel7
 +
 +Dependency Installed:
 +  libicu-devel.x86_64 0:50.1.2-17.el7
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie l'installation.
 +
 +<file>
 +[root@tchana ~]# rpm -qi postgresql11-server
 +
 +Name        : postgresql11-server
 +Version     : 11.3
 +Release     : 1PGDG.rhel7
 +Architecture: x86_64
 +Install Date: jeu. 16 mai 2019 17:27:20 EDT
 +Group       : Applications/Databases
 +Size        : 19562871
 +License     : PostgreSQL
 +Signature   : DSA/SHA1, mer. 08 mai 2019 05:41:15 EDT, Key ID 1f16d2e1442df0f8
 +Source RPM  : postgresql11-11.3-1PGDG.rhel7.src.rpm
 +Build Date  : mer. 08 mai 2019 05:37:39 EDT
 +Build Host  : koji-centos7-x86-64-pgbuild
 +Relocations : (not relocatable)
 +Vendor      : PostgreSQL Global Development Group
 +URL         : https://www.postgresql.org/
 +Summary     : The programs needed to create and run a PostgreSQL server
 +Description :
 +PostgreSQL is an advanced Object-Relational database management system (DBMS).
 +The postgresql11-server package contains the programs needed to create
 +and run a PostgreSQL server, which will in turn allow you to create
 +and maintain PostgreSQL databases.
 +[root@tchana ~]#
 +</file>
 +
 +===== Protection du référentiel =====
 +
 +//Références:// [[http://lxsoft106.cern.ch/cern/centos/7.6.1810/updates/x86_64/repoview/yum-plugin-protectbase.html|http://lxsoft106.cern.ch/cern/centos/7.6.1810/updates/x86_64/repoview/yum-plugin-protectbase.html]]\\ 
 +//Références:// [[https://www.cyberciti.biz/faq/rhel-centos-fedora-yum-protect-packages-from-certain-repositories/|https://www.cyberciti.biz/faq/rhel-centos-fedora-yum-protect-packages-from-certain-repositories/]].
 +
 +Nous voulons protéger le référentiel **[pgdg11]** afin que ses paquets ne soient pas mis à jour par aucun autre référentiel.
 +
 +On installe le paquet ''yum-plugin-protectbase''.
 +
 +<file>
 +[root@tchana ~]# yum install -y yum-plugin-protectbase
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet
 +
 +Taille totale des téléchargements : 27 k
 +Taille d'installation : 22 k
 +...
 +Installé :
 +  yum-plugin-protectbase.noarch 0:1.1.31-50.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +On affiche les informations du paquet ''yum-plugin-protectbase''.
 +
 +<file>
 +[root@tchana ~]# rpm -qi yum-plugin-protectbase
 +
 +Name        : yum-plugin-protectbase
 +Version     : 1.1.31
 +Release     : 50.el7
 +Architecture: noarch
 +Install Date: jeu. 16 mai 2019 23:15:00 EDT
 +Group       : System Environment/Base
 +Size        : 22696
 +License     : GPLv2+
 +Signature   : RSA/SHA256, lun. 12 nov. 2018 10:27:29 EST, Key ID 24c6a8a7f4a80eb5
 +Source RPM  : yum-utils-1.1.31-50.el7.src.rpm
 +Build Date  : mar. 30 oct. 2018 18:58:13 EDT
 +Build Host  : x86-01.bsys.centos.org
 +Relocations : (not relocatable)
 +Packager    : CentOS BuildSystem <http://bugs.centos.org>
 +Vendor      : CentOS
 +URL         : http://yum.baseurl.org/download/yum-utils/
 +Summary     : Yum plugin to protect packages from certain repositories.
 +Description :
 +This plugin allows certain repositories to be protected. Packages in the
 +protected repositories can't be overridden by packages in non-protected
 +repositories even if the non-protected repo has a later version.
 +[root@tchana ~]#
 +</file>
 +
 +On s'assure que le paquet est activé c.-à-d. ''enabled = 1''.
 +
 +<file>
 +[root@tchana ~]# cat /etc/yum/pluginconf.d/protectbase.conf
 +
 +[main]
 +enabled = 1
 +[root@tchana ~]#
 +</file>
 +
 +==== Protection de pgdg11 ====
 +
 +On protège le référentiel //[pgdg11]// en éditant le fichier:  ''/etc/yum.repos.d/pgdg-redhat-all.repo'' et en ajoutant la ligne ''protect = 1'' à la fin de la section définissant le référentiel //[pgdg11]//.
 +
 +<file>
 +...
 +[pgdg11]
 +name=PostgreSQL 11 $releasever - $basearch
 +baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch
 +enabled=1
 +gpgcheck=1
 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
 +protect = 1
 +
 +...
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Tous les paquets du référentiel //[pgdg11]// sont maintenant protégés contre toutes mises à jour provenant de tous autres référentiels.\\ 
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/yum.repos.d/pgdg-redhat-all.repo | grep protect  -n6
 +
 +10-[pgdg11]
 +11-name=PostgreSQL 11 $releasever - $basearch
 +12-baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch
 +13-enabled=1
 +14-gpgcheck=1
 +15-gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
 +16:protect = 1
 +17-
 +18-[pgdg10]
 +19-name=PostgreSQL 10 $releasever - $basearch
 +20-baseurl=https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-$releasever-$basearch
 +21-enabled=1
 +22-gpgcheck=1
 +[root@tchana ~]#
 +</file>
 +
 +===== Initialisation de la BD =====
 +
 +On initialise la //BD//.\\ 
 +{{Images_icone-201-004_Triangle.png?25}} Peut prendre un certain temps.
 +
 +<file>
 +[root@tchana ~]# /usr/pgsql-11/bin/postgresql-11-setup initdb
 +
 +Initializing database ... OK
 +[root@tchana ~]#
 +</file>
 +
 +===== Activation du service PostgreSQL =====
 +
 +On active le service pour qu'il démarre avec l'amorçage du //Serveur NethServer//.
 +
 +<file>
 +[root@tchana ~]# systemctl enable postgresql-11.service
 +
 +Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service.
 +[root@tchana ~]#
 +</file>
 +
 +On démarre le service //PostgreSQL//.
 +
 +<file>
 +[root@tchana ~]# systemctl start postgresql-11.service
 +
 +[root@tchana ~]#
 +</file>
 +
 +On examine le statut du service //PostgreSQL//.
 +
 +<file>
 +[root@tchana ~]# systemctl status postgresql-11.service
 +
 +● postgresql-11.service - PostgreSQL 11 database server
 +   Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled)
 +   Active: active (running) since jeu. 2019-05-16 17:36:27 EDT; 12s ago
 +     Docs: https://www.postgresql.org/docs/11/static/
 +  Process: 5709 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 + Main PID: 5715 (postmaster)
 +   CGroup: /system.slice/postgresql-11.service
 +           ├─5715 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
 +           ├─5717 postgres: logger
 +           ├─5719 postgres: checkpointer
 +           ├─5720 postgres: background writer
 +           ├─5721 postgres: walwriter
 +           ├─5722 postgres: autovacuum launcher
 +           ├─5723 postgres: stats collector
 +           └─5724 postgres: logical replication launcher
 +
 +mai 16 17:36:27 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database se....
 +mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.840 EDT …432
 +mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.845 EDT …2 »
 +mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.850 EDT …2 »
 +mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.864 EDT …ces
 +mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.864 EDT … ».
 +mai 16 17:36:27 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database server.
 +Hint: Some lines were ellipsized, use -l to show in full.
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} //PostgreSQL-11// est installé et protégé contre les mises à jour par tous les référentiels, __<nowiki>sauf pgdg11/7/x86_64</nowiki>__.
 +
 +====== PostgreSQL-11 - Premiers pas ======
 +
 +Cette section est inspirée de l'article: [[https://wiki.postgresql.org/wiki/First_steps|https://wiki.postgresql.org/wiki/First_steps]] et sert à démontrer quelques commandes à la console ''psql''.
 +
 +===== Connexion =====
 +
 +On se connecte au //Serveur NethServer// en tant que **__root__** puis on change d'utilisateur pour devenir le super-utilisateur **__postgres__**. 
 +
 +<file>
 +[root@tchana ~]# su - postgres
 +
 +-bash-4.2$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +-bash-4.2$ whoami
 +
 +postgres
 +-bash-4.2$
 +</file>
 +
 +On lance la console //PostgreSQL//.
 +
 +<file>
 +-bash-4.2$ psql
 +
 +postgres
 +-bash-4.2$ psql
 +psql (11.3)
 +Saisissez « help » pour l'aide.
 +
 +postgres=#
 +</file>
 +
 +On vérifie que l'aide fonctionne correctement.
 +
 +<file>
 +postgres=# HELP
 +
 +Vous utilisez psql, l'interface en ligne de commande de PostgreSQL.
 +Saisissez:
 +    \copyright pour les termes de distribution
 +    \h pour l'aide-mémoire des commandes SQL
 +    \? pour l'aide-mémoire des commandes psql
 +    \g ou point-virgule en fin d'instruction pour exécuter la requête
 +    \q pour quitter
 +postgres=#
 +</file>
 +
 +===== SCHEMA =====
 +
 +Une base de données contient un ou plusieurs schémas, qui eux, contiennent des tables. Les schémas con­tien­nent aussi d'autres types d'objets y compris des types de données, fonctions et opérateurs. Seul le nom d'objet peut être utilisé sans conflit c.-à-d. ''schema1'' et ''mon<nowiki>_</nowiki>schema'' peuvent tous les deux contenir des tables ''mytable''. Contrairement aux bases de données; les schémas ne sont pas séparés de manière rigide; un utilisateur peut accéder aux objets de n'importe lequel des schémas de la base de données auxquels il se connecte __s'il a les privilèges pour le faire__.
 +
 +On crée un schéma qu'on appellera ''test'' dans la base de données par défaut appelée ''postgres''.
 +
 +<file>
 +postgres=# CREATE SCHEMA test;
 +
 +CREATE SCHEMA
 +postgres=#
 +</file>
 +
 +===== RÔLE =====
 +
 +Un //rôle// est une entité qui peut posséder des objets de la base de données et avoir des droits sur celle-ci. Il peut être considéré comme un "utilisateur", un "groupe" ou les deux suivant la façon dont il est utilisé.
 +
 +On crée un rôle //(utilisateur)// et on lui octroie un mot de passe.
 +
 +{{Images_icone-201-003_Note.png?25}} L'utilisateur //PostgreSQL// **__toto__** n'a rien à voir avec l'utilisateur //NethServer// **__toto__**.
 +
 +<file>
 +postgres=# CREATE USER toto PASSWORD 'fghtbgh';
 +
 +CREATE ROLE
 +postgres=#
 +</file>
 +
 +===== GRANT =====
 +
 +La commande ''GRANT'' a deux variantes: la première donne des droits sur un objet de la base de données //(table, vue, séquence, base de données, fonction, langage de procédure, schéma ou espace logique)//, la seconde gère les appartenances à un //rôle//.
 +
 +On donne au nouveau //rôle// tous les droits //(tel que la possibilité de créer des tables)// sur le nouveau schéma.
 +
 +<file>
 +postgres=# GRANT ALL ON SCHEMA test TO toto;
 +
 +GRANT
 +postgres=#
 +</file>
 +
 +On donne au nouveau //rôle// tous les droits //(tel que la possibilité d'insertion)// __sur toutes les tables du nouveau schéma__.
 +
 +<file>
 +postgres=# GRANT ALL ON ALL TABLES IN SCHEMA test TO toto;
 +
 +GRANT
 +postgres=#
 +</file>
 +
 +===== Sortie de la console PostgreSQL =====
 +
 +On quitte la console //PostgreSQL//.
 +<file>
 +
 +postgres=# \q
 +
 +-bash-4.2$
 +</file>
 +
 +On retourne à l'utilisateur **__root__**.
 +
 +<file>
 +-bash-4.2$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +===== Utilisateur standard Linux (toto) et PostgreSQL =====
 +
 +On crée un utilisateur standard Linux.
 +
 +<file>
 +[root@tchana ~]# useradd -m -U -s /bin/bash  toto
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{ Images_Cahier-201-02-204.png }}
 +\\
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/passwd | grep toto
 +
 +toto:x:1002:1002::/home/toto:/bin/bash
 +[root@tchana ~]#
 +</file>
 +
 +On lui octroie un mot de passe.
 +
 +<file>
 +[root@tchana ~]# passwd toto
 +
 +Changement de mot de passe pour l'utilisateur toto.
 +Nouveau mot de passe : mot-de-passe-pour-toto
 +Retapez le nouveau mot de passe : mot-de-passe-pour-toto
 +passwd : mise à jour réussie de tous les jetons d'authentification.
 +[root@tchana ~]#
 +</file>
 +
 +On se substitue à l'utilisateur **__toto__**.
 +
 +<file>
 +[root@tchana ~]# su - toto
 +
 +toto@tchana ~]$
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} __Si nous ne sommes pas **root** et que nous changeons d'utilisateur__, il faudra entrer le mot de passe demandé qui est alors celui de l'utilisateur auquel on veut se substituer.
 +
 +<WRAP box>
 +<file>
 +-bash-4.2$ su - toto
 +
 +Mot de passe : mot-de-passe-de-toto
 +-bash-4.2$
 +</file>
 +</WRAP>
 +
 +==== Connexion à la BD avec un utilisateur standard ====
 +
 +Par défaut, le mode d'authentification pour se loguer dans //PostgreSQL// est "ident" qui signifie qu'un utilisateur **__xxx__** de Linux ne peut se connecter qu'en tant qu'utilisateur //PostgreSQL// ** __xxx__**.
 +
 +On se logue, en tant qu'utilisateur ordinaire //(**__toto__** qui a été créé précédemment dans PostgreSQL par le super-utilisateur **__postgres__**)// à la base de données par défaut c'est-à-dire la //BD// ''postgres''.
 +
 +<file>
 +-bash-4.2$ psql -d postgres
 +
 +psql (11.3)
 +Saisissez « help » pour l'aide.
 +
 +postgres=>
 +</file>
 +
 +=== HELP ===
 +
 +On essaie l'aide.
 +
 +<file>
 +postgres=> HELP
 +
 +Vous utilisez psql, l'interface en ligne de commande de PostgreSQL.
 +Saisissez:
 +    \copyright pour les termes de distribution
 +    \h pour l'aide-mémoire des commandes SQL
 +    \? pour l'aide-mémoire des commandes psql
 +    \g ou point-virgule en fin d'instruction pour exécuter la requête
 +    \q pour quitter
 +postgres=>
 +</file>
 +
 +=== CREATE ===
 +
 +Dans le schéma ''test'', l'utilisateur **__toto__** crée une table ''test''.
 +
 +<file>
 +postgres=> CREATE TABLE test.test (testdecol varchar(20));
 +
 +CREATE TABLE
 +postgres=>
 +</file>
 +
 +=== INSERT ===
 +
 +On insère une entrée dans la nouvelle table.
 +
 +<file>
 +postgres=> insert into test.test (testdecol) values ('Ça fonctionne!');
 +
 +INSERT 0 1
 +postgres=>
 +</file>
 +
 +=== SELECT ===
 +
 +Sélection depuis une table.
 +
 +<file>
 +postgres=> SELECT * from test.test;
 +
 +   testdecol
 +-----------
 + Ça fonctionne!
 +(1 ligne)
 +
 +postgres=>
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Tout fonctionne correctement.
 +
 +=== Déconnexion ===
 +
 +L'utilisateur **__toto__** quitte la console //PostgreSQL//.
 +
 +<file>
 +postgres=> \q
 +
 +-bash-4.2$
 +</file>
 +
 +On vérifie qui on est.
 +
 +<file>
 +-bash-4.2$ whoami
 +
 +toto
 +-bash-4.2$
 +</file>
 +
 +On retourne à l'utilisateur **__root__**.
 +
 +<file>
 +-bash-4.2$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +==== Suppression de l'utilisateur standard toto ====
 +
 +On supprime l'utilisateur standard Linux **__toto__** et son répertoire.
 +
 +<file>
 +[root@tchana ~]# userdel -f -r toto
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/passwd | grep toto
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Nettoyage de PostgreSQL ====
 +
 +=== Suppression du SCHEMA test ===
 +
 +On se substitue au super-utilisateur **__postgres__**.
 +
 +<file>
 +[root@tchana ~]# su - postgres
 +
 +Dernière connexion : jeudi 16 mai 2019 à 17:46:27 EDT EDT sur pts/0
 +-bash-4.2$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +-bash-4.2$ whoami
 +
 +postgres
 +-bash-4.2$
 +</file>
 +
 +On lance la console //PostgreSQL//.
 +
 +<file>
 +-bash-4.2$ psql
 +
 +psql (11.3)
 +Saisissez « help » pour l'aide.
 +postgres=#
 +</file>
 +
 +On affiche les SCHEMA.
 +
 +<file>
 +postgres=# \dn
 +
 +   Liste des schémas
 +  Nom   | Propriétaire
 +--------+--------------
 + public | postgres
 + test   | postgres
 +(2 lignes)
 +
 +postgres=#
 +</file>
 +
 +On supprime le SCHEMA ''test''.
 +
 +<file>
 +postgres=# DROP SCHEMA test CASCADE;
 +
 +NOTICE:  DROP cascade sur table test.test
 +DROP SCHEMA
 +postgres=#
 +</file>
 +
 +On vérifie la suppression.
 +
 +<file>
 +postgres=# \dn
 +
 +   Liste des schémas
 +  Nom   | Propriétaire
 +--------+--------------
 + public | postgres
 +(1 ligne)
 +
 +postgres=#
 +</file>
 +
 +=== Suppression de l'utilisateur PostgreSQL toto ===
 +
 +<file>
 +postgres=# DROP USER toto;
 +
 +DROP ROLE
 +postgres=#
 +</file>
 +
 +On vérifie la suppression.
 +
 +<file>
 +postgres=# \du
 +
 +                                              Liste des rôles
 + Nom du rôle |                                    Attributs                                    | Membre de
 +-------------+---------------------------------------------------------------------------------+-----------
 + postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {}
 +
 +postgres=#
 +</file>
 +
 +On quitte la console //PostgreSQL//.
 +
 +<file>
 +postgres=# \q
 +
 +-bash-4.2$
 +</file>
 +
 +On quitte la substitution d'utilisateur.
 +
 +<file>
 +-bash-4.2$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie qu'on est bien de retour à l'utilisateur **__root__**.
 +
 +<file>
 +[root@tchana ~]# whoami
 +
 +root
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP centeralign>**PostgreSQL-11 fonctionne correctement.**</WRAP>
 +
 +====== PostgreSQL-11 - Configuration finale ======
 +
 +===== MD5 =====
 +
 +Maintenant, il nous faut configurer //PostgreSQL// pour qu'il accepte les connexions avec mots de passe chiffrés  //MD5// pour être ainsi compatible avec les modules //Python//.
 +
 +On vérifie qu'on est bien **__root__**.
 +
 +<file>
 +[root@tchana ~]# whoami
 +
 +root
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-004_Triangle.png?25}} En tant qu'utilisateur **__root__**, on remplace ''ident'' par ''md5'' dans le fichier ''pg<nowiki>_</nowiki>hba.conf''.
 +
 +<file>
 +[root@tchana ~]# sed -i "/^host/s/ident/md5/g" /var/lib/pgsql/11/data/pg_hba.conf
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /var/lib/pgsql/11/data/pg_hba.conf | grep md5
 +
 +# METHOD can be "trust", "reject", "md5", "password", "scram-sha-256",
 +# Note that "password" sends passwords in clear text; "md5" or
 +host    all             all             127.0.0.1/32            md5
 +host    all             all             ::1/128                 md5
 +host    replication     all             127.0.0.1/32            md5
 +host    replication     all             ::1/128                 md5
 +[root@tchana ~]#
 +</file>
 +
 +===== Création de l'utilisateur Linux flectra=====
 +
 +On peut choisir le mot de passe qu'on veut, mais l'important est de le mémoriser. De plus, il est préférable qu'il réponde aux normes //NethServer// pour les mots de passe.
 +
 +==== Utilisateur Linux ====
 +
 +Le répertoire personnel //( -d )// de l'utilisateur **__flectra__** sera le répertoire ''/opt/flectra'', ainsi tout le contenu de ce répertoire aura comme propriétaire:groupe **flectra:flectra**.
 +
 +<file>
 +[root@tchana ~]# useradd -m -U -r -d /opt/flectra  -s /bin/bash flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On octroie un __mot de passe robuste__ à l'utilisateur **__flectra__** de Linux.
 +
 +<file>
 +[root@tchana ~]# passwd flectra
 +
 +Changement de mot de passe pour l'utilisateur flectra.
 +Nouveau mot de passe : mot-de-passe-robuste-pour-flectra
 +Retapez le nouveau mot de passe : mot-de-passe-robuste-pour-flectra
 +passwd : mise à jour réussie de tous les jetons d'authentification.
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-004_Triangle.png?25}} __Dans notre cas, le mot de passe est de 7 caractères seulement__; pour un serveur en Production, __il faut un mot de passe robuste et conforme aux normes NethServer__. Il ne faut pas utiliser notre exemple.
 +
 +{{Images_icone-201-003_Note.png?25}} Le mot de passe doit contenir: au moins 1 chiffre, 1 caractère majuscule, 1 caractère minuscule, 1 caractère spécial, 5 caractères différents, ne pas être présent dans les dictionnaires de mots courants et être différent du nom d'utilisateur. De plus, il est impossible de répéter des motifs formés de 3 caractères ou plus //(par exemple, le mot de passe As<wrap em>1.$</wrap>AS<wrap em>1.$</wrap> n'est pas valide)//.
 +
 +==== Utilisateur PostgreSQL ====
 +
 +Pour notre démonstration, on choisit le mot de passe //fghtbgh// qui est le préféré du fameux Général Toto dont les extraordinaires aventures sont connues de tous les enfants.
 +
 +<file>
 +[root@tchana ~]# echo -e "fghtbgh\nfghtbgh\n" |  \
 +                      su - postgres              \
 +                      -c "createuser             \
 +                      --createdb                 \
 +                      --username postgres        \
 +                      --no-createrole            \
 +                      --no-superuser             \
 +                      --pwprompt flectra"
 +
 +Saisir le mot de passe pour le nouveau rôle :
 +Le saisir de nouveau :
 +[root@tchana ~]#
 +</file>
 +
 +Il n'est pas nécessaire d'entrer le mot de passe //fghtbgh//, car il a été donné au début de la commande par l'utilitaire ''echo''.
 +
 +{{Images_icone-201-004_Triangle.png?25}} L'utilisateur **__flectra__** a été créé dans //PostgreSQL// par le super-utilisateur **__postgres__** et non dans le //Serveur NethServer//.
 +\\ 
 +
 +===== Sécurité =====
 +
 +//Adaptation de la page:// https://www.odoo.com/documentation/11.0/setup/deploy.html.
 +
 +==== Sécurité de base ====
 +
 +Pour commencer, gardez à l'esprit que la sécurisation d'un système d'information est un processus continu et non pas une opération ponctuelle. A tout moment, vous ne serez pas plus sécurisé que le maillon le plus faible de votre environnement.
 +
 +Alors, s'il vous plaît, ne prenez pas cette section comme la liste ultime des mesures qui préviendront tous les problèmes de sécurité. Elle est seulement conçue comme un résumé des premières mesures importantes que vous devriez être certain d'inclure dans votre plan d'action de sécurité. Le reste proviendra des meilleures pratiques de sécurité pour votre système d'exploitation/distribution de même que des meilleures pratiques en termes d'utilisateurs, mot de passe, gestion du contrôle d'accès, etc.
 +
 +Lors du déploiement d'un serveur connecté à l'Internet, veillez à prendre en compte les sujets suivants relatifs à la sécurité:
 +
 +  * Définissez toujours un mot de passe administrateur //(super-utilisateur)// robuste et restreignez l'accès aux pages de gestion de base de données dès que le système est configuré.\\ 
 +\\ 
 +
 +  * Choisissez des //login// uniques et des mots de passe robustes pour tous les comptes d'administrateur sur toutes les bases de données. N'utilisez pas '//admin//' comme identifiant. N'utilisez pas ces //login// pour les opérations quotidiennes, mais uniquement pour contrôler/gérer l'installation. N'utilisez jamais un mot de passe par défaut tel //admin/admin//, même pour les bases de données de test.\\ 
 +\\ 
 +
 +  * Utilisez les filtres de base de données appropriés ''<nowiki>--db-filter</nowiki>'' pour restreindre la visibilité de vos bases de données en fonction du nom d'hôte. Vous pouvez également utiliser ''-d'' pour fournir votre propre liste //(séparée par des virgules)// de bases de données disponibles à filtrer, au lieu de laisser le système les récupérer à partir de l'arrière-plan de la base de données\\ 
 +\\ 
 +
 +  * Une fois que vos paramètres ''<nowiki>db_name</nowiki>'' et ''<nowiki>db_filter</nowiki>'' sont configurés et ne correspondent qu'à une seule base de données par nom d'hôte, vous devez définir l'option de configuration ''<nowiki>list_db</nowiki>'' à ''False'' pour empêcher l'affichage complet des bases de données et bloquer l'accès aux écrans de gestion de //BD//. //(Ce paramètre est également présenté comme option de ligne de commande: ''--no-database-list''.)//\\ 
 +\\ 
 +
 +  * Assurez-vous que l'utilisateur ''<nowiki>--db_user</nowiki>'' n'est pas un super-utilisateur et que vos bases de données appartiennent à un utilisateur différent. Par exemple, elles pourraient être la propriété du super-utilisateur **__postgres__** si vous utilisez un utilisateur ''db_user'' non privilégié.\\ 
 +\\ 
 +
 +  * Maintenez les installations à jour en installant régulièrement les dernières versions, soit via //GitHub//, soit en téléchargeant la dernière version.\\ 
 +\\ 
 +
 +  * Configurez votre serveur en mode //multiprocessus//((**multiprocessus** - relatif à un système capable d'exécuter plusieurs applications simultanément.\\
 +//Référence:// http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8351231. 
 + \\ \\ )) avec des limites adaptées à votre utilisation habituelle //(mémoire/CPU/délais d'attente)//. Voir //Builtin server:// https://www.odoo.com/documentation/11.0/setup/deploy.html#builtin-server.\\ 
 +\\ 
 +
 +  * Exécutez //Flectra// derrière un serveur Web fournissant une connexion //HTTPS// avec //Certificat SSL// valide, afin d'empêcher l'écoute clandestine des communications en texte clair. De nos jours, les Certificats //SSL// ne sont plus aussi dispendieux qu'autrefois et de nombreuses options gratuites existent telle //Let's Encrypt//. Voir le 
 +[[nethserver_101_cahier_04_local_certificat_let_encrypt|Cahier-04]]:
 +//NethServer LOCAL & Certificat Let's Encrypt// du "Cours NethServer-101".\\ 
 +\\ 
 +
 +  * Configurez le mandataire //(proxy)// Web pour limiter la taille des demandes, définissez des délais d'attente appropriés, puis activez le mode du mandataire.\\ 
 +\\ 
 +
 +  * Si vous devez autoriser l'accès //SSH// à distance à vos serveurs, veillez à définir un mot de passe robuste pour tous les comptes et non pas seulement pour **__root__**.\\ 
 +\\ 
 +
 +  * Il est fortement recommandé de désactiver complètement l'authentification par mot de passe et d'autoriser uniquement l'authentification par clé publique. Envisagez également de restreindre l'accès via un //VPN//, en autorisant uniquement les adresses //IP// approuvées dans le pare-feu et/ou en installant un système de détection d'attaque de force brute tel que //Fail2ban// ou équivalent. Voir le chapitre
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#Fail2ban|Fail2ban]]
 + dans le **Cahier-03**: //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101".\\ 
 +\\ 
 +
 +  * Dans la mesure du possible, hébergez vos instances de démo/test sur des machines différentes de celles de production et veiller à leur appliquer les mêmes précautions de sécurité que celles pour les serveurs en production.\\ 
 +\\ 
 +
 +  * Si vous hébergez plusieurs clients, isolez les données des clients et leurs fichiers les uns des autres en utilisant des conteneurs ou des techniques appropriées de "jail".\\ 
 +\\ 
 +
 +  * Configurez les sauvegardes quotidiennes de vos bases de données/fichiers et copiez-les sur un serveur d'archivage distant qui n'est pas accessible depuis le serveur lui-même.
 +
 +==== Sécurité du gestionnaire des bases de données ====
 +
 +Sur la [[https://www.odoo.com/documentation/11.0/setup/deploy.html|page de référence]], le paragraphe __Configuring Odoo__ mentionne le paramètre ''admin_passwd''.
 +
 +<WRAP indent>
 +"Les écrans de gestion de base de données sont protégés par le paramètre ''admin_passwd''. Ce paramètre ne peut être défini qu'à l'aide de fichiers de configuration et il est toujours vérifié avant d'effectuer des modifications sur une base de données. Il doit être défini par une valeur générée aléatoirement pour s'assurer que les tiers ne peuvent pas utiliser cette interface."
 +
 +Ce paramètre est utilisé sur tous les écrans de gestion de base de données //(créer, supprimer, vider ou restaurer des bases de données)//.
 +</WRAP>
 +
 +Si les écrans de gestion ne doivent pas être accessibles du tout, vous devez définir l'option de configuration ''list<nowiki>_</nowiki>db'' à //False// pour bloquer l'accès à tous les écrans de sélection et de gestion de bases de données. Il faut absolument vous assurer de configurer un paramètre ''db<nowiki>_</nowiki>name'' approprié //(et éventuellement aussi ''db<nowiki>_</nowiki>filter'')// afin que le système puisse déterminer la base de données cible pour chaque requête, sinon les utilisateurs seront bloqués, car ils ne seront pas autorisés à choisir eux-mêmes la base de données.
 +
 +Si les écrans de gestion ne doivent être accessibles qu'à partir d'un ensemble de machines sélectionnées, utilisez les fonctions du serveur mandataire pour bloquer l'accès à toutes les routes commençant par ''/web/database'' sauf //(peut-être)// ''/web/database/selector'' qui affiche l'écran de sélection de la //BD//.
 +
 +Si l'écran de gestion de la base de données doit toujours demeurer accessible, le paramètre ''admin<nowiki>_</nowiki>passwd'' doit être modifié par rapport à l'//admin// par défaut: ce mot de passe est vérifié avant d'autoriser les opérations de modification de la //BD//.
 +
 +Le mot de passe devrait être stocké en toute sécurité et être généré de manière aléatoire, par exemple: 
 +
 +<WRAP box>
 +<file>
 +python -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
 +</file>
 +</WRAP>
 +
 +qui générera une chaîne imprimable pseudo-aléatoire de 32 caractères.
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_icone-201-002_Lumiere.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.
 +
 +====== Python36 ======
 +
 +Nous allons installer la //Collection RH-Python36// pour pouvoir utiliser la version //Python-3.6// qui est une version plus récente que celle installée par défaut avec le //Serveur NethServer-7.6.1810// //(Python-2.6.6)//.
 +\\ 
 +
 +<WRAP column 50%>
 +À l'URL: [[http://mirror.centos.org/centos/7/sclo/x86_64/rh/|http://mirror.centos.org/centos/7/sclo/x86_64/rh/]], la dernière version disponible pour //CentOS-7.6//, donc pour //NethServer-7.6.18101//, est //**rh-python36**//.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-201-02-026.png?350 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Référentiel centos-sclo-rh =====
 +
 +Le référentiel //centos-sclo-rh// est déjà connu du //Serveur NethServer//.
 +
 +<file>
 +[root@tchana ~]# yum repolist | grep -i sclo
 +
 + * ce-sclo-rh: mirrors.vooservers.com
 + * ce-sclo-sclo: mirrors.vooservers.com
 +ce-sclo-rh/7/x86_64         CE-SCLo-rh-7.6.1810                            8 185
 +ce-sclo-sclo/7/x86_64       CE-SCLo-sclo-7.6.1810                            771
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Les référentiels //ce-sclo-rh// et //ce-sclo-sclo// sont activés par défaut.\\ 
 +//Référence:// [[http://docs.nethserver.org/projects/nethserver-devel/en/latest/nethserver-base.html#repositories|http://docs.nethserver.org/projects/nethserver-devel/en/latest/nethserver-base.html#repositories]].
 +\\ 
 +
 +===== Installation =====
 +
 +<file>
 +[root@tchana ~]# yum install -y --enablerepo=centos-sclo-rh rh-python36*
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   41 Paquets (+24 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 74 M
 +Taille d'installation : 355 M
 +...
 +Installé:
 +  rh-python36.x86_64 0:2.0-1.el7
 +...
 +  rh-python36-scldevel.x86_64 0:2.0-1.el7
 +Dépendance(s) installée(s) :
 +  atlas.x86_64 0:3.10.1-12.el7
 +...
 +  zip.x86_64 0:3.0-11.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +Une fois la //Collection RH-Python36// installée, on peut vérifier sa présence sur le serveur.
 +
 +<file>
 +[root@tchana ~]# scl -l
 +
 +httpd24
 +php56
 +php70
 +php71
 +php72
 +php73
 +rh-python36
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} La //Collection http24// est incluse dans l'installation de la //Collection RH-Python36//.
 +\\ 
 +
 +===== Vérification de la version Python =====
 +
 +Le chemin de la commande ''python'' est: ''/opt/rh/rh-python36/root/usr/bin/python''.
 +
 +<file>
 +[root@tchana ~]# ls -als /opt/rh/rh-python36/root/usr/bin/python
 +
 +0 lrwxrwxrwx 1 root root 7 11 mai   18:11 /opt/rh/rh-python36/root/usr/bin/python -> python3
 +[root@tchana ~]#
 +</file>
 +
 +On affiche la version de la commande ''python'' de la //Collection RH-Python36//.
 +
 +<file>
 +[root@tchana ~]# /opt/rh/rh-python36/root/usr/bin/python  --version
 +
 +Python 3.6.3
 +[root@tchana ~]#
 +</file>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_icone-201-002_Lumiere.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.
 +
 +<WRAP centeralign>**La Collection RH-Python36 est installée.**</WRAP>
 +
 +======= Flectra - Prérequis =======
 +
 +===== Description =====
 +
 +//Flectra// requière un assez grand nombre de dépendances avant d'être installé.
 +
 +===== Logiciels généraux =====
 +
 +Le compilateur ''gcc'' est nécessaire lors de l'installation de certains prérequis qui doivent être compilés avant leur installation.
 +
 +{{Images_Cahier-101-03-008.png?25}} Comme la présence de ''gcc'' sur un serveur est un bris majeur de sécurité, une fois l'installation de //Flectra// terminée, on le désinstallera et on fera de même de sa dépendance ''cpp''. Voir la section 
 +[[nethserver_201_cahier_07_flectra#Désinstallation des compilateurs gcc et cpp]]
 +.
 +
 +==== Installation ====
 +
 +<file>
 +[root@tchana ~]# yum install -y git gcc zlib-devel bzip2-devel openssl-devel         \
 +                                ncurses-devel sqlite-devel readline-devel tk-devel   \
 +                                libffi-devel libxslt libxslt-devel libxml2-devel     \
 +                                openldap-devel libjpeg-turbo-devel openjpeg-devel    \
 +                                libtiff-devel libXext libz.so.1 xorg-x11-fonts-Type1
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   18 Paquets (+39 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 53 M
 +Taille d'installation : 143 M
 +...
 +Installé :
 +  bzip2-devel.x86_64 0:1.0.6-13.el7              gcc.x86_64 0:4.8.5-36.el7_6.2
 +  git.x86_64 0:1.8.3.1-20.el7                    libffi-devel.x86_64 0:3.0.13-18.el7
 +  libjpeg-turbo-devel.x86_64 0:1.2.90-6.el7      libtiff-devel.x86_64 0:4.0.3-27.el7_3
 +  libxml2-devel.x86_64 0:2.9.1-6.el7_2.3         libxslt-devel.x86_64 0:1.1.28-5.el7
 +  ncurses-devel.x86_64 0:5.9-14.20130511.el7_4   openjpeg-devel.x86_64 0:1.5.1-18.el7
 +  openldap-devel.x86_64 0:2.4.44-21.el7_6        openssl-devel.x86_64 1:1.0.2k-16.el7_6.1
 +  readline-devel.x86_64 0:6.2-10.el7             sqlite-devel.x86_64 0:3.7.17-8.el7
 +  tk-devel.x86_64 1:8.5.13-6.el7                 xorg-x11-fonts-Type1.noarch 0:7.5-9.el7
 +  zlib.i686 0:1.2.7-18.el7                       zlib-devel.x86_64 0:1.2.7-18.el7
 +
 +Dépendance(s) installée(s) :
 +...
 +  cpp.x86_64 0:4.8.5-36.el7_6.2               cyrus-sasl.x86_64 0:2.1.26-23.el7
 +...
 +  ttmkfdir.x86_64 0:3.0.9-42.el7              xorg-x11-proto-devel.noarch 0:2018.4-1.el7
 +  xz-devel.x86_64 0:5.2.2-1.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +===== Logiciels du référentiel EPEL =====
 +
 +On s'assure que le référentiel //EPEL// est connu de ''yum''.
 +
 +<file>
 +[root@tchana ~]# yum repolist | grep epel
 +
 + * epel: mirror.layeronline.com
 +epel/x86_64                 Extra Packages for Enterprise Linux 7 - x8 13 168+22
 +[root@tchana ~]#
 +</file>
 +
 +==== cabextract ====
 +
 +L'utilitaire ''cabextract'' est un logiciel pour l'extraction des fichiers //CAB// de Microsoft //(.cab)// ou tout fichier binaire qui incorpore un fichier //CAB// //(fréquemment trouvé dans les fichiers .exe)//.
 +
 +<file>
 +[root@tchana ~]# yum install -y --enablerepo=epel cabextract
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet (+1 Paquet en dépendance)
 +
 +Taille totale des téléchargements : 107 k
 +Taille d'installation : 225 k
 +...
 +Installé:
 +  cabextract.x86_64 0:1.5-1.el7
 +
 +Dépendance(s) installée(s) :
 +  libmspack.x86_64 0:0.5-0.6.alpha.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} La dépendance qui a été installée, ''libmspack.x86_64 0:0.5-0.6.alpha.el7'' contient les polices de base de Microsoft afin qu'elles soient disponibles lorsque vous générez des rapports dans Flectra.
 +
 +===== npm =====
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/Npm|https://fr.wikipedia.org/wiki/Npm]].\\ 
 +L'utilitaire ''npm'' est le gestionnaire officiel des paquets de //Node.js//. Depuis la version //0.6.3// de //Node.js//, ''npm'' fait partie de l'environnement et est donc automatiquement installé par défaut. L'utilitaire ''npm'' fonctionne avec un terminal et gère les dépendances pour une application. Il permet également d'installer des applications //Node.js// disponibles dans le dépôt //npm//.
 +
 +<WRAP column 50%>
 +{{Images_Cahier-101-03-003.png?22}} On installe //Node.js-v10.15.3// qui installera ''npm''.\\ 
 +Les versions disponibles se trouvent à l'//URL//: 
 +
 +<WRAP centeralign>[[https://nodejs.org/download/release/|https://nodejs.org/download/release/]]</WRAP>
 +</WRAP>
 +<WRAP column 42%>
 +|{{ Images_Cahier-201-07-005.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Node.js-v10.15.3 ====
 +
 +On crée un répertoire de travail.
 +
 +<file>
 +[root@tchana ~]# mkdir /temp
 +
 +[root@tchana ~]#
 +</file>
 +
 +On s'y rend.
 +
 +<file>
 +[root@tchana ~]# cd /temp/
 +
 +[root@tchana temp]#
 +</file>
 +
 +On télécharge la version //Node.js-v10.15.3//.
 +
 +<file>
 +[root@tchana temp]# wget https://nodejs.org/download/release/v10.15.3/node-v10.15.3-linux-x64.tar.gz
 +
 +--2019-05-17 07:52:58--  https://nodejs.org/download/release/v10.15.3/node-v10.15.3-linux-x64.tar.gz
 +Résolution de nodejs.org (nodejs.org)... 104.20.22.46, 104.20.23.46, 2606:4700:10::6814:162e, ...
 +Connexion vers nodejs.org (nodejs.org)|104.20.22.46|:443...connecté.
 +requête HTTP transmise, en attente de la réponse...200 OK
 +Longueur: 18638507 (18M) [application/gzip]
 +Sauvegarde en : «node-v10.15.3-linux-x64.tar.gz»
 +
 +100%[==================================================>] 18 638 507  1,79MB/  ds 9,9s
 +
 +2019-05-17 07:53:08 (1,79 MB/s) - «node-v10.15.3-linux-x64.tar.gz» sauvegardé [18638507/18638507]
 +
 +[root@tchana temp]#
 +</file>
 +
 +On extraie vers le répertoire ''/usr''.
 +
 +<file>
 +[root@tchana temp]# tar -C /usr --strip-components 1 -xzf node-v10.15.3-linux-x64.tar.gz
 +
 +[root@tchana temp]#
 +</file>
 +
 +On vérifie la présence de ''npm''.
 +
 +<file>
 +[root@tchana temp]# which npm
 +
 +/usr/bin/npm
 +[root@tchana temp]#
 +</file>
 +
 +On vérifie la version.
 +
 +<file>
 +[root@tchana temp]# npm --version
 +
 +6.4.1
 +[root@tchana temp]#
 +</file>
 +
 +===== less et less-plugin-clean-css =====
 +
 +==== less ====
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/Less_(langage)|https://fr.wikipedia.org/wiki/Less_(langage)]].
 +
 +L'utilitaire ''less'' est un langage dynamique de génération de //CSS// conçu par Alexis Sellier. Initialement inspiré par Sass, il l'influence à son tour avec l'apparition de la syntaxe //SCSS// par laquelle Sass reprend des éléments de la syntaxe //CSS// classique. Le principe de //Less// est en effet de ne pas rompre avec la syntaxe //CSS//: tout code //CSS// est aussi du code //Less// valide et sémantiquement équivalent. //Less// y ajoute notamment les mécanismes suivants: variables, imbrication, mixins, opérateurs et fonctions.
 +
 +==== less-plugin-clean-css ====
 +
 +//Référence:// [[https://github.com/less/less-plugin-clean-css|https://github.com/less/less-plugin-clean-css]].
 +
 +Ce greffon compresse la sortie ''css'' de ''less'' en utilisant ''clean-css''.
 +
 +{{Images_Cahier-101-03-003.png?22}} Pour éviter les erreurs de certificats //SSL// et de téléchargement.
 +
 +<file>
 +[root@tchana temp]# npm config set strict-ssl false
 +
 +[root@tchana temp]#
 +</file>
 +
 +On installe ces logiciels.
 +
 +<file>
 +[root@tchana temp]# npm install -g less less-plugin-clean-css
 +
 +/usr/bin/lessc -> /usr/lib/node_modules/less/bin/lessc
 ++ less-plugin-clean-css@1.5.1
 ++ less@3.9.0
 +added 66 packages from 128 contributors in 4.337s
 +[root@tchana temp]#
 +</file>
 +
 +On vérifie la présence de ''less''.
 +
 +<file>
 +[root@tchana temp]# which less
 +
 +/usr/bin/less
 +[root@tchana temp]#
 +</file>
 +
 +On vérifie sa version.
 +
 +<file>
 +[root@tchana temp]# less --version
 +
 +less 458 (POSIX regular expressions)
 +Copyright (C) 1984-2012 Mark Nudelman
 +
 +less comes with NO WARRANTY, to the extent permitted by law.
 +For information about the terms of redistribution,
 +see the file named README in the less distribution.
 +Homepage: http://www.greenwoodsoftware.com/less
 +[root@tchana temp]#
 +</file>
 +
 +On vérifie la présence de ''lessc''.
 +
 +<file>
 +[root@tchana temp]# which lessc
 +
 +/usr/bin/lessc
 +[root@tchana temp]#
 +</file>
 +
 +On vérifie sa version.
 +
 +<file>
 +[root@tchana temp]# lessc --version
 +
 +lessc 3.9.0 (Less Compiler) [JavaScript]
 +[root@tchana temp]#
 +</file>
 +
 +===== wkhtmltox =====
 +
 +Les ''wkhtmltox'' disponibles à partir de //CentOS// ou du référentiel //EPEL// sont d'une version inférieure à celle requise par //Flectra//. De plus, ces versions ne convertissent pas les en-têtes et les pieds de page. Il est fortement recommandé d'obtenir la dernière version stable directement de la source.
 +
 +==== Dépendances pour wkhtmltopdf ====
 +
 +//Référence:// [[https://wkhtmltopdf.org/|https://wkhtmltopdf.org/]].\\ 
 +''wkhtmltopdf'' et ''wkhtmltoimage'' sont des outils LIBRE //(LGPLv3)// de ligne de commande pour convertir du code //HTML// en //PDF// ou en divers autres formats d'image en utilisant le moteur de rendu //Qt WebKit//. Ces outils fonctionnent entièrement "sans tête" //(headless)// et ne nécessitent aucun service d'écran ou d'affichage.
 +
 +On installe les dépendances.
 +
 +<file>
 +[root@tchana temp]# yum install -y fontconfig libpng libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet
 +
 +Taille totale des téléchargements : 2.8 M
 +Taille d'installation : 2.9 M
 +...
 +Installé :
 +  xorg-x11-fonts-75dpi.noarch 0:7.5-9.el7
 +
 +Terminé !
 +[root@tchana temp]#
 +</file>
 +
 +==== wkhtmltox ====
 +
 +Si ce n'est déjà fait, on se rend dans le répertoire de travail.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# cd /temp
 +
 +[root@tchana temp]#
 +</file>
 +</WRAP>
 +
 +On nettoie le répertoire ''/temp''.
 +
 +<file>
 +[root@tchana temp]# rm -rf *
 +
 +[root@tchana temp]#
 +</file>
 +
 +<WRAP column 52%>
 +À l'aide d'un navigateur Internet, on se rend à l'Url:
 +
 +[[https://github.com/wkhtmltopdf/wkhtmltopdf/releases/|https://github.com/wkhtmltopdf/wkhtmltopdf/releases/]].
 +
 +On claque sur le fichier: **wkhtmltox-0.12.5-1.centos7.x86_64.rpm**.
 +
 +**-> Copier l'adresse du lien**.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-201-07-006.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Le lien copié est: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm 
 +
 +À la ligne de commande, on entre ''rpm -Uvh'' suivi d'un espace, puis on colle le lien copié ci-dessus afin d'installer le fichier ''.rpm''.
 +
 +<file>
 +[root@tchana temp]# rpm -Uvh https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
 +
 +Récupération de https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
 +Préparation...                       ################################# [100%]
 +Mise à jour / installation...
 +  1:wkhtmltox-1:0.12.5-1.centos7     ################################# [100%]
 +[root@tchana temp]#
 +</file>
 +
 +On vérifie l'installation des fichiers.
 +
 +<file>
 +[root@tchana temp]# ls -als /usr/local/bin/wkhtmlto*
 +
 +36936 -rwxr-xr-x 1 root root 37818944 11 juin   2018 /usr/local/bin/wkhtmltoimage
 +37016 -rwxr-xr-x 1 root root 37900864 11 juin   2018 /usr/local/bin/wkhtmltopdf
 +[root@tchana temp]#
 +</file>
 +
 +On supprime tout dans le répertoire ''/temp''.
 +
 +<file>
 +[root@tchana temp]# rm -rf /temp/*
 +
 +[root@tchana temp]#
 +</file>
 +
 +On retourne dans le répertoire personnel de **__root__**.
 +
 +<file>
 +[root@tchana temp]# cd
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# pwd
 +
 +/root
 +[root@tchana ~]#
 +</file>
 +
 +===== pychart =====
 +
 +//PyChart// est une bibliothèque //Python// pour la création de //PDF//, //PNG// ou graphiques //SVG// en //PostScript encapsulé// de haute qualité. Il prend actuellement en charge les traçage linéaires et les graphiques circulaires et par barres. Parce qu'il est basé sur //Python//, vous pouvez utiliser le pouvoir de scriptage de //Python//.
 +
 +<file>
 +[root@tchana ~]# yum install -y pychart
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet
 +
 +Taille totale des téléchargements : 190 k
 +Taille d'installation : 749 k
 +...
 +Installé :
 +  pychart.noarch 0:1.39-17.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +===== Vérifications finales =====
 +
 +**NPM**
 +
 +<file>
 +[root@tchana ~]# which npm
 +
 +/usr/local/bin/npm
 +[root@tchana ~]#
 +</file>
 +
 +<file>
 +[root@tchana ~]# npm --version
 +
 +6.4.1
 +[root@tchana ~]#
 +</file>
 +
 +**LESS**
 +
 +<file>
 +[root@tchana ~]# which less
 +
 +/usr/bin/less
 +[root@tchana ~]#
 +</file>
 +
 +<file>
 +[root@tchana ~]# less --version
 +
 +less 458 (POSIX regular expressions)
 +Copyright (C) 1984-2012 Mark Nudelman
 +
 +less comes with NO WARRANTY, to the extent permitted by law.
 +For information about the terms of redistribution,
 +see the file named README in the less distribution.
 +Homepage: http://www.greenwoodsoftware.com/less
 +[root@tchana ~]#
 +</file>
 +
 +**LESSC**
 +
 +<file>
 +[root@tchana ~]# which lessc
 +
 +/usr/bin/lessc
 +[root@tchana ~]#
 +</file>
 +
 +<file>
 +[root@tchana ~]# lessc --version
 +
 +lessc 3.9.0 (Less Compiler) [JavaScript]
 +[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.
 +
 +<WRAP centeralign>**Tous les prérequis pour Flectra sont remplis, on est prêt pour l'installation.**</WRAP>
 +
 +====== Flectra - Installation ======
 +
 +===== Pare-feu =====
 +
 +{{Images_Cahier-101-03-006.png?25}} On ouvre le port <wrap em>7073</wrap> du pare-feu __pour le réseau vert seulement__.
 +
 +<file>
 +[root@tchana ~]# config set fw_flectra service status enabled TCPPort 7073 access green
 +
 +[root@tchana ~]#
 +</file>
 +
 +Pour ouvrir le port //7073// pour les réseaux vert et rouge.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# config set fw_flectra service status enabled TCPPort 7073 access green,red
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +On signale le changement.
 +
 +<file>
 +[root@tchana ~]# signal-event firewall-adjust
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/shorewall/rules | grep 7073
 +
 +ACCEPT  loc     $FW     tcp     7073
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# cat /etc/shorewall/rules | grep 7073
 +
 +ACCEPT  loc     $FW     tcp     7073
 +ACCEPT  net     $FW     tcp     7073
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +On affiche la configuration du port ouvert pour //Flectra//.
 +
 +<file>
 +[root@tchana ~]# config show fw_flectra
 +
 +fw_flectra=service
 +    TCPPort=7073
 +    access=green
 +    status=enabled
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# config show fw_flectra
 +
 +fw_flectra=service
 +    TCPPort=7073
 +    access=green,red
 +    status=enabled
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +===== git clone Flectra =====
 +
 +On se substitue à l'utilisateur **__flectra__**.
 +
 +{{Images_Cahier-101-03-006.png?25}} Remarquez le changement de l'invite.
 +
 +<file>
 +[root@tchana ~]# su - flectra
 +
 +[flectra@tchana ~]$
 +</file>
 +
 +On vérifie quel utilisateur nous sommes.
 +
 +<file>
 +[flectra@tchana ~]$ whoami
 +
 +flectra
 +[flectra@tchana ~]$
 +</file>
 +
 +On vérifie le chemin du répertoire courant.
 +
 +<file>
 +[flectra@tchana ~]$ pwd
 +
 +/opt/flectra
 +[flectra@tchana ~]$
 +</file>
 +
 +<WRAP column 30%>
 +On se rend à l'//URL// [[https://github.com/flectra-hq/flectra|https://github.com/flectra-hq/flectra]].
 +
 +**Clone or download ->** on clique l'**icône Copier dans le presse-papier**.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-07-007.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Le lien copié est: [[https://github.com/flectra-hq/flectra.git|https://github.com/flectra-hq/flectra.git]].
 +
 +On emploie l'utilitaire ''git'' pour télécharger la branche __Master__ de //Flectra//.
 +
 +On entre ''git clone'' suivi d'un [Espace] et on colle le lien copié ci-haut avec un clic, suivi d'un [Espace], puis ''--depth=1''.
 +
 +<file>
 +[flectra@tchana ~]$ git clone https://github.com/flectra-hq/flectra.git --depth=1
 +
 +Cloning into 'flectra'...
 +remote: Enumerating objects: 25765, done.
 +remote: Counting objects: 100% (25765/25765), done.
 +remote: Compressing objects: 100% (18241/18241), done.
 +remote: Total 25765 (delta 8233), reused 19250 (delta 6685), pack-reused 0
 +Receiving objects: 100% (25765/25765), 137.41 MiB | 1.80 MiB/s, done.
 +Resolving deltas: 100% (8233/8233), done.
 +Checking out files: 100% (23269/23269), done.
 +[flectra@tchana ~]$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[flectra@tchana ~]$ ls -als
 +
 +total 20
 +0 drwx------  6 flectra flectra  138 19 sept. 19:07 .
 +0 drwxr-xr-x. 7 root    root      73 18 sept. 23:14 ..
 +4 -rw-------  1 flectra flectra  771 19 sept. 18:36 .bash_history
 +4 -rw-r--r--  1 flectra flectra   18 30 oct.   2018 .bash_logout
 +4 -rw-r--r--  1 flectra flectra  193 30 oct.   2018 .bash_profile
 +4 -rw-r--r--  1 flectra flectra  231 30 oct.   2018 .bashrc
 +0 drwx------  3 flectra flectra   17 19 sept. 00:51 .cache
 +4 drwxrwxr-x  9 flectra flectra 4096 19 sept. 19:05 flectra
 +0 drwx------  3 flectra flectra   19 19 sept. 01:20 .local
 +0 drwxrw----  3 flectra flectra   19 19 sept. 19:03 .pki
 +[flectra@tchana ~]$
 +</file>
 +
 +<file>
 +[flectra@tchana ~]$ ls -als flectra/
 +
 +total 180
 + 4 drwxrwxr-x   9 flectra flectra  4096 19 sept. 19:05 .
 + 0 drwx------   6 flectra flectra   138 19 sept. 19:07 ..
 +16 drwxrwxr-x 306 flectra flectra 12288 19 sept. 19:05 addons
 + 8 -rw-rw-r--   1 flectra flectra  5331 19 sept. 19:04 CHANGELOG.md
 + 4 -rw-rw-r--   1 flectra flectra  3218 19 sept. 19:04 CODE_OF_CONDUCT.md
 + 4 -rw-rw-r--   1 flectra flectra   432 19 sept. 19:04 CONTRIBUTING.md
 + 4 -rw-rw-r--   1 flectra flectra   433 19 sept. 19:04 COPYRIGHT
 + 0 drwxrwxr-x   3 flectra flectra   238 19 sept. 19:05 debian
 + 0 drwxrwxr-x  10 flectra flectra   321 19 sept. 19:05 doc
 + 0 drwxrwxr-x  10 flectra flectra   323 19 sept. 19:05 flectra
 + 4 -rwxrwxr-x   1 flectra flectra   186 19 sept. 19:05 flectra-bin
 + 0 drwxrwxr-x   8 flectra flectra   178 19 sept. 19:05 .git
 + 4 -rw-rw-r--   1 flectra flectra   588 19 sept. 19:04 .gitignore
 + 0 drwxrwxr-x   3 flectra flectra    29 19 sept. 19:04 .gitlab
 + 4 -rw-rw-r--   1 flectra flectra  1728 19 sept. 19:04 .gitlab-ci.yml
 +44 -rw-rw-r--   1 flectra flectra 43529 19 sept. 19:04 LICENSE
 +56 -rw-rw-r--   1 flectra flectra 56570 19 sept. 19:04 .mailmap
 + 4 -rw-rw-r--   1 flectra flectra   408 19 sept. 19:04 Makefile
 + 4 -rw-rw-r--   1 flectra flectra  1402 19 sept. 19:04 MANIFEST.in
 + 4 -rw-rw-r--   1 flectra flectra  1090 19 sept. 19:04 README.md
 + 4 -rw-rw-r--   1 flectra flectra  1179 19 sept. 19:05 requirements.txt
 + 0 drwxrwxr-x   4 flectra flectra   166 19 sept. 19:05 setup
 + 4 -rw-rw-r--   1 flectra flectra   878 19 sept. 19:05 setup.cfg
 + 8 -rw-rw-r--   1 flectra flectra  5665 19 sept. 19:05 setup.py
 +[flectra@tchana ~]$
 +</file>
 +
 +===== Environnement virtuel pour l'utilisateur flectra =====
 +
 +On active //Python-36//.
 +
 +<file>
 +[flectra@tchana ~]$ scl enable rh-python36 bash
 +
 +[flectra@tchana ~]$
 +</file>
 +
 +On crée un environnement virtuel pour l'utilisateur **__flectra__** //(peut prendre quelques secondes)//.
 +
 +<file>
 +[flectra@tchana ~]$ python3 -m venv flectra-venv
 +
 +[flectra@tchana ~]$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[flectra@tchana ~]$ ls -als
 +
 +total 20
 +0 drwx------  7 flectra flectra  158 19 sept. 19:11 .
 +0 drwxr-xr-x. 7 root    root      73 18 sept. 23:14 ..
 +4 -rw-------  1 flectra flectra  771 19 sept. 18:36 .bash_history
 +4 -rw-r--r--  1 flectra flectra   18 30 oct.   2018 .bash_logout
 +4 -rw-r--r--  1 flectra flectra  193 30 oct.   2018 .bash_profile
 +4 -rw-r--r--  1 flectra flectra  231 30 oct.   2018 .bashrc
 +0 drwx------  3 flectra flectra   17 19 sept. 00:51 .cache
 +4 drwxrwxr-x  9 flectra flectra 4096 19 sept. 19:05 flectra
 +0 drwxrwxr-x  5 flectra flectra   74 19 sept. 19:11 flectra-venv
 +0 drwx------  3 flectra flectra   19 19 sept. 01:20 .local
 +0 drwxrw----  3 flectra flectra   19 19 sept. 19:03 .pki
 +[flectra@tchana ~]$
 +</file>
 +
 +On active l'environnement virtuel.
 +
 +<file>
 +[flectra@tchana ~]$ source flectra-venv/bin/activate
 +
 +(flectra-venv) [flectra@tchana ~]$
 +</file>
 +
 +==== requirements.txt ====
 +
 +C'est ici que ''gcc'' est utilisé pour la compilation des exigences de //Flectra//.
 +
 +<file>
 +(flectra-venv) [flectra@tchana ~]$ ls -als /opt/flectra/flectra/requirements.txt
 +
 +4 -rw-rw-r-- 1 flectra flectra 1179 19 sept. 19:05 /opt/flectra/flectra/requirements.txt
 +(flectra-venv) [flectra@tchana ~]$
 +</file>
 +
 +On installe toutes les exigences contenues dans le fichier ''requirements.txt''. //(Peu prendre un certain temps, surtout pour lxml.)//
 +
 +<file>
 +(flectra-venv) [flectra@tchana ~]$ pip3 install -r /opt/flectra/flectra/requirements.txt
 +
 +...
 +Ignoring pypiwin32: markers 'sys_platform == "win32"' don't match your environment
 +Collecting Babel==2.3.4 (from -r /opt/flectra/flectra/requirements.txt (line 1))
 +  Using cached https://files.pythonhosted.org/packages/b4/ec/acd307eac2e23f9cab1c8bdbe29b3b1d43215e31c32f8aa91b3a97925b5b/Babel-2.3.4-py2.py3-none-any.whl
 +...
 +  Running setup.py install for lxml ... \
 +...
 +  Running setup.py install for pycrypto ... done
 +Successfully installed Babel-2.3.4 Jinja2-2.10.1 Mako-1.0.4 MarkupSafe-0.23 Pillow-4.0.0 PyPDF2-1.26.0 PyYAML-3.12 Werkzeug-0.11.15 XlsxWriter-0.9.3 argparse-1.4.0 beautifulsoup4-4.8.0 certifi-2019.9.11 chardet-3.0.4 decorator-4.0.10 docutils-0.12 ebaysdk-2.1.5 feedparser-5.2.1 gevent-1.1.2 greenlet-0.4.10 html2text-2016.9.19 idna-2.7 linecache2-1.0.0 lxml-3.7.1 mock-2.0.0 num2words-0.5.6 numpy-1.14.3 oauthlib-2.0.7 ofxparse-0.16 olefile-0.46 passlib-1.6.5 pbr-5.4.3 phonenumbers-8.8.9 psutil-4.3.1 psycopg2-2.7.3.1 pycrypto-2.6.1 pydot-1.2.3 pyldap-2.4.28 pyparsing-2.1.10 pyserial-3.1.1 python-dateutil-2.5.3 python-stdnum-1.11 pytz-2016.7 pyusb-1.0.0 qrcode-5.3 reportlab-3.3.0 requests-2.20.0 six-1.12.0 soupsieve-1.9.3 suds-jurko-0.6 traceback2-1.4.0 unittest2-1.1.0 urllib3-1.24.3 vatnumber-1.2 vobject-0.9.3 xlrd-1.0.0 xlwt-1.3.0
 +You are using pip version 9.0.1, however version 19.2.3 is available.
 +You should consider upgrading via the 'pip install --upgrade pip' command.
 +(flectra-venv) [flectra@tchana ~]$
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} __On peut ignorer la suggestion pour la mise à jour de ''pip''__.
 +
 +On désactive l'environnement virtuel et on le quitte.
 +
 +<file>
 +(flectra-venv) [flectra@tchana ~]$ deactivate && exit
 +
 +exit
 +[flectra@tchana ~]$
 +</file>
 +
 +On quitte la substitution d'utilisateur.
 +
 +<file>
 +[flectra@tchana ~]$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie qui nous sommes.
 +
 +<file>
 +[root@tchana ~]# whoami
 +
 +root
 +[root@tchana ~]#
 +</file>
 +
 +===== Journal =====
 +
 +==== Création du répertoire ====
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +DIR="/var/log/flectra"
 +for NAME in $DIR
 +do
 +if [ ! -d $NAME ]; then
 +   mkdir $NAME
 +   chown flectra.flectra $NAME
 +   chmod 700 $NAME
 +fi
 +done
 +
 +</file>
 +
 +On vérifie la création du répertoire.
 +
 +<file>
 +[root@tchana ~]# ls -alsd /var/log/flectra
 +
 +0 drwx------ 2 flectra flectra 32 19 sept. 01:20 /var/log/flectra
 +[root@tchana ~]#
 +</file>
 +
 +==== logrotation ====
 +
 +Nous autorisons la rotation du journal <wrap em>flectra-server</wrap> de telle sorte qu'il sera géré de la même manière que ceux de toutes les autres applications.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/logrotate.d/flectra-server << EOF
 +/var/log/flectra/flectra-server.log {
 +
 +# Fichier de logrotate pour /var/log/flectra/flectra-server.log
 +# Michel-André 2018-06-1_22h00  Modification: 2019-09-19 pour NethServer
 +# Pour plus de détails, voir: man logrotate
 +# Rotation quotidienne
 +    daily
 +
 +# Si le fichier n'existe pas, c'est correct, pas de problème
 +    missingok
 +
 +# Grandeur maximale de 100k
 +    maxsize 100000
 +
 +# Ne conserver que 5 fichiers de log
 +    rotate 5
 +
 +# Ne pas faire de rotation si le fichier est vide.
 +    notifempty
 +
 +# Immédiatement après la permutation, un journal est créé. Chacun des attributs du journal
 +# peut être omis, auquel cas ces attributs omis pour le nouveau journal prendront les même
 +# valeurs que pour le journal original.
 +# create droits propriétaire groupe
 +create 0640 flectra flectra
 +}
 +EOF
 +
 +
 +</file>
 +
 +On vérifie la création du fichier.
 +
 +<file>
 +[root@tchana ~]# ls -ls /etc/logrotate.d/flectra-server
 +
 +4 -rw-r--r-- 1 root root 794 19 sept. 19:33 /etc/logrotate.d/flectra-server
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le début du contenu.
 +
 +<file>
 +[root@tchana ~]# head /etc/logrotate.d/flectra-server
 +
 +/var/log/flectra/flectra-server.log {
 +
 +# Fichier de logrotate pour /var/log/flectra/flectra-server.log
 +# Michel-André 2018-06-1_22h00  Modification: 2019-09-19 pour NethServer
 +# Pour plus de détails, voir: man logrotate
 +# Rotation quotidienne
 +    daily
 +
 +# Si le fichier n'existe pas, c'est correct, pas de problème
 +    missingok
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant __/var/log/flectra/flectra-server.log {__. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +<WRAP column 60%>
 +Le journal pourra être examiné dans l'interface Web //Nethserver// en se rendant à: **Administration -> Logs  ->** et en cliquant **/var/log/flectra/flectra-server.log**.
 +
 +{{Images_Cahier-101-03-006.png?25}} __Le premier examen du journal sera très long à se charger__, car il contiendra les infos de débogage.
 +</WRAP>
 +<WRAP column 32%>
 +|{{ Images_Cahier-201-07-008.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Sauvegarde ====
 +
 +On vérifie si le nom du fichier ''/etc/logrotate.d/flectra-server'' 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/logrotate.d/flectra-server"
 +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/logrotate.d/flectra-server
 +
 +/etc/logrotate.d/flectra-server
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __/etc/logrotate.d/flectra-server__. Nous en avons insérée une afin de faciliter la copie de la commande.
 +
 +===== Fichier de configuration: /etc/flectra-server.conf =====
 +
 +Pour débuter, nous activons ''log_handler = :DEBUG'' pour voir tous les messages de //Flectra// dans le fichier journal. Lorsque tout fonctionnera correctement, on remettra la valeur par défaut.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/flectra-server.conf <<'EOT'
 +[options]
 +; Ceci est le mot de passe qui autorise les oprérations sur la base de données:
 +admin_passwd = fghtbgh
 +; OPTIONS DE LA BASE DE DONNÉES
 +db_host = localhost
 +db_port = 5432
 +db_name = Flectra
 +db_user = flectra
 +db_password = fghtbgh
 +; PARAMÈTRES DIVERS
 +addons_path = /opt/flectra/flectra/addons
 +load = web
 +timezone = America/Montreal
 +without-demo=all
 +no-xmlrpc = True
 +no-xmlrpcs = True
 +no-netrpc = True
 +; PARAMÈTRES DES JOURNAUX
 +logfile = /var/log/flectra/flectra-server.log
 +; MAR - Ceci est le défault
 +;log_handler = werkzeug:WARNING
 +; MAR - Pour voir tous les messageS de Flectra, on active à :DEBUG
 +log_handler = :DEBUG
 +;log_level = warn
 +no-logrotate = True
 +EOT
 +
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/flectra-server.conf
 +
 +[options]
 +; Ceci est le mot de passe qui autorise les oprérations sur la base de données:
 +admin_passwd = fghtbgh
 +; OPTIONS DE LA BASE DE DONNÉES
 +db_host = localhost
 +db_port = 5432
 +db_name = Flectra
 +db_user = flectra
 +db_password = fghtbgh
 +; PARAMÈTRES DIVERS
 +addons_path = /opt/flectra/flectra/addons
 +load = web
 +timezone = America/Montreal
 +without-demo=all
 +no-xmlrpc = True
 +no-xmlrpcs = True
 +no-netrpc = True
 +; PARAMÈTRES DES JOURNAUX
 +logfile = /var/log/flectra/flectra-server.log
 +; MAR - Ceci est le défault
 +;log_handler = werkzeug:WARNING
 +; MAR - Pour voir tous les messageS de Flectra, on active à :DEBUG
 +log_handler = :DEBUG
 +;log_level = warn
 +no-logrotate = True
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant __[options]__. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +{{Images_Cahier-101-03-008.png?25}} Faille de sécurité, car ce fichier contient le mot de passe de la //BD// et il est lisible par "other" c.-à-d. tout le monde. 
 +
 +On vérifie les droits du fichier.
 +
 +<file>
 +[root@tchana ~]# ls -als /etc/flectra-server.conf
 +
 +4 -rw-r--r-- 1 root root 673 19 sept. 19:54 /etc/flectra-server.conf
 +[root@tchana ~]#
 +</file>
 +
 +On rend le script exécutable par le propriétaire/groupe et on enlève tous les droits à "other".
 +
 +<file>
 +[root@dorgee ~]# chmod 550 /etc/flectra-server.conf
 +
 +[root@dorgee ~]#
 +</file>
 +
 +On change le propriétaire et le groupe pour ''flectra:flectra''.
 +
 +<file>
 +[root@dorgee ~]# chown flectra:flectra /etc/flectra-server.conf
 +
 +[root@dorgee ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@dorgee ~]# ls -ls /etc/flectra-server.conf
 +
 +4 -r-xr-x--- 1 flectra flectra 673 19 sept. 19:54 /etc/flectra-server.conf
 +[root@dorgee ~]#
 +</file>
 +
 +===== Départ/Arrêt automatique =====
 +
 +On veut que //Flectra// se lance automatiquement à tous les amorçages du //Serveur NethServer//. Pour ce faire, on crée le fichier ''/etc/systemd/system/flectra.service''.
 +
 +==== Fichier /etc/systemd/system/flectra.service ====
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/systemd/system/flectra.service <<'EOT'
 +[Unit]
 +Description=Flectra
 +Requires=postgresql-11.service
 +After=network.target postgresql-11.service
 +
 +[Service]
 +Type=simple
 +SyslogIdentifier=flectra
 +PermissionsStartOnly=true
 +User=flectra
 +Group=flectra
 +ExecStart=/usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin -c /etc/flectra-server.conf
 +StandardOutput=journal+console
 +
 +[Install]
 +WantedBy=multi-user.target
 +
 +EOT
 +
 +
 +</file>
 +
 +On vérifie la création du fichier.
 +
 +<file>
 +[root@tchana ~]# ls -als /etc/systemd/system/flectra.service
 +
 +4 -rw-r--r-- 1 root root 416 19 sept. 20:10 /etc/systemd/system/flectra.service
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie son contenu.
 +
 +<file>
 +[root@tchana ~]# cat /etc/systemd/system/flectra.service
 +
 +[Unit]
 +Description=Flectra
 +Requires=postgresql-11.service
 +After=network.target postgresql-11.service
 +
 +[Service]
 +Type=simple
 +SyslogIdentifier=flectra
 +PermissionsStartOnly=true
 +User=flectra
 +Group=flectra
 +ExecStart=/usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin -c /etc/flectra-server.conf
 +StandardOutput=journal+console
 +
 +[Install]
 +WantedBy=multi-user.target
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Premier démarrage de Flectra ====
 +
 +On recharge la configuration du gestionnaire ''systemd'' en lançant la commande ''systemctl''((**systemctl:** Peut être utilisé pour examiner et contrôler l'état du gestionnaire du système et des services "systemd".\\ 
 +//Référence:// man systemctl (1). \\ \\ )) avec le paramètre ''daemon-reload''((**systemctl daemon-reload:** Recharge la configuration du gestionnaire systemd. Ceci relance tous les "generators", recharge tous les fichiers de l'unité et recrée l'intégralité de l'arbre de dépendance. Pendant le rechargement du démon, tous les connecteurs logiciel (socket) de systemd resteront accessibles. Donc, c’est une recharge "soft"; essentiellement, daemon-reload lit les configurations modifiées et régénère les arbres de dépendance. Cette commande ne doit pas être confondue avec la commande reload. \\ \\ )).
 +
 +<file>
 +[root@tchana ~]# systemctl daemon-reload
 +
 +[root@tchana ~]#
 +</file>
 +
 +La première fois qu'on lance //Flectra//, on utilise les paramètre enable((**systemctl enable NOM...:** Active un ou plusieurs fichiers de l'unité //(NOM)// ou instances de fichiers de l'unité tel qu'indiqué par la ligne de commande. Ceci créera un nombre de liens symboliques tel qu'encodé dans les sections "[Install]" des fichiers de l'unité. Une fois les liens symboliques créés, la configuration de ''systemd'' est rechargée //(d'une manière équivalente à daemon-reload)// pour garantir que les modifications sont prises en compte immédiatement. \\ \\ )) et --now((**systemctl... --now:** Lorsqu'utilisé avec enable, l'unité est également démarrée. \\ \\ )).
 +
 +<file>
 +[root@tchana ~]# systemctl enable flectra --now
 +
 +Created symlink from /etc/systemd/system/multi-user.target.wants/flectra.service to /etc/systemd/system/flectra.service.
 +[root@tchana ~]#
 +</file>
 +
 +==== Vérification ====
 +
 +{{Images_Cahier-101-03-006.png?25}} Peut prendre quelques secondes avant que //Flectra// soit complètement démarré.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: active (running) since jeu. 2019-09-19 20:17:22 EDT; 8s ago
 + Main PID: 4010 (scl)
 +   CGroup: /system.slice/flectra.service
 +           ├─4010 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python...
 +           ├─4025 /bin/bash /var/tmp/scl9gP0CO
 +           └─4038 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ...
 +
 +sept. 19 20:17:22 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +===== Finalisation de l'installation =====
 +
 +==== Accès à Flectra ====
 +
 +  - Autoriser les __témoins__ et activer __JavaScript__ du fureteur Internet.\\ 
 +\\ 
 +
 +  - On se rend à la page de notre site //Flectra// en spécifiant le port <wrap em>:7073 </wrap>. **http://www.micronator-dev.org:7073/** ou **http://10.10.10.75:7073/**  <wrap em>pas de</wrap> http<wrap em>s</wrap> pour l'instant. L'affichage de la page __peut prendre un certain temps__ //(minutes)//.
 +
 +==== Création d'une nouvelle base de données ====
 +
 +<WRAP column 46%>
 +● **//Master password://** -> le mot de passe qu'on a spécifié dans le fichier de configuration ''/etc/flectra-server.conf'' à la ligne: ''<nowiki>db_password = fghtbgh</nowiki>'' à la section 
 +[[nethserver_201_cahier_07_flectra#Fichier de configuration: /etc/flectra-server.conf]]
 +.
 +
 +● **//Database name://** -> le nom de la base de données que créera l'installation: **Flectra**.
 +
 +● **//Email://** -> notre adresse courriel. On utilisera cette adresse pour se loguer en tant qu'administrateur de //Flectra//.
 +
 +● **//Password://** -> le mot de passe pour l'administrateur de //Flectra//.
 +
 +● **//Language://** -> on choisit, dans le menu déroulant, la langue par défaut pour notre site.
 +
 +● **//Country://** -> Choisir le pays pour notre site.
 +
 +● **//Démo data://** -> cocher pour installer des données fictives pour l'évaluation de //Flectra//.\\ 
 +{{Images_Cahier-101-03-006.png?25}} //(__Ne pas cocher pour un site en Production.__)//
 +
 +On clique **Create database** pour créer la base de données de notre société.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-009.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-004.png?25}} Ce processus peut prendre un certain temps //(__quelques minutes__)//. Être patient! 
 +
 +<WRAP column 22%>
 +La page d'accueil s'affiche.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-010.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP centeralign>**Nous sommes prêt à utiliser Flectra.**</WRAP>
 +
 +===== Paramètre du journal Flectra =====
 +
 +Maintenant que tout fonctionne correctement, dans le fichier de configuration ''/etc/flectra-server.conf'', on peut remettre le paramètre ''log<nowiki>_</nowiki>handler'' à sa valeur par défaut en dé-commentant la ligne ''log<nowiki>_</nowiki>handler = werkzeug:WARNING'' et en commentant [ <wrap em>;</wrap> ] la ligne ''log<nowiki>_</nowiki>handler = :DEBUG''.
 +
 +=== Fichier final de configuration /etc/flectra-server.conf ===
 +
 +<file>
 +...
 +; PARAMÈTRES DES JOURNAUX
 +logfile = /var/log/flectra/flectra-server.log
 +; MAR - Ceci est le défault
 +log_handler = werkzeug:WARNING
 +; MAR - Pour voir tous les messageS de Flectra, on active à :DEBUG
 +;log_handler = :DEBUG
 +...
 +</file>
 +
 +À la console du serveur, on ouvre le fichier avec l'éditeur //vi//.
 +
 +{{Images_Cahier-101-03-003.png?22}} Vu que le fichier n'a pas de droit d'écriture, lorsque **__root__** écrira les modifications, il devra utiliser ''w!'', c.-à-d. <wrap em>[ w ]</wrap> + <wrap em>[ ! ]</wrap>.
 +
 +<file>
 +vi /etc/flectra-server.conf
 +
 +</file>
 +
 +On vérifie les changements dans le fichiers ''/etc/flectra-server.conf''.
 +
 +<file>
 +[root@tchana ~]# cat /etc/flectra-server.conf | grep log_handler
 +
 +log_handler = werkzeug:WARNING
 +;log_handler = :DEBUG
 +[root@tchana ~]#
 +</file>
 +
 +Nous avons changé un paramètre important, on redémarre le service //Flectra// afin qu'il recharge son fichier de configuration.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Rotation du journal Flectra ====
 +
 +Le journal de //Flectra// est très volumineux, car il contient toutes les entrées de débogage.
 +
 +<file>
 +[flectra@tchana ~]$ ls -als /var/log/flectra/flectra-server.log
 +
 +24924 -rw-r--r-- 1 flectra flectra 25520972 19 sept. 21:12 /var/log/flectra/flectra-server.log
 +[flectra@tchana ~]$
 +</file>
 +
 +On force la rotation de ce journal.
 +
 +<file>
 +[flectra@tchana ~]$ logrotate -vf /etc/logrotate.d/flectra-server
 +
 +reading config file /etc/logrotate.d/flectra-server
 +Allocating hash table for state file, size 15360 B
 +
 +Handling 1 logs
 +
 +rotating pattern: /var/log/flectra/flectra-server.log  forced from command line (5 rotations)
 +empty log files are not rotated, log files >= 100000 are rotated earlier, old logs are removed
 +considering log /var/log/flectra/flectra-server.log
 +  log needs rotating
 +rotating log /var/log/flectra/flectra-server.log, log->rotateCount is 5
 +dateext suffix '-20190919'
 +glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
 +renaming /var/log/flectra/flectra-server.log.5 to /var/log/flectra/flectra-server.log.6 (rotatecount 5, logstart 1, i 5),
 +old log /var/log/flectra/flectra-server.log.5 does not exist
 +renaming /var/log/flectra/flectra-server.log.4 to /var/log/flectra/flectra-server.log.5 (rotatecount 5, logstart 1, i 4),
 +old log /var/log/flectra/flectra-server.log.4 does not exist
 +renaming /var/log/flectra/flectra-server.log.3 to /var/log/flectra/flectra-server.log.4 (rotatecount 5, logstart 1, i 3),
 +old log /var/log/flectra/flectra-server.log.3 does not exist
 +renaming /var/log/flectra/flectra-server.log.2 to /var/log/flectra/flectra-server.log.3 (rotatecount 5, logstart 1, i 2),
 +old log /var/log/flectra/flectra-server.log.2 does not exist
 +renaming /var/log/flectra/flectra-server.log.1 to /var/log/flectra/flectra-server.log.2 (rotatecount 5, logstart 1, i 1),
 +old log /var/log/flectra/flectra-server.log.1 does not exist
 +renaming /var/log/flectra/flectra-server.log.0 to /var/log/flectra/flectra-server.log.1 (rotatecount 5, logstart 1, i 0),
 +old log /var/log/flectra/flectra-server.log.0 does not exist
 +log /var/log/flectra/flectra-server.log.6 doesn't exist -- won't try to dispose of it
 +renaming /var/log/flectra/flectra-server.log to /var/log/flectra/flectra-server.log.1
 +creating new /var/log/flectra/flectra-server.log mode = 0640 uid = 983 gid = 979
 +[flectra@tchana ~]$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/log/flectra/
 +
 +total 24928
 +    0 drwx------   2 flectra flectra       60 19 sept. 21:12 .
 +    4 drwxr-xr-x. 22 root    root        4096 19 sept. 20:16 ..
 +    0 -rw-r-----   1 flectra flectra        0 19 sept. 21:12 flectra-server.log
 +24924 -rw-r--r--   1 flectra flectra 25520972 19 sept. 21:12 flectra-server.log.1
 +[root@tchana ~]#
 +</file>
 +
 +===== Désinstallation des compilateurs gcc et cpp =====
 +
 +{{Images_Cahier-101-03-008.png?25}} Le compilateur ''gcc'' installé sur un serveur est un risque majeur de sécurité, car un pirate pourrait s'en servir pour compiler un logiciel malveillant.\\ 
 +{{Images_Cahier-101-03-004.png?25}} Il faut désinstaller ''gcc'', et plus tard, si nous en avions encore besoin, il suffirait de l'installer à nouveau.\\ 
 +Le paquet ''gcc'' est toujours accompagné de son inséparable collègue ''cpp''.
 +
 +Nous forçons la désinstallation de ces deux //RPM//.
 +
 +<file>
 +[root@tchana ~]# rpm -e --nodeps gcc cpp
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie ''cpp''.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep cpp
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie ''gcc''.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep gcc
 +
 +libgcc-4.8.5-36.el7_6.2.x86_64
 +[root@tchana ~]#
 +</file>
 +
 +Les compilateurs ''gcc'' et ''cpp'' ont été supprimés.\\ 
 +{{Images_Cahier-101-03-006.png?25}} La librairie <wrap em>libgcc</wrap> est utilisée par beaucoup de logiciels; il ne faut absolument pas la désinstaller, car un de ses utilisateurs le plus important est le programme de sauvegarde //NethServer//.
 +
 +===== 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.
 +
 +<WRAP centeralign>**L'installation est réussie. Tout fonctionne correctement.**</WRAP>
 +
 +====== Flectra - Redirection sécurisée ======
 +
 +===== Description =====
 +
 +Un grand merci à //Markus Neuberger//, ambassadeur de NethServer.
 +
 +<WRAP column 46%>
 +{{Images_Cahier-101-03-006.png?25}} Si nous n'avons aucun site Web et que nous spécifions seulement **[[http://www.micronator-dev.org/|http://www.micronator-dev.org/]]** ou **[[http://10.10.10.75/|http://10.10.10.75]]** sans spécifier le port //7073//, nous verrions s'afficher le contenu du site Web par défaut du //Serveur NethServer//.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-011.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Contenu du répertoire ''/var/www/html/''.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/www/html/
 +
 +total 0
 +0 drwxr-xr-x. 3 root root 25 24 avril 09:46 .
 +0 drwxr-xr-x. 4 root root 33 24 avril 09:46 ..
 +0 drwxr-xr-x. 3 root root 28  4 janv. 09:16 .well-known
 +[root@tchana ~]#
 +</file>
 +
 +==== Serveur branché directement à l'Internet ====
 +
 +Voir la section 
 +[[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver#Certificat Let's Encrypt]]
 + du **Cahier-05**: //VDSL, FQDN, Internet et NethServer// du "Cours NethServer-101".
 +
 +===== Préparation pour la demande d'un certificat Let's Encrypt =====
 +
 +<WRAP column 22%>
 +Avant d'installer un certificat //Let's Encrypt// selon la section 
 +[[nethserver_101_cahier_04_local_certificat_let_encrypt#Certificat pour un domaine LOCAL]]
 + du **Cahier-04**: //NethServer LOCAL & Certificat Let's Encrypt// du "Cours NethServer-101", il faut ajouter les //CNAME// //flectra//, //www.flectra//, et //mail.flectra// chez [[https://www.cloudflare.com/|https://www.cloudflare.com/]].
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-012.png?700 }}|
 +
 +|{{ Images_Cahier-201-07-013.png?700 }}|
 +
 +|{{ Images_Cahier-201-07-014.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 22%>
 +On vérifie le résultat.
 +
 +On se déconnecte de //Cloudflare.com//.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-015.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Création d'entrées DNS pour Flectra ====
 +
 +<WRAP column 22%>
 +**Configuration -> DNS ->** onglet  **Hôtes -> CRÉER NOUVEAU**.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-016-A.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 37%>
 +<nowiki>-</nowiki> On entre le informations demandées.\\ 
 +<nowiki>-</nowiki> **SOUMETTRE**.
 +|{{ Images_Cahier-201-07-016.png?500 }}|
 +</WRAP>
 +<WRAP column 55%>
 +\\ 
 +On vérifie le résultat.
 +|{{ Images_Cahier-201-07-017.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> **Alias du serveur**.\\ 
 +<nowiki>-</nowiki> **CRÉER NOUVEAU**.
 +|{{ Images_Cahier-201-07-018.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> On entre les informations demandées.\\ 
 +<nowiki>-</nowiki> **SOUMETTRE**.
 +|{{ Images_Cahier-201-07-019.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +On vérifie le résultat.
 +|{{ Images_Cahier-201-07-020.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== 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 de la liste, c.-à-d. //micronator-dev.org// //(voir plus loin, __Émis pour__.)//
 +
 +<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 flectra.micronator-dev.org                                 \
 +                      -d www.flectra.micronator-dev.org                             \
 +                      -d mail.flectra.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
 +
 +...
 +[jeu. sept. 19 21:50:25 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem
 +[jeu. sept. 19 21:50:25 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem
 +[jeu. sept. 19 21:50:25 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update
 +[jeu. sept. 19 21:50:28 EDT 2019] Reload success
 +[root@tchana ~]#
 +</file>
 +
 +La demande d'un certificat de test est réussie.
 +
 +===== 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 flectra.micronator-dev.org                                 \
 +                      -d www.flectra.micronator-dev.org                             \
 +                      -d mail.flectra.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
 +
 +...
 +[jeu. sept. 19 22:00:57 EDT 2019] Installing cert to:/etc/pki/tls/certs/cert.pem
 +[jeu. sept. 19 22:00:57 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem
 +[jeu. sept. 19 22:00:57 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem
 +[jeu. sept. 19 22:00:57 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update
 +[jeu. sept. 19 22:01:00 EDT 2019] Reload success
 +[root@tchana ~]#
 +</file>
 +
 +La demande d'un certificat officiel a été couronné de succès.
 +
 +Vérification du certificat //Let's Encrypt// à l'aide de //Firefox// en se rendant à **https://www.micronator-dev.org**.
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Le cadenas est __vert__.\\ 
 +<nowiki>-</nowiki> On clique l'**icône <wrap em>></wrap>**.
 +|{{ Images_Cahier-201-07-021.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Plus d'informations**.
 +|{{ Images_Cahier-201-07-022.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Onglet **Sécurité**.\\ 
 +<nowiki>-</nowiki> Afficher le certificat.
 +|{{ Images_Cahier-201-07-023.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +<nowiki>-</nowiki> Onglet **Général**.\\ 
 +<nowiki>-</nowiki> **//Émis pour -> micronator-dev.org//** //(le premier domai­ne de la liste, lors de la demande)//.\\ 
 +<nowiki>-</nowiki> **//Émis par -> Let's Encrypt Authority X3//**.
 +|{{ Images_Cahier-201-07-024.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> Onglet **Détails**.\\ 
 +<nowiki>-</nowiki> **Nom alternatif du sujet du certificat**.\\ 
 +<nowiki>-</nowiki> Tous les //CNAME// sont présents.\\ 
 +<nowiki>-</nowiki> Fermer toutes les fenêtres.
 +|{{ Images_Cahier-201-07-025.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +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 pour //Flectra// 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 //Flectra// LOCAL.
 +
 +{{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 flectra//__ chez le régistraire du domaine.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-026.png?400 }}|
 +</WRAP>
 +<WRAP clear></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 à //Flectra// vers le bon endroit.
 +
 +<WRAP column 22%>
 +==== Installation ====
 +
 +**Administration -> Gestionnaire des logiciels ->** onglet **Disponible ->** cocher **Proxy inverse -> AJOUTER**.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-027.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +\\ 
 +**APPLIQUER LES CHAN­GE­MENTS**.
 +|{{ Images_Cahier-201-07-028.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Recharger la page**.
 +|{{ Images_Cahier-201-07-029.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Le nouveau menu //Proxy inverse// est disponible.
 +|{{ Images_Cahier-201-07-030.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Configuration en mandataire inversé =====
 +
 +<WRAP column 46%>
 +On configure le //Serveur NethServer// en tant que mandataire inversé pour **www.flectra.micronator-dev.org**.
 +
 +**Passerelle -> Proxy inverse ->** onglet **Hôtes virtuels -> CRÉER NOUVEAU**.
 +{{ Images_Cahier-201-07-031-D.png?200 }}
 +
 +On entre les informations demandées.
 +
 +**SOUMETTRE**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-031-B.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 22%>
 +On vérifie le résultat.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-031-C.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.flectra.micronator-dev.org**.
 +
 +<WRAP column 62%>
 +{{Images_icone-201-003_Note.png?25}} Si on utilise seulement le protocole <nowiki>http://...</nowiki>, il sera transformé en http<wrap em>s</wrap>:..., car lors de la configuration à l'onglet **//Hôtes virtuels//**, nous avons coché **//Nécessite une connexion SSL chiffrée//**.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-07-030-A.png?300 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Le cadenas est __vert__.\\ 
 +<nowiki>-</nowiki> On se connecte.
 +|{{ Images_Cahier-201-07-031.png?400 }}|
 +{{Images_icone-201-003_Note.png?25}} Le cadenas est toujours __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//.
 +</WRAP>
 +<WRAP column 62%>
 +\\ 
 +La page d'accueil de //Flectra// s'affiche et le cadenas est toujours __vert__.
 +|{{ Images_Cahier-201-07-032.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Messagerie électronique =====
 +
 +On configure la messagerie électronique pour le domaine //flectra.micronator-dev.org//.
 +
 +**Configuration -> Messagerie électronique ->** onglet **Domaines -> CRÉER NOUVEAU ->** on entre les informations demandées **-> SOUMETTRE**.
 +
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-033.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-034.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 22%>
 +On vérifie le résultat.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-035.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +Pour accéder à //Webmail// de ce domaine,
 +
 +<WRAP centeralign>
 +**https://mail.flectra.micronator-dev.org/webmail**,\\ 
 +ou\\ 
 +**https://flectra.micronator-dev.org/webmail/**,\\ 
 +ou\\ 
 +**https://www.mail.flectra.micronator-dev.org/webmail/**.
 +</WRAP>
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-036.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.
 +\\ 
 +
 +====== Flectra - Post-scriptum ======
 +
 +===== Vérification du démarrages des services =====
 +
 +==== PostgreSQL ====
 +
 +On vérifie son statut.
 +
 +<file>
 +[root@tchana ~]# systemctl status postgresql-11
 +
 +● postgresql-11.service - PostgreSQL 11 database server
 +   Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled)
 +   Active: active (running) since jeu. 2019-09-19 21:54:51 EDT; 46min ago
 +     Docs: https://www.postgresql.org/docs/11/static/
 + Main PID: 3416 (postmaster)
 +   CGroup: /system.slice/postgresql-11.service
 +           ├─ 3416 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
 +           ├─ 3909 postgres: logger
 +           ├─ 3992 postgres: checkpointer
 +           ├─ 3993 postgres: background writer
 +           ├─ 3994 postgres: walwriter
 +           ├─ 3995 postgres: autovacuum launcher
 +           ├─ 3996 postgres: stats collector
 +           ├─ 3997 postgres: logical replication launcher
 +           ├─10788 postgres: flectra Flectra160 127.0.0.1(37594) idle
 +           ├─10790 postgres: flectra Flectra160 127.0.0.1(37596) idle
 +           ├─10800 postgres: flectra Flectra160 127.0.0.1(37600) idle
 +           └─10801 postgres: flectra Flectra160 127.0.0.1(37602) idle
 +
 +sept. 19 21:54:37 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database ....
 +sept. 19 21:54:46 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:46.147 EDT…32
 +sept. 19 21:54:46 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:46.466 EDT… »
 +sept. 19 21:54:47 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:47.291 EDT… »
 +sept. 19 21:54:48 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:48.726 EDT…es
 +sept. 19 21:54:48 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:48.726 EDT…».
 +sept. 19 21:54:51 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database s....
 +Hint: Some lines were ellipsized, use -l to show in full.
 +[root@tchana ~]#
 +</file>
 +
 +==== Flectra ====
 +
 +On vérifie son statut.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: active (running) since jeu. 2019-09-19 21:54:51 EDT; 47min ago
 + Main PID: 4014 (scl)
 +   CGroup: /system.slice/flectra.service
 +           ├─4014 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python...
 +           ├─4026 /bin/bash /var/tmp/sclp9x8ET
 +           └─4051 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ...
 +
 +sept. 19 21:54:51 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +===== Administration de Flectra =====
 +
 +Pour administrer //Flectra//, il suffit de se connecter avec le justificatif choisi lors de la 
 +[[nethserver_201_cahier_07_flectra#Finalisation de l'installation]]
 +.
 +
 +● On se rend à: **https://www.flectra.micronator-dev.org**.\\ 
 +● On peut aussi utiliser **http://www.flectra.micronator-dev.org** qui sera transformé en **http<wrap em>s</wrap>...**
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Le cadenas est __vert__.\\ 
 +<nowiki>-</nowiki> On se connecte.
 +|{{ Images_Cahier-201-07-037.png?500 }}|
 +</WRAP>
 +<WRAP column 62%>
 +\\ 
 +La page d'accueil de //Flectra// s'affiche et le cadenas est toujours __vert__.
 +|{{ Images_Cahier-201-07-037.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Fichiers journaux =====
 +
 +==== PostgreSQL ====
 +
 +Le fichier du journal de //PostgreSQL// se trouve dans le répertoire ''/var/lib/pgsql/11/data/log/''.
 +
 +==== Flectra ====
 +
 +Afin de nous assurer que tout a démarré correctement, on consulte les journaux.
 +
 +  - À l'aide de l'interface Web:  **Administration -> Logs -> /var/log/flectra/flectra-server.log**.
 +  - Directement dans les fichiers ''/var/log/messages'' et ''/var/log/flectra/flectra-server.log''.
 +
 +==== Fichier /var/log/flectra/flectra-server.log ====
 +
 +On peut aussi utiliser la console du serveur pour vérifier le journal de //Flectra// afin de s'assurer qu'il n'existe pas de modules manquants.
 +
 +<file>
 +[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available"
 +
 +[root@tchana ~]#
 +</file>
 +
 +S'il y avait un module manquant, il apparaîtrait ici.
 +
 +=== Installation d'un module manquant ===
 +
 +__Exemple__ si le module //phonenumbers// manquerait.
 +
 +On vérifie le journal.
 +
 +<file>
 +[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available"
 +
 +2019-05-29 17:04:13,742 4077 INFO Flectra flectra.addons.sms.wizard.send_sms: The `phonenumbers` Python module is not available. Phone number validation will be skipped. Try `pip3 install phonenumbers` to install it.
 +[root@tchana ~]#
 +</file>
 +
 +On se substitue à l'utilisateur **__flectra__**.
 +
 +<file>
 +[root@tchana ~]# su - flectra
 +
 +Dernière connexion : mercredi 22 mai 2019 à 00:12:34 EDT sur pts/1
 +[flectra@tchana ~]$
 +</file>
 +
 +On active //Python36//.
 +
 +<file>
 +[flectra@tchana ~]$ scl enable rh-python36 bash
 +
 +[flectra@tchana ~]$
 +</file>
 +
 +On s'assure que nous sommes dans le répertoire personnel de l'utilisateur **__flectra__**.
 +
 +<file>
 +[flectra@tchana ~]$ pwd
 +
 +/opt/flectra
 +[flectra@tchana ~]$
 +</file>
 +
 +On active l'environnement virtuel //flectra-venv//.
 +
 +<file>
 +[flectra@tchana ~]$ source flectra-venv/bin/activate
 +
 +(flectra-venv) [flectra@tchana ~]$
 +</file>
 +
 +On installe le module //phonenumbers//.
 +
 +<file>
 +(flectra-venv) [flectra@tchana ~]$ pip3 install phonenumbers
 +
 +Collecting phonenumbers
 +  Downloading https://files.pythonhosted.org/packages/00/13/118a79e417f06a23473d28de65db95f3a14a4548cf39cdf407f8ffb335a1/phonenumbers-8.10.12-py2.py3-none-any.whl (2.6MB)
 +    100% |████████████████████████████████| 2.6MB 359kB/s
 +Installing collected packages: phonenumbers
 +Successfully installed phonenumbers-8.10.12
 +You are using pip version 9.0.1, however version 19.1.1 is available.
 +You should consider upgrading via the 'pip install --upgrade pip' command.
 +(flectra-venv) [flectra@tchana ~]$
 +</file>
 +
 +On désactive l'environnement virtuel et on quitte.
 +
 +<file>
 +(flectra-venv) [flectra@tchana ~]$ deactivate && exit
 +
 +exit
 +[flectra@tchana ~]$
 +</file>
 +
 +On vérifie qui nous sommes.
 +
 +<file>
 +[flectra@tchana ~]$ whoami
 +
 +flectra
 +[flectra@tchana ~]$
 +</file>
 +
 +On quitte la substitution d'utilisateur.
 +
 +<file>
 +[flectra@tchana ~]$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie qui nous sommes.
 +
 +<file>
 +[root@tchana ~]# whoami
 +
 +root
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Le module manquant a été installé.
 +
 +On redémarre //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le journal.
 +
 +<file>
 +[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available"
 +
 +2019-05-29 17:04:13,742 4077 INFO Flectra flectra.addons.sms.wizard.send_sms: The `phonenumbers` Python module is not available. Phone number validation will be skipped. Try `pip3 install phonenumbers` to install it.
 +[root@tchana ~]#
 +</file>
 +
 +Il n'existe __aucune nouvelle entrée__ indiquant un module manquant.
 +
 +On vérifie pour des erreurs.
 +
 +<file>
 +[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep -i error
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie pour des avertissements.
 +
 +<file>
 +[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep -i warning
 +
 +2019-05-29 16:35:20,393 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login'
 +2019-05-29 16:35:36,662 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login'
 +2019-05-29 16:35:58,848 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login'
 +2019-05-29 16:36:10,038 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login'
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} On peut ignorer ces avertissements car il se produisent si vous laissez la page '**/web/login**' ouverte trop longtemps: le jeton a une durée de vie limitée. Par conséquent, si vous attendez trop longtemps, la connexion peut échouer. Si cela se produit, rafraîchir la page '**/web/login**'.
 +
 +===== Changements de mots de passe =====
 +
 +==== Utilisateur flectra de PostgreSQL ====
 +
 +Vous pouvez trouver le mot de passe de l'utilisateur **__flectra__** de //PostgreSQL// //(l'utilisateur qui gère votre base de données Flectra)// dans le fichier de configuration ''/etc/flectra-server.conf''.
 +
 +<file>
 +[root@tchana ~]# cat /etc/flectra-server.conf | grep db_password
 +
 +db_password = fghtbgh
 +[root@tchana ~]#
 +</file>
 +
 +Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe de l'utilisateur **__flectra__** de //PostgreSQL//:
 +
 +  - à la console du //Serveur NethServer//,
 +  - à la console de //PostgreSQL// et \\ 
 +  - dans le fichier ''/etc/flectra-server.conf''.
 +
 +=== À la console du Serveur NethServer ===
 +
 +On change le mot de passe Linux de l'utilisateur **__flectra__**.
 +
 +<file>
 +[root@tchana ~]# passwd flectra
 +
 +Changement de mot de passe pour l'utilisateur flectra.
 +Nouveau mot de passe : nouveau-mot-de-passe-pour-flectra
 +MOT DE PASSE INCORRECT : Le mot de passe comporte moins de 8 caractères
 +Retapez le nouveau mot de passe : nouveau-mot-de-passe-pour-flectra
 +passwd : mise à jour réussie de tous les jetons d'authentification.
 +[root@tchana ~]#
 +</file>
 +
 +L'avertissement <nowiki>"</nowiki>//MOT DE PASSE INCORRECT : Le mot de passe comporte moins de 8 caractères//<nowiki>"</nowiki> est normal dans notre cas, car nous utilisons le mot de passe du fameux //Général Toto// qui n'a que **7** caractères.\\ 
 +{{Images_Cahier-101-03-008.png?25}} Il ne faut pas prendre notre exemple pour un serveur en production, mais __un mot de passe robuste__.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Dans l'interface Web de //NethServer//, on n'exige que **7** caractères, mais le mot de passe doit contenir: au moins 1 chiffre, 1 caractère majuscule, 1 caractère minuscule, 1 caractère spécial, 5 caractères différents, ne pas être présent dans les dictionnaires de mots courants et être différent du nom d'utilisateur. De plus, il est impossible de répéter des motifs formés de 3 caractères ou plus //(par exemple, le mot de passe As__1.$__AS__1.$__ n'est pas valide)//.
 +
 +=== A la console de PostgreSQL ===
 +
 +Il faut se substituer au super-utilisateur **__postgres__**, puis ce dernier change le mot de passe de l'utilisateur **__flectra__** de //PostgreSQL//.
 +
 +À la console du serveur, on se substitue à l'utilisateur **__postgres__**.
 +
 +<file>
 +[root@tchana ~]# su - postgres
 +
 +-bash-4.2$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +-bash-4.2$ whoami
 +
 +postgres
 +-bash-4.2$
 +</file>
 +
 +L'utilisateur **__postgres__** entre dans la console //PostgreSQL//.
 +
 +<file>
 +-bash-4.2$ psql
 +
 +psql (11.3))
 +Saisissez « help » pour l'aide.
 +
 +postgres=#
 +</file>
 +
 +On change le mot de passe de l'utilisateur **__flectra__** de //PostgreSQL//.
 +
 +<file>
 +postgres=# ALTER ROLE flectra WITH PASSWORD 'nouveau-mot-de-passe';
 +
 +ALTER ROLE
 +postgres=#
 +</file>
 +
 +On quitte la console //PostgreSQL//.
 +
 +<file>
 +postgres=# \q
 +
 +-bash-4.2$
 +</file>
 +
 +On retourne à l'utilisateur **__root__**.
 +
 +<file>
 +-bash-4.2$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# whoami
 +
 +root
 +[root@tchana ~]#
 +</file>
 +
 +=== Dans le fichier /etc/flectra-server.conf ===
 +
 +{{Images_Cahier-101-03-006.png?25}} <wrap hi>IMPORTANT</wrap>. Le changement de mot de passe de l'utilisateur **__flectra__** dans //PostgreSQL// ne modifie pas celui dans le fichier ''/etc/flectra-server.conf''. Il faut éditer ce fichier et changer le mot de passe sur la ligne: ''db_password = nouveau-mot-de-passe''.
 +
 +On édite le fichier ''/etc/flectra-server.conf'' et on change le mot de passe de l'utilisateur **__flectra__** de //PostgreSQL//.
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/flectra-server.conf | grep db_password
 +
 +db_password = fghtbgh
 +[root@tchana ~]#
 +</file>
 +
 +=== Redémarrage de PostgreSQL ===
 +
 +On redémarre le service //PostgreSQL//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart postgresql-11
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# systemctl status postgresql-11
 +
 +● postgresql-11.service - PostgreSQL 11 database server
 +   Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled)
 +   Active: active (running) since ven. 2019-09-20 11:35:04 EDT; 26s ago
 +     Docs: https://www.postgresql.org/docs/11/static/
 +  Process: 14467 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 + Main PID: 14473 (postmaster)
 +   CGroup: /system.slice/postgresql-11.service
 +           ├─14473 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
 +           ├─14476 postgres: logger
 +           ├─14478 postgres: checkpointer
 +           ├─14479 postgres: background writer
 +           ├─14480 postgres: walwriter
 +           ├─14481 postgres: autovacuum launcher
 +           ├─14482 postgres: stats collector
 +           ├─14483 postgres: logical replication launcher
 +           └─14493 postgres: flectra Flectra 127.0.0.1(46610) idle
 +
 +sept. 20 11:35:04 tchana.micronator-dev.org systemd[1]: Stopped PostgreSQL 11 database s....
 +sept. 20 11:35:04 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database ....
 +sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.710 ED…32
 +sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.713 ED… »
 +sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.748 ED… »
 +sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.762 ED…es
 +sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.762 ED…».
 +sept. 20 11:35:04 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database s....
 +Hint: Some lines were ellipsized, use -l to show in full.
 +[root@tchana ~]#
 +</file>
 +
 +=== Redémarrage de Flectra ===
 +
 +On redémarre le service Flectra.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: active (running) since ven. 2019-09-20 11:36:23 EDT; 15s ago
 + Main PID: 14599 (scl)
 +   CGroup: /system.slice/flectra.service
 +           ├─14599 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/pytho...
 +           ├─14600 /bin/bash /var/tmp/sclihq4LU
 +           └─14603 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin...
 +
 +sept. 20 11:36:23 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Après un changement de mot de passe, on supprime l'historique du fureteur Internet, on se reconnecte à //Flectra// et on vérifie quelques pages.
 +
 +==== Super-utilisateur de PostgreSQL ====
 +
 +Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe du super utilisateur //PostgreSQL// //(**__postgres__**)//.
 +
 +Vous pouvez trouver le mot de passe du super utilisateur //PostgreSQL// //(**__postgres__**)// dans le fichier de configuration ''/etc/flectra-server.conf''.
 +
 +<file>
 +[root@tchana ~]# cat /etc/flectra-server.conf | grep admin_passwd
 +
 +admin_passwd = fghtbgh
 +[root@tchana ~]#
 +</file>
 +
 +Si on veut changer le mot de passe du super utilisateur //PostgreSQL// //(**__postgres__**)//,  il faut aussi le changer:
 +
 +  - à la console du //Serveur NethServer//,
 +  - à la console de //PostgreSQL// et
 +  - dans le fichier ''/etc/flectra-server.conf''.
 +
 +=== À la console du Serveur NethServer ===
 +
 +On vérifie si nous sommes **__root__**.
 +
 +<file>
 +root@tchana ~]# whoami
 +
 +root
 +[root@tchana ~]#
 +</file>
 +
 +On change le mot de passe Linux du super-utilisateur **__postgres__**.
 +
 +<file>
 +[root@tchana ~]# passwd postgres
 +
 +Changement de mot de passe pour l'utilisateur postgres.
 +Entrez le nouveau mot de passe UNIX : nouveau-mot-de-passe-pour-postgres
 +Retapez le nouveau mot de passe UNIX : nouveau-mot-de-passe-pour-postgres
 +passwd : mise à jour réussie de tous les jetons d'authentification.
 +[root@tchana ~]#
 +</file>
 +
 +=== À la console de PostgreSQL ===
 +
 +On se substitue au super-utilisateur **__postgres__**.
 +
 +<file>
 +[root@tchana ~]# su - postgres
 +
 +Dernière connexion : dimanche 19 mai 2019 à 13:14:13 EDT sur pts/0
 +-bash-4.2$
 +</file>
 +
 +On ouvre la console //PostgreSQL//.
 +
 +<file>
 +-bash-4.2$ psql
 +
 +psql (11.3)
 +Saisissez « help » pour l'aide.
 +
 +postgres=#
 +</file>
 +
 +On change le mot de passe du super-utilisateur **__postgres__**.
 +
 +<file>
 +postgres=# \password
 +
 +Saisissez le nouveau mot de passe : nouveau-mot-de-passe-du-super-utilisateur
 +Saisissez-le à nouveau : nouveau-mot-de-passe-du-super-utilisateur
 +postgres=#
 +</file>
 +
 +On sort de la console //PostgreSQL//.
 +
 +<file>
 +postgres=# \q
 +
 +-bash-4.2$
 +</file>
 +
 +On retourne à l'utilisateur **__root__**.
 +
 +<file>
 +-bash-4.2$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +=== Dans le fichier /etc/flectra-server.conf ===
 +
 +On édite le fichier ''/etc/flectra-server.conf'' et on change le mot de passe du super-utilisateur de //PostgreSQL//.
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/flectra-server.conf | grep admin_passwd
 +
 +admin_passwd = fghtbgh
 +[root@tchana ~]#
 +</file>
 +
 +=== Redémarrage de PostgreSQL ===
 +
 +On redémarre //PostgreSQL//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart postgresql-11
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# systemctl status postgresql-11
 +
 +● postgresql-11.service - PostgreSQL 11 database server
 +   Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled)
 +   Active: active (running) since ven. 2019-09-20 11:42:07 EDT; 7s ago
 +     Docs: https://www.postgresql.org/docs/11/static/
 +  Process: 14956 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 + Main PID: 14961 (postmaster)
 +   CGroup: /system.slice/postgresql-11.service
 +           ├─14961 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
 +           ├─14964 postgres: logger
 +           ├─14966 postgres: checkpointer
 +           ├─14967 postgres: background writer
 +           ├─14968 postgres: walwriter
 +           ├─14969 postgres: autovacuum launcher
 +           ├─14970 postgres: stats collector
 +           ├─14971 postgres: logical replication launcher
 +           └─14981 postgres: flectra Flectra 127.0.0.1(46620) idle
 +
 +sept. 20 11:42:07 tchana.micronator-dev.org systemd[1]: Stopped PostgreSQL 11 database s....
 +sept. 20 11:42:07 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database ....
 +sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.496 ED…32
 +sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.500 ED… »
 +sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.507 ED… »
 +sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.521 ED…es
 +sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.521 ED…».
 +sept. 20 11:42:07 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database s....
 +Hint: Some lines were ellipsized, use -l to show in full.
 +[root@tchana ~]#
 +</file>
 +
 +=== Redémarrage de Flectra ===
 +
 +On redémarre le service //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: active (running) since ven. 2019-09-20 11:42:54 EDT; 8s ago
 + Main PID: 15032 (scl)
 +   CGroup: /system.slice/flectra.service
 +           ├─15032 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/pytho...
 +           ├─15033 /bin/bash /var/tmp/sclqqf7xD
 +           └─15036 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin...
 +
 +sept. 20 11:42:54 tchana.micronator-dev.org systemd[1]: Stopped Flectra.
 +sept. 20 11:42:54 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Après un changement de mot de passe, on supprime l'historique du fureteur Internet, on se reconnecte à //Flectra// et on vérifie quelques pages.
 +
 +==== Administrateur Flectra ====
 +
 +Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe de l'administrateur de //Flectra// en se connectant avec l'adresse courriel/mot de passe de l'administrateur utilisé pour la création de la base de données, lors de la finalisation de l'installation de //Flectra// au paragraphe 
 +[[nethserver_201_cahier_07_flectra#Création d'une nouvelle base de données]]
 +.
 +
 +<WRAP column 20%>
 +|{{ Images_Cahier-201-07-039.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-07-040.png?400 }}|
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-201-07-041.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On se déconnecte de //Flectra// et on se reconnecte avec le nouveau mot de passe.
 +
 +<WRAP column 30%>
 +On se connecte.
 +|{{ Images_Cahier-201-07-042.png?400 }}|
 +</WRAP>
 +<WRAP column 62%>
 +La page d'accueil de Flectra s'affiche.
 +|{{ Images_Cahier-201-07-043.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Le nouveau mot de passe de l'administrateur de //Flectra// est fonctionnel.
 +
 +===== Logo de la société =====
 +
 +Il est toujours intéressant d'avoir le logo de notre société sur la page d'accueil et sur celle de connexion.
 +
 +<WRAP column 30%>
 +\\ 
 +**Configuration -> Sociétés -> Modifier**.
 +|{{ Images_Cahier-201-07-044.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +On survole avec la souris pour faire apparaître le **crayon** qu'on clique.
 +|{{ Images_Cahier-201-07-045.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +On choisit l'image de notre **logo -> Ouvrir**.
 +|{{ Images_Cahier-201-07-046.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +On entre le nom de notre société **-> Sauvegarder**.
 +|{{ Images_Cahier-201-07-047.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +On rafraîchie la page et notre logo apparaît.
 +|{{ Images_Cahier-201-07-048.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Notre logo s'affichera aussi sur la page de connexion.
 +|{{ Images_Cahier-201-07-049.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +====== Sauvegarde/restauration manuelle de la BD ======
 +
 +===== Description =====
 +
 +{{Images_Cahier-101-03-004.png?25}} Nous créons un script //Bash// qui générera, dans le répertoire ''/var/lib/pgsql/sauvegarde'', un fichier __dump__ de sauvegarde de la //BD// de //PostgreSQL// du site //Flectra//. Le script est alors sécurisé et seul l'utilisateur **__root__** pourra le lancer.
 +
 +Ce script sera lancé par une tâche ''cron'' qui s'exécutera à //02h00//, juste avant la sauvegarde habituelle des données du //Serveur NethServer// et ainsi cette dernière inclura la sauvegarde quotidienne de //PostgreSQL//.
 +
 +===== Répertoire de sauvegarde =====
 +
 +Tout ce qui a trait à la sauvegarde de la //BD// //Flectra// de //PostgreSQL// se trouvera dans un répertoire dédié à cette fin uniquement: ''/var/lib/pgsql/sauvegarde/''.
 +
 +  * Le propriétaire et le groupe du répertoire seront **postgres:postgres**.
 +  * Le fichier de la nouvelle sauvegarde sera:
 +    * généré et écrasera la sauvegarde précédente et
 +    * sécurisé par le script en changeant le propriétaire et le groupe pour **root:root** et en donnant des droits à **__root__** seulement.
 +\\
 +
 +On crée le répertoire.
 +
 +<file>
 +[root@tchana ~]# mkdir /var/lib/pgsql/sauvegarde
 +
 +[root@tchana ~]#
 +</file>
 +
 +On change le propriétaire et le groupe.
 +
 +<file>
 +[root@tchana ~]# chown postgres:postgres /var/lib/pgsql/sauvegarde
 +
 +[root@tchana ~]#
 +</file>
 +
 +On ajuste tous les droits afin que seul l'utilisateur **__postgres__** puisse y accéder.
 +
 +<file>
 +[root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -alsd /var/lib/pgsql/sauvegarde
 +
 +0 drwx------ 2 postgres postgres 6 20 sept. 14:46 /var/lib/pgsql/sauvegarde
 +[root@tchana ~]#
 +</file>
 +
 +===== Script de sauvegarde PostgreSQL =====
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh <<'EOT'
 +#!/bin/sh
 +
 +# Script pour générer une sauvegarde de la BD PostgreSQL de Flectra.
 +# Michel-André 2018-09-17_11h16 / modifié le 19 septembre pour Flectra
 +
 +# vars
 +TEMPS_DE_PAUSE=10
 +REP_SAUVEGARDE=/var/lib/pgsql/sauvegarde
 +NOM_BD_FLECTRA=Flectra
 +FORMAT_FICHIER=dump
 +
 +# On vérifie que flectra-server est en cours d'exécution.
 +if (!(/usr/bin/systemctl status flectra | grep "active (running)")); then
 +    # Message au système et à la console
 +    /bin/logger "********************  flectra-server ********************  "
 +    /bin/logger "flectra-server N'EST PAS en cours d'execution..."
 +    /bin/echo "flectra-server N'EST PAS en cours d'execution..."
 +
 +    # On relance server-flectra pour la sauvegarde de la BD $NOM_BD_FLECTRA
 +    /usr/bin/systemctl start flectra
 +    /bin/logger "flectra-server est relancé"
 +    /bin/logger "               *****  flectra-server *****"
 +    /bin/echo "flectra-server est relancé"
 +
 +    # Message au système et à la console
 +    /bin/logger "Pause de $TEMPS_DE_PAUSE secondes pour le démarrage de Flectra"
 +    /bin/echo "Pause de $TEMPS_DE_PAUSE secondes pour le démarrage de Flectra"
 +
 +    # On fait une pause de $TEMPS_DE_PAUSE secondes pour le démarrage de Flectra.
 +    /bin/sleep $TEMPS_DE_PAUSE
 +fi
 +
 +/bin/logger "********************  flectra-server ********************  "
 +/bin/logger "flectra-server est en cours d'execution..."
 +/bin/echo "flectra-server est en cours d'execution..."
 +
 +# On sauvegarde la BD dans $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER.
 +# La sauvegarde du jour écrase la sauvegarde du jour précédent.
 +
 +# On sauvegarde la BD
 +su - postgres -c '/usr/bin/pg_dumpall -c' > $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER
 +
 +# On sécurise le fichier de $NOM_BD_FLECTRA.$FORMAT_FICHIER.
 +/bin/chown root:root $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER > /dev/null 2>&1
 +/bin/chmod 700 $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER > /dev/null 2>&1
 +
 +# On écrit une entrée dans le journal du système.
 +/bin/logger "La sauvegarde de la BD $NOM_BD_FLECTRA est dans: $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER"
 +/bin/logger "********************  flectra-server ********************  "
 +/bin/echo "La sauvegarde de la BD $NOM_BD_FLECTRA est dans: $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER"
 +exit 1
 +
 +EOT
 +
 +
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Le paramètre <wrap em>-c</wrap> //(--clean)// de la commande ''pg_dumpall'' indique d'inclure les commandes SQL <wrap em>DROP</wrap> pour nettoyer //(supprimer)// les bases de données avant de les recréer. La commande <wrap em>DROP</wrap> pour les rôles et les espaces de table //(tablespaces)// est également ajoutée.
 +
 +On vérifie les premières lignes du fichier.
 +
 +<file>
 +[root@tchana ~]# head -n7 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +#!/bin/sh
 +
 +# Script pour générer une sauvegarde de la BD PostgreSQL de Flectra.
 +# Michel-André 2018-09-17_11h16 / modifié le 19 septembre pour Flectra
 +
 +# vars
 +TEMPS_DE_PAUSE=10
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant la ligne __#!/bin/sh__. Ci-dessus, nous en avons insérée une pour faciliter la copie de la commande.
 +
 +On sécurise le fichier en changeant le groupe et le propriétaire.
 +
 +<file>
 +[root@tchana ~]# chown root:root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +On ajuste les droits pour rendre le fichier exécutable par l'utilisateur **__root__** uniquement.
 +
 +<file>
 +[root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +4 -rwx------ 1 root root 2273 20 sept. 15:51 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +[root@tchana ~]#
 +</file>
 +
 +===== Sauvegarde =====
 +
 +==== Vérification du script de sauvegarde ====
 +
 +{{Images_Cahier-101-03-003.png?22}} On vérifie le fonctionnement de notre script de sauvegarde en simulant ce que fera ''cron''.
 +
 +<file>
 +[root@tchana ~]# /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +   Active: active (running) since ven. 2019-09-20 15:40:27 EDT; 12min ago
 +flectra-server est en cours d'execution...
 +  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 +                                 Dload  Upload   Total   Spent    Left  Speed
 +100 3604k    0 3603k  100   357  2222k    220  0:00:01  0:00:01 --:--:-- 2221k
 +La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/lib/pgsql/sauvegarde/Flectra.dump
 +
 +3604 -rwx------ 1 root root 3690361 20 sept. 15:40 /var/lib/pgsql/sauvegarde/Flectra.dump
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Comme on le voit, seul **__root__** pourra manipuler le fichier de sauvegarde.
 +
 +==== Journal du Serveur NethServer ====
 +
 +<WRAP box>
 +<file>
 +...
 +Sep 20 15:40:27 tchana root: ********************  flectra-server ********************
 +Sep 20 15:40:27 tchana root: flectra-server est en cours d'execution...
 +Sep 20 15:40:30 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +Sep 20 15:40:30 tchana root: ********************  flectra-server ********************
 +...
 +</file>
 +</WRAP>
 +
 +==== Si flectra-server n'est pas en exécution (arrêté) ====
 +
 +{{Images_Cahier-101-03-006.png?25}} Il en sera exactement de même si //flectra-server// n'est pas en exécution. Le début du script relancera //Flectra// mais à la fin, il ne l'arrêtera pas.
 +
 +=== Vérification ===
 +
 +On affiche le status de //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: active (running) since ven. 2019-09-20 15:40:27 EDT; 17min ago
 + Main PID: 3591 (scl)
 +   CGroup: /system.slice/flectra.service
 +           ├─3591 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python...
 +           ├─3595 /bin/bash /var/tmp/sclDTcOXb
 +           └─3601 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ...
 +
 +sept. 20 15:40:27 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +On arrête //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl stop flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: inactive (dead) since ven. 2019-09-20 15:58:57 EDT; 7s ago
 +  Process: 3591 ExecStart=/usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin -c /etc/flectra-server.conf (code=killed, signal=TERM)
 + Main PID: 3591 (code=killed, signal=TERM)
 +
 +sept. 20 15:40:27 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +sept. 20 15:58:56 tchana.micronator-dev.org systemd[1]: Stopping Flectra...
 +sept. 20 15:58:57 tchana.micronator-dev.org systemd[1]: Stopped Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +On relance le script de sauvegarde.
 +
 +<file>
 +[root@tchana ~]# /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +flectra-server N'EST PAS en cours d'execution...
 +flectra-server est relancé
 +Pause de 10 secondes pour le démarrage de Flectra
 +flectra-server est en cours d'execution...
 +  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 +                                 Dload  Upload   Total   Spent    Left  Speed
 +100 3604k    0 3603k  100   357  1272k    126  0:00:02  0:00:02 --:--:-- 1272k
 +La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le statut de //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: active (running) since ven. 2019-09-20 15:59:42 EDT; 1min 12s ago
 + Main PID: 4867 (scl)
 +   CGroup: /system.slice/flectra.service
 +           ├─4867 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python...
 +           ├─4869 /bin/bash /var/tmp/scl3aRQYz
 +           └─4876 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ...
 +
 +sept. 20 15:59:42 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Le script a bien démarré //Flectra//.
 +
 +On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/lib/pgsql/sauvegarde/Flectra.dump
 +
 +3604 -rwx------ 1 root root 3690361 20 sept. 15:59 /var/lib/pgsql/sauvegarde/Flectra.dump
 +[root@tchana ~]#
 +</file>
 +
 +==== Inclusion du répertoire dans la sauvegarde de NethServer ====
 +
 +On vérifie si le nom du répertoire ''/var/lib/pgsql/sauvegarde/'' 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="/var/lib/pgsql/sauvegarde/"
 +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>
 +
 +{{Images_icone-201-003_Note.png?25}} Le répertoire inclut le script ''sauvegarde-postgres.sh'' et le fichier ''Flectra.dump'' de la sauvegarde //PostgreSQL//.
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /var/lib/pgsql/sauvegarde/
 +
 +/var/lib/pgsql/sauvegarde/
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __/var/lib/pgsql/sauvegarde/__. Nous en avons insérée une afin de faciliter la copie de la commande.
 +
 +===== Tâche cron =====
 +
 +On crée une tâche //cron// qui s'exécutera quotidiennement à //02h00// //(0 2 * * *)//, car la sauvegarde régulière des données du //Serveur NethServer// est programmée pour rouler //à 03h00// et nous voulons y inclure la sauvegarde de //PostgreSQL//.
 +
 +==== Répertoire pour un gabarit personnalisé ====
 +
 +Création du répertoire.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +DIR="/etc/e-smith/templates-custom/etc/crontab"
 +for NAME in $DIR
 +do
 +if [ ! -d $NAME ]; then
 +   mkdir -p $NAME
 +   chown flectra.flectra $NAME
 +   chmod 770 $NAME
 +fi
 +done
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -alsd /etc/e-smith/templates-custom/etc/crontab
 +
 +0 drwxrwx--- 2 flectra flectra 6 20 sept. 16:04 /etc/e-smith/templates-custom/etc/crontab
 +[root@tchana ~]#
 +</file>
 +
 +==== Création de la tâche cron ====
 +
 +On crée le fichier de la tâche //cron// et on y insère son contenu. Elle s'exécutera quotidiennement à //02h00//.
 +
 +{{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/crontab/sauvegarde_postgresql <<'EOT'
 +SHELL=/bin/bash
 +MAILTO=root
 +#
 +# Tâche cron qui lance /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh afin
 +# de sauvegarder la BD de Flectra. Cette tâche cron roulera quotidiennement à 02h30.
 +
 +# Michel-André, 2018-06-18_11h27
 +
 +# ┌───────────── 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)
 +# │ │ │ │ │
 +# * * * * *  [utilisateur] commande à exécuter
 +#
 +0 2 * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +EOT
 +
 +
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} L'heure peut être choisie à votre entière discrétion.
 +
 +On vérifie le contenu du fichier de la tâche.
 +
 +<file>
 +[root@tchana ~]# cat /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +
 +SHELL=/bin/bash
 +MAILTO=root
 +#
 +# Tâche cron qui lance /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh afin
 +# de sauvegarder la BD de Flectra. Cette tâche cron roulera quotidiennement à 02h30.
 +
 +# Michel-André, 2018-06-18_11h27
 +
 +# ┌───────────── 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)
 +# │ │ │ │ │
 +# * * * * *  [utilisateur] commande à exécuter
 +#
 +0 2 * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant la ligne __SHELL=/bin/bash__. Ci-dessus, nous en avons insérée une pour faciliter la copie de la commande.
 +
 +On sécurise le fichier.
 +
 +<file>
 +[root@tchana ~]# chmod 700 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie
 +
 +<file>
 +[root@tchana ~]# ls -ls /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +
 +4 -rwx------ 1 root root 860 20 sept. 16:05 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +[root@tchana ~]#
 +</file>
 +
 +On développe le gabarit personnalisé.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le démon ''crond''.
 +
 +<file>
 +[root@tchana ~]# systemctl restart crond
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Vérification de la tâche cron ====
 +
 +On modifie l'heure de la tâche //cron// pour qu'elle soit lancée __à toutes les minutes__ afin de vérifier son exécution.
 +
 +On change l'heure de la tâche.
 +
 +<file>
 +[root@tchana ~]# sed -i 's/^0 2/\* \*/' /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +
 +#
 +* * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +On développe le gabarit personnalisé.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le démon ''crond''.
 +
 +<file>
 +[root@tchana ~]# systemctl restart crond
 +
 +[root@tchana ~]#
 +</file>
 +
 +=== Suivi ===
 +
 +On lance la commande ci-dessous pour suivre toutes les tâches //cron// et on filtre avec ''grep'' celles qui contiendront __sauvegarde__.
 +
 +<file>
 +[root@tchana ~]#  tail -F /var/log/messages | grep sauvegarde
 +
 +
 +</file>
 +
 +À toutes les minutes, on voit notre tâche s'afficher.
 +
 +<WRAP box>
 +<file>
 +...
 +Sep 20 16:08:02 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +Sep 20 16:09:04 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +Sep 20 16:10:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +...
 +</file>
 +</WRAP>
 +
 +On arrête la commande tail avec <wrap em>[CTL]</wrap> + <wrap em>[c]</wrap>.
 +
 +<file>
 +...
 +Sep 20 16:10:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +^C
 +[root@tchana ~]#
 +</file>
 +
 +=== Vérification lorsque Flectra est arrêté ===
 +
 +On arrête //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl stop flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On relance la commande ''tail''.
 +
 +<file>
 +[root@tchana ~]# tail -F /var/log/messages | grep sauvegarde
 +
 +
 +</file>
 +
 +À toutes les minutes, on voit notre tâche s'afficher.
 +
 +<file>
 +...
 +May 20 17:24:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +...
 +</file>
 +
 +On arrête la commande tail avec <wrap em>[CTL]</wrap> + <wrap em>[c]</wrap>.
 +
 +<file>
 +...
 +May 20 17:24:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
 +^C
 +[root@tchana ~]#
 +</file>
 +
 +On remet l'heure de la tâche cron à //02h00//.
 +
 +<file>
 +[root@tchana ~]# sed -i 's/\* \* \* \* \* root/0 2 \* \* \* root/'                       \
 +                        /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql
 +
 +#
 +* 2 * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +On développe le gabarit personnalisé.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le démon ''crond''.
 +
 +<file>
 +[root@tchana ~]# systemctl restart crond
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Courriel de notification ====
 +
 +L'utilisateur **__root__** //(admin)// recevra un courriel, semblable à celui ci-dessous, à la fin de la tâche //cron//.
 +
 +On se rend à l'//URL//: **https://www.micronator-dev.org/webmail** . On se logue avec l'utilisateur **__root__** et son mot de passe.
 +
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-07-050.png?500 }}|
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-07-051.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +
 +==== Inclusion du script dans la sauvegarde de NethServer ====
 +
 +On vérifie si le nom du répertoire ''/etc/e-smith/templates-custom/etc/crontab/'' 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/crontab/"
 +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 crontab
 +
 +/etc/e-smith/templates-custom/etc/crontab/
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP centeralign>**Notre tâche cron pour la sauvegarde automatique de PostgreSQL fonctionne parfaitement.**</WRAP>
 +
 +===== Suppression du logo =====
 +
 +Pour s'assurer que la restauration fonctionne correctement. on supprime notre logo que la restauration remettra en place.
 +
 +<WRAP column 30%>
 +**Configuration -> Sociétés ->** on clique le **nom de notre société**.
 +|{{ Images_Cahier-201-07-052.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Modifier**.
 +|{{ Images_Cahier-201-07-053.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +On survole le logo avec la souris pour faire apparaître la **corbeille** qu'on clique.
 +|{{ Images_Cahier-201-07-054.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> **Sauvegarder**.
 +
 +<nowiki>-</nowiki> Notre logo est disparu.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-07-055.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-07-056.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Récupération du fichier de sauvegarde =====
 +
 +On peut choisir le fichier de sauvegarde qu'on veut restaurer.
 +
 +  - ''/var/lib/pgsql/sauvegarde/Flectra.dump''.
 +  - ''Flectra.dump'' depuis une une sauvegarde //NethServer//.
 +
 +==== /var/lib/pgsql/sauvegarde/Flectra.dump ====
 +
 +La dernière sauvegarde //PostgreSQL// est présente dans le répertoire ''/var/lib/pgsql/sauvegarde/''.
 +
 +==== Flectra dump depuis une sauvegarde NethServer ====
 +
 +On peut récupérer un fichier de sauvegarde //PostgreSQL// depuis les sauvegardes //NethServer//.
 +
 +On s'assure que le fichier ''Flectra.dump'' est présent dans les sauvegardes //NethServer//.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/backup-data-list -b backup-data | grep Flectra.dump
 +
 +Fri Sep 20 16:12:14 2019 var/lib/pgsql/sauvegarde/Flectra.dump
 +[root@tchana ~]#
 +</file>
 +
 +Le fichier ''Flectra.dump'' est présent dans la dernière sauvegarde //NethServer//, mais on peut le choisir de n'importe quelle sauvegarde.
 +
 +<WRAP column 46%>
 +**Configuration -> Restaurer les données**. 
 +
 +**//Backup file//** -> On choisit la sauvegarde désirée.
 +
 +⦿ **//Restaurer les fichiers dans le chemin original//** \\ 
 +On peut choisir la destination de la récupération.
 +
 +**//Sélectionner un ou plusieurs dossiers ou fichiers à restaurer//** 
 +
 +On sélectionne le répertoire: ''/var/lib/pgsql/sauvegarde/''.
 +
 +**//Dossiers ou fichiers à restaurer//** affiche notre sélection.
 +
 +**RESTAURER**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-057.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +Le répertoire a été trouvé et restauré à sa position initiale.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-058.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/lib/pgsql/sauvegarde/Flectra.dump
 +
 +3604 -rwx------ 1 root root 3690361 20 sept. 15:59 /var/lib/pgsql/sauvegarde/Flectra.dump
 +[root@tchana ~]#
 +</file>
 +
 +Le fichier est bien celui de la sauvegarde que nous avons lancée manuellement le 20 septembre.\\ 
 +{{Images_icone-201-003_Note.png?25}} On pourrait aussi bien avoir choisi le fichier depuis n'importe quelle sauvegarde NethServer.
 +
 +===== Suppression de la base de données actuelle =====
 +
 +On vérifie si le service //Flectra// est en cours d'exécution.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra
 +
 +● flectra.service - Flectra
 +   Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled)
 +   Active: active (running) since sam. 2019-09-21 16:19:05 EDT; 1h 6min ago
 + Main PID: 5802 (scl)
 +   CGroup: /system.slice/flectra.service
 +           ├─5802 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python...
 +           ├─5807 /bin/bash /var/tmp/scl780LML
 +           └─5813 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ...
 +
 +sept. 20 16:12:01 tchana.micronator-dev.org systemd[1]: Started Flectra.
 +[root@tchana ~]#
 +</file>
 +
 +==== Arrêt de Flectra ====
 +
 +<file>
 +[root@tchana ~]# systemctl stop flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra | grep Active
 +
 +   Active: inactive (dead) since sam. 2019-09-21 17:26:26 EDT; 8s ago
 +[root@tchana ~]#
 +</file>
 +
 +==== Suppression de la BD actuelle ====
 +
 +On se substitue à l'utilisateur **__postgres__**.
 +
 +<file>
 +root@tchana ~]# su - postgres
 +
 +Dernière connexion : jeudi 19 septembre 2019 à 20:46:08 EDT sur pts/0
 +-bash-4.2$
 +</file>
 +
 +On entre dans la console //PostgreSQL//.
 +
 +<file>
 +-bash-4.2$ psql
 +
 +psql (11.5)
 +Saisissez « help » pour l'aide.
 +
 +postgres=#
 +</file>
 +
 +On affiche les //BD// présentes.
 +
 +<file>
 +postgres=#  \list
 +
 +                                  Liste des bases de données
 +    Nom    | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d'accès
 +-----------+--------------+----------+-----------------+--------------+----------------------
 + Flectra   | flectra      | UTF8     | C               | fr_FR.utf8   |
 + postgres  | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   |
 + template0 | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   | =c/postgres         +
 +                        |          |                              | postgres=CTc/postgres
 + template1 | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   | =c/postgres         +
 +                        |          |                              | postgres=CTc/postgres
 +(4 lignes)
 +
 +postgres=#
 +</file>
 +
 +La //BD// //Flectra// est présente.
 +
 +On quitte la console //PostgreSQL//.
 +
 +<file>
 +postgres=# \q
 +
 +-bash-4.2$
 +</file>
 +
 +On supprime la //BD// //Flectra//.
 +
 +<file>
 +-bash-4.2$ dropdb 'Flectra'
 +
 +-bash-4.2$
 +</file>
 +
 +On retourne dans la console// PostgreSQL// pour vérifier la suppression de la //BD//.
 +
 +<file>
 +-bash-4.2$ psql
 +
 +psql (11.5)
 +Saisissez « help » pour l'aide.
 +
 +postgres=#
 +</file>
 +
 +On affiche les //BD// présentes.
 +
 +<file>
 +postgres=#  \list
 +
 +                                  Liste des bases de données
 +    Nom    | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d'accès
 +-----------+--------------+----------+-----------------+--------------+----------------------
 + postgres  | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   |
 + template0 | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   | =c/postgres         +
 +                        |          |                              | postgres=CTc/postgres
 + template1 | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   | =c/postgres         +
 +                        |          |                              | postgres=CTc/postgres
 +(4 lignes)
 +
 +postgres=#
 +</file>
 +
 +La base de données //Flectra// n'est plus présente, elle a bien été supprimée.
 +
 +On quitte la console //PostgreSQL//.
 +
 +<file>
 +postgres=#  \q
 +
 +-bash-4.2$
 +</file>
 +
 +On revient à l'utilisateur** __root__**.
 +
 +<file>
 +-bash-4.2$ exit
 +
 +déconnexion
 +root@tchana ~]#
 +</file>
 +
 +==== Propriétaire du fichier de sauvegarde ====
 +
 +L'utilisateur **__root__** se rend dans le répertoire des sauvegardes.
 +
 +<file>
 +[root@tchana ~]# cd /var/lib/pgsql/sauvegarde/
 +
 +[root@tchana sauvegarde]#
 +</file>
 +
 +On affiche le contenu du répertoire.
 +
 +<file>
 +[root@tchana sauvegarde]# ls -als
 +
 +total 3608
 +   0 drwx------ 2 postgres postgres      56 21 sept. 21:17 .
 +   0 drwx------ 4 postgres postgres      97  7 août  18:20 ..
 +3604 -rwx------ 1 root     root     3690361 20 sept. 15:59 Flectra.dump
 +   4 -rwx------ 1 root     root        2277 21 sept. 20:37 sauvegarde-postgres.sh
 +[root@tchana sauvegarde]#
 +</file>
 +
 +On change le propriétaire du fichier de sauvegarde afin que l'utilisateur **__postgres__** puisse le lire.
 +
 +<file>
 +[root@tchana sauvegarde]# chown postgres Flectra.dump
 +
 +[root@tchana sauvegarde]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana sauvegarde]# ls -ls Flectra.dump
 +
 +3604 -rwx------ 1 postgres root 3690361 20 sept. 15:59 Flectra.dump
 +[root@tchana sauvegarde]#
 +</file>
 +
 +===== Restauration de la BD =====
 +
 +On se substitue à l'utilisateur **__postgres__**.
 +
 +<file>
 +root@tchana ~]# su - postgres
 +
 +Dernière connexion : jeudi 19 septembre 2019 à 20:56:08 EDT sur pts/0
 +-bash-4.2$
 +</file>
 +
 +L'utilisateur **__postgres__** se rend dans le répertoire des sauvegardes.
 +
 +<file>
 +-bash-4.2$ cd /var/lib/pgsql/sauvegarde/
 +
 +-bash-4.2$
 +</file>
 +
 +On vérifie le fichier de sauvegarde.
 +
 +<file>
 +-bash-4.2$ ls -ls
 +
 +total 3608
 +3604 -rwx------ 1 postgres root 3690361 20 sept. 15:59 Flectra.dump
 +   4 -rwx------ 1 root     root    2277 21 sept. 20:37 sauvegarde-postgres.sh
 +-bash-4.2$
 +</file>
 +
 +On restaure la sauvegarde.
 +
 +<file>
 +-bash-4.2$ psql -f Flectra.dump
 +
 +SET
 +SET
 +...
 +SET
 +COMMENT-bash-4.2$
 +</file>
 +
 +=== Vérification ===
 +
 +On entre dans la console //PostgreSQL//.
 +
 +<file>
 +-bash-4.2$ psql
 +
 +psql (11.5)
 +Saisissez « help » pour l'aide.
 +
 +postgres=#
 +</file>
 +
 +On affiche les //BD// présentes.
 +
 +<file>
 +postgres=#  \list
 +
 +                                  Liste des bases de données
 +    Nom    | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d'accès
 +-----------+--------------+----------+-----------------+--------------+----------------------
 + Flectra   | flectra      | UTF8     | C               | fr_FR.utf8   |
 + postgres  | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   |
 + template0 | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   | =c/postgres         +
 +                        |          |                              | postgres=CTc/postgres
 + template1 | postgres     | UTF8     | fr_FR.utf8      | fr_FR.utf8   | =c/postgres         +
 +                        |          |                              | postgres=CTc/postgres
 +(4 lignes)
 +
 +postgres=#
 +</file>
 +
 +La //BD// //Flectra// a été créée et restaurée.
 +
 +On quitte la console //PostgreSQL// et on retourne à l'usager **__postgres__**.
 +
 +<file>
 +postgres=# \q
 +
 +-bash-4.2$
 +</file>
 +
 +On revient à l'utilisateur **__root__**.
 +
 +<file>
 +-bash-4.2$ exit
 +
 +déconnexion
 +root@tchana ~]#
 +</file>
 +
 +==== Vérification ====
 +
 +On se logue à //Flectra// et on vérifie si tout est tel qu'avant la sauvegarde:  **https://www.flectra.micronator-dev.org/**.\\ 
 +{{Images_Cahier-101-03-004.png?25}} Si on rencontre des difficultés à accéder, on vidange le cache //DNS// du poste de travail de même que l'historique du navigateur Internet.
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Notre logo s'affiche.\\ 
 +<nowiki>-</nowiki> On se connecte.
 +|{{ Images_Cahier-201-07-059.png?500 }}|
 +</WRAP>
 +<WRAP column 62%>
 +\\ 
 +La page d'accueil de //Flectra// s'affiche et notre logo a bien été restauré.
 +|{{ Images_Cahier-201-07-060.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.
 +
 +<WRAP centeralign>**La sauvegarde et la restauration manuelle fonctionnent correctement.**</WRAP>
 +
 +====== Sauvegarde NethServer ======
 +
 +===== Description =====
 +//
 +Référence:// [[http://docs.nethserver.org/en/v7/backup.html|http://docs.nethserver.org/en/v7/backup.html]].
 +
 +La récupération d'une sauvegarde est le seul moyen de restaurer une machine en cas de sinistre. Le système gère deux types de sauvegardes:
 +
 +  - **Sauvegarde de la configuration**\\ Ce type de sauvegarde ne contient que les fichiers de configuration du système. Son objectif est de restaurer rapidement une machine en cas de récupération après sinistre.
 +  - **Sauvegarde des données**\\ Ce type de sauvegarde est activée par l’installation du module "Sauvegarde" et contient, par défaut, toutes les données stockées dans le système //(répertoires des utilisateurs, dossiers partagés, courriels, etc)//. Cette sauvegarde s'exécute une fois par jour et peut être complète ou incrémentielle sur une base hebdomadaire //(six incrémentielles et la septième complète)//. Elle contient également l'archive de la //Sauvegarde de la configuration//. Plusieurs sauvegardes peuvent être configurées pour enregistrer différentes données à des intervalles différents.\\ Lorsque la machine est fonctionnelle, une restauration complète des données peut être effectuée même si la machine est déjà en production.
 +\\ 
 +
 +===== Sauvegarde de la configuration =====
 +
 +//Référence:// [[https://docs.nethserver.org/projects/nethserver-devel/en/latest/nethserver-backup-config.html|https://docs.nethserver.org/projects/nethserver-devel/en/latest/nethserver-backup-config.html]].
 +
 +Depuis la page  **Configuration -> Sauvegarde (configuration)**, la sauvegarde de la configuration du système //(passwd, config databases, etc)// peut être créée, envoyée ou configurée.
 +
 +En outre, une tâche automatisée s'exécute chaque nuit à //00h15// et crée une nouvelle archive, ''/var/lib/nethserver/backup/backup-config.tar.xz'' si un des fichiers à sauvegarder a été modifié au cours des __dernières 24 heures__.
 +
 +==== Config de la Sauvegarde de la configuration====
 +
 +**Configuration -> Sauvegarde (configuration) ->** onglet  **Configurer**, on spécifie le nombre de sauvegardes automatiques à conserver.
 +
 +<WRAP column 50%>
 +|{{ Images_Cahier-201-02-092.png?500 }}|
 +</WRAP>
 +<WRAP column 42%>
 +|{{ Images_Cahier-201-02-093.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_icone-201-003_Note.png?25}} Ces sauvegardes n'ont que quelques //Ko//; on peut en conserver un assez grand nombre. Elles sont stockées dans le répertoire ''/var/lib/nethserver/backup/history'' et son numérotées de ''c00.tar.xz'' à ''cnn.tar.xz''.
 +
 +La liste des modules installés est incluse dans l'archive de sauvegarde. La procédure de restauration peut télécharger et installer automatiquement les modules énumérés.
 +
 +==== Personnalisation ====
 +
 +=== Inclusion ===
 +
 +Dans la plupart des cas, il n'est pas nécessaire de modifier la //Sauvegarde de la configuration//, mais peut être utile par exemple si vous avez une configuration //httpd personnalisée//. Dans ce cas, vous pouvez ajouter ''/chemin/nom du fichier'' contenant la personnalisation à la liste des fichiers à sauvegarder.
 +
 +Si vous souhaitez ajouter un fichier à la //Sauvegarde de la configuration//, ajoutez une ligne au fichier ''/etc/backup-config.d/custom.include''.
 +
 +=== Exclusion ===
 +
 +Si vous souhaitez exclure un fichier de la //Sauvegarde de la configuration//, ajoutez une ligne au fichier ''/etc/backup-config.d/custom.exclude''.
 +
 +==== Lancement de la Sauvegarde de la configuration ====
 +
 +<WRAP column 32%>
 +**Configuration -> Sauvegarde (configuration) -> CRÉER UNE SAUVEGARDE**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-094.png?800}}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +\\ 
 +Si l'écran ne s'affiche pas correctement, on l'agrandit.
 +|{{ Images_Cahier-201-02-095.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> On entre une Description.\\ 
 +<nowiki>-</nowiki> **CRÉER UN SAUVEGARDE**.
 +|{{ Images_Cahier-201-02-096.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 32%>
 +La sauvegarde a été créée et on voit sa description, entrée ci-dessus lors de sa création.
 +
 +On peut télécharger la sauvegarde sur le poste de travail en cliquant **Télécharger**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-097.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +\\ 
 +**Enregistrer le fichier -> OK**.
 +|{{ Images_Cahier-201-02-098.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Enregistrer**.
 +|{{ Images_Cahier-201-02-099.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Ces fichiers ne sont pas très volumineux, quelques //Ko// seulement.
 +|{{ Images_Cahier-201-02-099-A.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Restauration d'une configuration ====
 +
 +On peut récupérer une ancienne sauvegarde stockée sur le poste de travail afin de la restaurer.
 +
 +<WRAP column 22%>
 +\\ 
 +\\ 
 +**Envoyer**.
 +|{{ Images_Cahier-201-02-100.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +\\ 
 +\\ 
 +**Parcourir...**
 +|{{ Images_Cahier-201-02-101.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +<nowiki>-</nowiki> On sélectionne la sauvegarde à récupérer.\\ 
 +<nowiki>-</nowiki> **Ouvrir**.
 +|{{ Images_Cahier-201-02-102.png?400 }}|
 +</WRAP>
 +<WRAP column 22%>
 +\\ 
 +<nowiki>-</nowiki> On entre une description.\\ 
 +<nowiki>-</nowiki> **ENVOYER**.
 +|{{ Images_Cahier-201-02-103.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 32%>
 +La sauvegarde récupérée apparaît dans la liste et on peut la restaurer en cliquant **Restaurer**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-104.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +Les différentes paramètres de la sauvegarde récupérée apparaissent ci-dessous.
 +|{{ Images_Cahier-201-02-105.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Si l'option //**Télécharger les modules automatiquement**// est cochée, les modules nécessaires seront téléchargés et installés automatiquement.\\ 
 +<nowiki>-</nowiki> **RESTAURER**.
 +|{{ Images_Cahier-201-02-106.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +La restauration est en cours.
 +|{{ Images_Cahier-201-02-107.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 32%>
 +La restauration a réussie.
 +
 +{{Images_icone-201-003_Note.png?25}} Nous aurions pu récupérer directement //Première sauvegarde//, car elle est dans la liste de celles qui sont encore stockée sur le Serveur NethServer.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-108.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Sauvegarde des données =====
 +
 +{{Images_icone-201-004_Triangle.png?25}} Les sauvegardes sont conservées dans: ''/var/lib/nethserver/backup/duplicity/backup-data/''.
 +
 +NethServer implémente 2 types de sauvegarde des données:
 +
 +  - **Sauvegarde unique** //(primaire, par défaut, compatible avec les versions antérieures)//
 +  - **Sauvegardes multiples** //(multi-sauvegardes, multi-moteurs)//
 +
 +La sauvegarde des données peut être effectuée à l'aide de différents moteurs:
 +
 +  - Duplicity (défaut) - [[http://duplicity.nongnu.org/|http://duplicity.nongnu.org/]]
 +  - Restic - [[https://restic.net/|https://restic.net/]]
 +  - rsync - [[https://rsync.samba.org/|https://rsync.samba.org/]]
 +
 +==== Duplicity ====
 +
 +//Duplicity// est le moteur par défaut pour //NethServer//. Il dispose d'un bon algorithme de compression qui réduira le stockage sur la destination. //Duplicity// nécessite une sauvegarde complète une fois par semaine. Lorsque le jeu de données est très volumineux, le processus peut prendre plus de 24 heures.
 +
 +{{Images_icone-201-006_Securite.png?25}} //NethServer// __n’implémente pas le chiffrage des sauvegardes__ si le moteur est //Duplicity//.
 +
 +Applications dorsales(( **Applications dorsales**: Programme qui, dans une architecture client-serveur, traite les commandes en provenance de l'application frontale. //Référence//: [[http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=26527120|http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=26527120]]. \\ \\ )) prises en charge:
 +
 +  - CIFS
 +  - NFS
 +  - USB
 +  - WebDAV //(seulement en cas de sauvegarde unique)//
 +
 +==== Sauvegarde unique ====
 +
 +Il s'agit de la sauvegarde système par défaut pouvant être configurée et restaurée à l'aide de l'interface Web.
 +
 +  - Peut être planifiée une fois par jour.
 +  - Peut inclure les journaux du système.
 +  - Envoie des notifications à l'administrateur du système ou à une adresse courriel externe.
 +
 +==== Répertoire partagé pour les sauvegardes ====
 +
 +  - Nos sauvegardes utiliseront le protocol CIFS //(Common Internet File System)//.
 +  - Elles seront téléversées automatiquement dans un répertoire partagé sur le poste de travail.
 +
 +Il nous faut donc un répertoire partagé sur le poste de travail afin que le //Serveur NethServer// puisse y déposer les fichiers de la sauvegarde.
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> On peut utiliser le répertoire déjà utilisé par les sauvegardes des autres serveurs.\\ 
 +<nowiki>-</nowiki> On peut aussi créer un nouveau répertoire //**Sauvegarde**// sur le disque ''D:\'' du poste de travail.
 +|{{ Images_Cahier-201-02-109.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +Si //**Partager avec**// offre seulement les choix ci-dessous, fermer et ouvrir un autre Explorateur Windows.
 +|{{ Images_Cahier-201-02-110.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +\\ 
 +Dans les menus de l'Explorateur Windows, **Affichage -> Options**.
 +|{{ Images_Cahier-201-02-111.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Onglet **Affichage**.\\ 
 +<nowiki>-</nowiki> Décocher //**Utiliser l'Assistant Partage (recommandé)**//.\\ 
 +<nowiki>-</nowiki> **OK**.
 +|{{ Images_Cahier-201-02-112.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +<nowiki>-</nowiki> On retourne au dossier **Sauvegarde**.\\ 
 +<nowiki>-</nowiki> Clac sur le nom du répertoire **-> Partager avec -> Partage Avancé**.
 +|{{ Images_Cahier-201-02-113.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +\\ 
 +Onglet **Partage -> Partage avancé...**
 +|{{ Images_Cahier-201-02-114.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Cocher **Partager ce dossier ->** //**Nom du partage:**// **Sauvegarde** apparaît **-> Autorisations**.
 +|{{ Images_Cahier-201-02-115.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**Ajouter...**
 +|{{ Images_Cahier-201-02-116.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +On entre le nom d'un utilisateur de la machine Windows, ex:  **__michelandre__** **-> Vérifier les noms**.
 +|{{ Images_Cahier-201-02-117.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +\\ 
 +Le nom vérifié apparaît **-> OK**.
 +|{{ Images_Cahier-201-02-118.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Sélectionner **michelandre ->** cocher toutes les //**Autorisations**//.
 +|{{ Images_Cahier-201-02-119.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Sélectionner **Tout le monde ->** décocher toutes les //**Autorisations**// **-> OK**.
 +|{{ Images_Cahier-201-02-120.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> **OK**.
 +
 +<nowiki>-</nowiki> Le répertoire est partagé **-> OK**.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-02-121.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-02-122.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +=== Vérification ===
 +
 +Dans l'Explorateur Windows, l'utilisateur **__michelandre__** entre l'adresse du poste de travail: **\\10.10.10.81**.
 +
 +Il voit le répertoire de partage: //Sauvegarde//.
 +
 +Tout est bien paramétré.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-02-123.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 32%>
 +==== Installation du module Sauvegarde ====
 +
 +**Administration -> Gestionnaire des logiciels ->** on coche **Sauvegarde -> AJOUTER**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-124.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +**APPLIQUER LES CHANGEMENTS**.
 +|{{ Images_Cahier-201-02-125.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +**Recharger la page** pour afficher les nouveaux menus.
 +|{{ Images_Cahier-201-02-126.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Config de la Sauvegardes (données) ====
 +
 +<WRAP column 46%>
 +**Configuration -> Sauvegarde (données) ->** onglet **Général ->** on entre les informations demandées...
 +|{{ Images_Cahier-201-02-127.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +\\ 
 +... on entre les informations demandées **-> SOUMETTRE**.
 +|{{ Images_Cahier-201-02-128.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +=== Notification ===
 +
 +⦿ //**Notifier**//\\ 
 +On préfère **Toujours** être notifié lorsqu'une sauvegarde est effectuée.
 +
 +⦿ //**Adresse email personnalisée**//\\ 
 +Pour recevoir les courriels, on entre l'adresse courriel de l'administrateur de tous les serveurs de notre site.
 +
 +//**Adresse de l'expéditeur**//\\ 
 +On spécifie l'adresse courriel de l'admin du serveur d'où provient la notification.
 +
 +**-> SOUMETTRE**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-02-129.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Vérifications à la ligne de commande ====
 +
 +=== Sauvegarde (configuration) ===
 +
 +On affiche les propriétés de la configuration //Sauvegarde (configuration)//.
 +
 +<file>
 +[root@tchana ~]# config show backup-config
 +
 +backup-config=configuration
 +    HistoryLength=31
 +    status=enabled
 +[root@tchana ~]#
 +</file>
 +
 +//**HistoryLength:**// la valeur donnée au paramètre //Configuration -> Sauvegarde (Configuration) -> Automatic backups to keep// à la section [[nethserver_201_cahier_07_flectra#Config de la Sauvegarde de la configuration]].
 +
 +//**status:**// propriété qui active ou désactive la sauvegarde automatique, peut être activée //(enabled)// ou désactivée //(disabled)//. La valeur par défaut est //**activée**//.
 +
 +{{Images_icone-201-003_Note.png?25}} Indépendamment de cette propriété, la sauvegarde est toujours exécutée si elle est démarrée manuellement.
 +
 +=== Sauvegarde (données) ===
 +
 +On affiche les propriétés de la configuration //Sauvegarde (données)//.
 +
 +<file>
 +[root@tchana ~]# config show backup-data
 +
 +backup-data=configuration
 +    IncludeLogs=enabled
 +[root@tchana ~]#
 +</file>
 +
 +//**IncludeLogs:**// nous avons coché  //Configuration -> Sauvegarde (données) -> onglet  Général -> Advanced options -> Include system logs// à la section 
 +[[nethserver_201_cahier_07_flectra#Config de la Sauvegardes (données)]]
 +.
 +
 +On affiche les propriétés //Sauvegarde (données)//.
 +
 +<file>
 +[root@tchana ~]# db backups show
 +
 +backup-data=duplicity
 +    BackupTime=0 3 * * *
 +    CleanupOlderThan=56D
 +    FullDay=0
 +    NFSHost=
 +    NFSShare=
 +    Notify=always
 +    NotifyFrom=admin@micronator-dev.org
 +    NotifyTo=michelandre@micronator.org
 +    SMBHost=10.10.10.81
 +    SMBLogin=michelandre
 +    SMBPassword=mot-de-passe
 +    SMBShare=Sauvegarde
 +    Type=incremental
 +    USBLabel=
 +    VFSType=cifs
 +    VolSize=250
 +    WebDAVLogin=
 +    WebDAVPassword=
 +    WebDAVUrl=
 +    status=enabled
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} On vérifie la propriété //**FullDay**// //(dimanche=0, lundi-1, mardi=2...)//
 +\\ 
 +
 +==== Personnalisation ====
 +
 +=== Inclusion de fichiers/répertoires ===
 +
 +On peut inclure des fichiers/répertoires supplémentaires en les spécifiant dans le fichier d'inclusion: ''/etc/backup-data.d/custom.include''.
 +
 +=== Grandeur des fichiers de sauvegarde ===
 +
 +Comme on le voit avec la commande ''db backups show'' à la section 
 +[[nethserver_201_cahier_07_flectra#Sauvegarde (données)]]
 +, la propriété //VolSize=250// donnera des fichiers de sauvegarde de //250 Mo//. Pour une sauvegarde de plusieurs //Go//, ce paramètre segmentera la sauvegarde en de très nombreux fichiers.
 +
 +Nous ajustons la grandeur des fichiers à **2 Go** //(2048 Mo)// et ainsi facilitons l'examen du répertoire ''Sauvegarde''.
 +
 +<file>
 +[root@tchana ~]# db backups setprop backup-data VolSize 2048
 +
 +[root@tchana ~]#
 +</file>
 +
 +On signale le changement.
 +
 +<file>
 +[root@tchana ~]# signal-event nethserver-backup-data-update
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# db backups show -> grep VolSize
 +
 + VolSize=2048
 +[root@tchana ~]#
 +</file>
 +
 +==== Lancement forcé de la sauvegarde ====
 +
 +=== Première sauvegarde ===
 +
 +On peut forcer le lancement d'une sauvegarde en exécutant la commande ci-dessous.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data 
 +
 +Backup: backup-data
 +Backup started at 2019-02-08 13:28:03
 +Pre backup scripts status: SUCCESS
 +--------------[ Backup Statistics ]--------------
 +StartTime 1549650495.78 (Fri Feb  8 13:28:15 2019)
 +EndTime 1549650497.91 (Fri Feb  8 13:28:17 2019)
 +ElapsedTime 2.13 (2.13 seconds)
 +SourceFiles 419
 +SourceFileSize 24495192 (23.4 MB)
 +NewFiles 419
 +NewFileSize 24495192 (23.4 MB)
 +DeletedFiles 0
 +ChangedFiles 0
 +ChangedFileSize 0 (0 bytes)
 +ChangedDeltaSize 0 (0 bytes)
 +DeltaEntries 419
 +RawDeltaSize 24467434 (23.3 MB)
 +TotalDestinationSizeChange 1963840 (1.87 MB)
 +Errors 0
 +-------------------------------------------------
 +
 +Action 'backup-data-duplicity backup-data': SUCCESS
 +Post backup scripts status: SUCCESS
 +Backup status: SUCCESS
 +Backup ended at 2019-02-08 13:28:19
 +Time elapsed: 0 hours, 0 minutes, 16 seconds
 +
 +Disk Usage:
 +      Size       Used  Available     Use%
 + 917.83 GB  785.67 GB  132.16 GB    85.6%
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 32%>
 +Cette sauvegarde //(1 918 Ko)// est complète.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-130.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On vérifie la date.
 +
 +<file>
 +[root@tchana ~]# date
 +
 +ven février  8 13:32:59 EDT 2019
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} Même si nous sommes //vendredi// et que nous avons paramétré les sauvegardes complètes pour les //dimanches// seulement, cette sauvegarde est complète, car c'est la première à ce jour.
 +
 +=== Deuxième sauvegarde ===
 +
 +On peut forcer une autre sauvegarde pour générer une incrémentielle.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data
 +
 +Backup: backup-data
 +Backup started at 2019-02-08 13:35:07
 +Pre backup scripts status: SUCCESS
 +--------------[ Backup Statistics ]--------------
 +StartTime 1549650912.53 (Fri Feb  8 13:35:12 2019)
 +EndTime 1549650912.95 (Fri Feb  8 13:35:12 2019)
 +ElapsedTime 0.42 (0.42 seconds)
 +SourceFiles 422
 +SourceFileSize 24526628 (23.4 MB)
 +NewFiles 9
 +NewFileSize 23980 (23.4 KB)
 +DeletedFiles 0
 +ChangedFiles 70
 +ChangedFileSize 14856835 (14.2 MB)
 +ChangedDeltaSize 0 (0 bytes)
 +DeltaEntries 79
 +RawDeltaSize 457642 (447 KB)
 +TotalDestinationSizeChange 76371 (74.6 KB)
 +Errors 0
 +-------------------------------------------------
 +
 +Les métadonnées locales et distantes sont déjà synchronisées. Aucune synchronisation nécessaire.
 +Date de la dernière sauvegarde complète : Fri Feb 08 13:28:03 2019
 +Aucun ancien jeu de sauvegarde n’a été trouvé, rien n’a été supprimé.
 +Action 'backup-data-duplicity backup-data': SUCCESS
 +Post backup scripts status: SUCCESS
 +Backup status: SUCCESS
 +Backup ended at 2019-02-08 13:35:14
 +Time elapsed: 0 hours, 0 minutes, 7 seconds
 +
 +Disk Usage:
 +      Size       Used  Available     Use%
 + 917.83 GB  785.68 GB  132.15 GB    85.6%
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 32%>
 +La deuxième sauvegarde n'est que de //(75 Ko)// et est une incrémentielle, car ce n'est pas la première à ce jour et nous ne sommes pas //dimanche//.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-131.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 46%>
 +=== Troisième sauvegarde ===
 +
 +Nous changeons la journée des sauvegardes complètes pour qu'elles aient lieu les //vendredis// au lieu des //dimanches// **-> SOUMETTRE**.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-131-A.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On force une troisième sauvegarde.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data
 +
 +Backup: backup-data
 +Backup started at 2019-02-08 13:44:43
 +Pre backup scripts status: SUCCESS
 +--------------[ Backup Statistics ]--------------
 +StartTime 1549651488.35 (Fri Feb  8 13:44:48 2019)
 +EndTime 1549651489.30 (Fri Feb  8 13:44:49 2019)
 +ElapsedTime 0.95 (0.95 seconds)
 +SourceFiles 422
 +SourceFileSize 24547401 (23.4 MB)
 +NewFiles 422
 +NewFileSize 24547401 (23.4 MB)
 +DeletedFiles 0
 +ChangedFiles 0
 +ChangedFileSize 0 (0 bytes)
 +ChangedDeltaSize 0 (0 bytes)
 +DeltaEntries 422
 +RawDeltaSize 24519532 (23.4 MB)
 +TotalDestinationSizeChange 1996425 (1.90 MB)
 +Errors 0
 +-------------------------------------------------
 +
 +Les métadonnées locales et distantes sont déjà synchronisées. Aucune synchronisation nécessaire.
 +Date de la dernière sauvegarde complète : Fri Feb 08 13:28:03 2019
 +Aucun ancien jeu de sauvegarde n’a été trouvé, rien n’a été supprimé.
 +Action 'backup-data-duplicity backup-data': SUCCESS
 +Post backup scripts status: SUCCESS
 +Backup status: SUCCESS
 +Backup ended at 2019-02-08 13:44:51
 +Time elapsed: 0 hours, 0 minutes, 8 seconds
 +
 +Disk Usage:
 +      Size       Used  Available     Use%
 + 917.83 GB  785.68 GB  132.15 GB    85.6%
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 32%>
 +La troisième sauvegarde est complète car nous avons paramétré les complètes pour les //vendredis//.
 +
 +Si nous lançons une quatrième sauvegarde, elle sera complète elle aussi, car nous sommes toujours //vendredi//.
 +
 +{{Images_icone-201-004_Triangle.png?25}} On remet le paramètre des sauvegardes complètes pour les //dimanches//.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-07-132.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Exemple de récupération du fichier de sauvegarde de la configuration ===
 +
 +{{Images_icone-201-001_doigt.png?22}} Pour une reprise après sinistre, on peut récupérer le fichier d'une sauvegarde de la configuration directement depuis le fichier ''backup-config.tar.xz'' dans le répertoire de stockage - ''Sauvegarde'' du poste de travail.
 +
 +On se rend dans le répertoire de stockage, on claque sur le fichier ''backup-config.tar.xz -> 7-Zip -> Ouvrir archive'' et on navigue jusqu'au répertoire  ''\var/lib\nethserver\backup\history''.
 +
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-02-133.png?400 }}|
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-02-134.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_icone-201-003_Note.png?25}} Les sauvegardes de la configuration du serveur sont incluses dans la sauvegarde des données, car nous avons fait ce choix lors de la configuration de la sauvegarde des données.
 +
 +<WRAP column 30%>
 +Clac sur le fichier **xxx.tar.xz -> Copier vers...**
 +|{{ Images_Cahier-201-02-135.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**OK**.
 +|{{ Images_Cahier-201-02-136.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Le fichier de la configuration est récupéré de la sauvegarde des données.
 +|{{ Images_Cahier-201-02-137.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Exclusion de fichiers/répertoire ===
 +
 +On peut exclure des fichiers/répertoires en les spécifiant dans le fichier d'exclusion: ''/etc/backup-data.d/custom.exclude''.
 +
 +===== Restauration des données =====
 +
 +1) Nous créons un fichier dans le répertoire personnel de **__root__**.\\ 
 +2) Nous lançons une sauvegarde.\\ 
 +3) Nous supprimons le fichier créé avant la sauvegarde, celui de l' étape 1.\\ 
 +4) Nous récupérons ce fichier contenu dans la dernière sauvegarde.\\ 
 +5) On vérifie la récupération.
 +
 +1) On crée le fichier
 +
 +<file>
 +[root@tchana ~]# touch toto
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -ls toto
 +
 +0 -rw-r--r-- 1 root root 0 Feb  8 13:55 toto
 +[root@tchana ~]#
 +</file>
 +
 +2) On lance une sauvegarde.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data
 +
 +Backup: backup-data
 +Backup started at 2019-02-08 13:56:09
 +Pre backup scripts status: SUCCESS
 +...
 +Action 'backup-data-duplicity backup-data': SUCCESS
 +Post backup scripts status: SUCCESS
 +Backup status: SUCCESS
 +Backup ended at 2019-02-08 13:56:17
 +Time elapsed: 0 hours, 0 minutes, 8 seconds
 +
 +Disk Usage:
 +      Size       Used  Available     Use%
 + 917.83 GB  785.68 GB  132.15 GB    85.6%
 +[root@tchana ~]#
 +</file>
 +
 +3) Nous supprimons le fichier créé avant la sauvegarde, celui de la première étape.
 +
 +<file>
 +[root@tchana ~]# rm toto
 +
 +rm : supprimer fichier vide « toto » ? y
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -ls toto
 +
 +ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type
 +[root@tchana ~]#
 +</file>
 +
 +==== Restauration ====
 +
 +4) On récupère le fichier.
 +
 +<WRAP column 46%>
 +**Configuration -> Restaurer les données**.
 +
 +//**Backup file**// \\ 
 +On choisit la dernière sauvegarde.
 +
 +//**Mode de restauration**//\\ 
 +⦿ Restaurer les fichiers dans le chemin original.
 +
 +//**Sélectionner un ou plusieurs dossiers ou fichiers à restaurer**//\\ 
 +On entre **toto**.
 +
 +<nowiki>-</nowiki> Dans l'arborescence, on choisit **/root**, le répertoire contenant le fichier à restaurer.\\ __/root__ apparaît dans: //**Dossiers ou fichiers à restaurer**//.
 + 
 +**-> RESTAURER**.
 +
 +Le message sur fond vert, //**Restauré à la position initiale**// indique que le fichier a été trouvé et restauré.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-138.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_icone-201-003_Note.png?25}} __Si nous n'avions rien spécifié__ sous **//Sélectionner un ou plusieurs dossiers ou fichiers à restaurer//**, c'est tout l'arborescence __/root__ qui aurait été alors restaurée.
 +
 +=== Vérification ===
 +
 +5) On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -ls toto
 +
 +0 -rw-r--r-- 1 root root 0 Feb  8 13:55 toto
 +[root@tchana ~]#
 +</file>
 +
 +Le fichier a été restauré.
 +\\ 
 +
 +==== Recherche de fichiers dans les sauvegardes ====
 +
 +On peut rechercher un fichier dans les sauvegardes //(peut prendre un certain temps)//.
 +
 +<file>
 +[root@tchana ~]# /sbin/e-smith/backup-data-list -b backup-data | grep toto
 +
 +Ven février  8 13:55:22 2019 root/toto
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP centeralign>**La sauvegarde/restauration NethServer est fonctionnelle.**</WRAP>
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_icone-201-002_Lumiere.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.
 +
 +===== NethServer & BackupPC =====
 +
 +//Référence:// [[nethserver_101_cahier_11_nethserver_backuppc|NethServer-101, Cahier-11: NethServer & BackupPC]].
 +
 +Cette section décrit la marche à suivre pour créer une sauvegarde d'un //Serveur NethServer// //(dorgee.micronator-101.org, notre serveur physique principal)// vers une station distante.
 +
 +La sauvegarde se fait en utilisant le protocol CIFS //(Common Internet File System)// vers le répertoire partagé ''D:\Sauvegarde'' sur la station de travail //Win-81//.
 +
 +{{Images_icone-201-003_Note.png?25}} Toutes les sauvegardes/restaurations des //Serveurs NethServer// fonctionnent exactement de la même façon.
 +
 +//BackupPC//, installé sur un //Serveur NethServer// dédié aux sauvegardes, peut sauvegarder tout //Serveur NethServer// et il sera alors possible de le restaurer/migrer sans qu'il ne soit nécessaire de réinstaller les //Modules// présents ou les autres logiciels installés sur le serveur; ils seront tous restaurés, car inclus dans la sauvegarde //BackupPC//.
 +
 +===== Description du cahier =====
 +
 +Le [[nethserver_101_cahier_11_nethserver_backuppc|Cahier-11]]: //NethServer & BackupPC// du "Cours NethServer-101" décrit la marche à suivre pour: l’installation de //BackupPC-3.3.1// et sa mise à jour vers //BackupPC-4.3.0//, les prises de sauvegardes de l’hôte de //BackupPC// et du serveur SOURCE et enfin la restauration de la sauvegarde de SOURCE sur DESTINATION pour que ce dernier devienne un clone du premier.
 +
 +Ce cahier est basé sur les pages Web suivantes: 
 +
 +[[https://wiki.nethserver.org/doku.php?id=module:backuppc|https://wiki.nethserver.org/doku.php?id=module:backuppc]]\\ 
 +[[https://www.veritech.net/centos-7-backuppc-installation-guide/|https://www.veritech.net/centos-7-backuppc-installation-guide/]]\\ 
 +[[https://srbu.se/index.php?option=com_content&view=article&id=201:upgrading-backuppc-to-v4-2-1&catid=8&Itemid=121&lang=en|https://srbu.se/index.php?option=com_content&view=article&id=201:upgrading-backuppc-to-v4-2-1&catid=8&Itemid=121&lang=en]]
 +
 +//Page officielle de BackupPC:// [[https://backuppc.github.io/backuppc/|https://backuppc.github.io/backuppc/]].
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/BackupPC|https://fr.wikipedia.org/wiki/BackupPC]].\\ 
 +//BackupPC// est un logiciel LIBRE, publié sous licence //GPL//, pour la sauvegarde de systèmes de fichiers.\\ 
 +Il est utilisé pour sauvegarder sur disque un ensemble de postes clients et de serveurs, sous: Unix, Linux, Windows ou Mac OS X. Les protocoles utilisables pour les transferts sont: //SMB//, //tar over SSH/rsh/nfs// et //rsync//. Il ne nécessite l'installation d'aucun logiciel client sur les machines à sauvegarder. Il possède une interface Web pour lancer des sauvegardes ou restaurer des fichiers. Il est également possible de sauvegarder des bases de données via un script shell lancé avant la sauvegarde.
 +
 +==== But du Cahier-101-11 ====
 +
 +<WRAP centeralign>//**Sauvegarder, puis migrer le serveur SOURCE\\ vers le serveur DESTINATION.**//</WRAP>
 +\\ 
 +
 +{{ Images_Cahier-201-02-139.png?700 }}
 +\\
 +
 +====== Activation du mode développeur de Flectra ======
 +
 +===== Description =====
 +
 +Adaptation de la page: [[https://riptutorial.com/fr/odoo-8/topic/3311/comment-activer-le-mode-developpeur-openerp|https://riptutorial.com/fr/odoo-8/topic/3311/comment-activer-le-mode-developpeur-openerp]].
 +
 +Le mode développeur //Flectra// vous permet d'apporter des modifications substantielles à la base de données //Flectra//, telles que l'ajout de champs à vos documents et vues. Vous modifiez les vues par défaut de vos actions et pouvez même créer des formulaires dynamiques basés sur d'autres champs dans vos modèles.
 +
 +===== Avantage =====
 +
 +Bien que //Flectra// soit un puissant cadre d'application, le cycle de développement peut être brutal pour tester les modifications apportées à votre application. En utilisant le mode développeur, vous pouvez tester des expressions et résoudre de nombreux problèmes fonctionnels sans avoir à redémarrer le serveur encore et encore pour tester des modifications simples.
 +
 +De plus, l'outil de développement //Flectra// est idéal pour examiner l'architecture des formulaires et des vues afin de voir comment les champs sont liés aux modules, à leurs domaines, contextes et autres attributs.
 +
 +===== Limites =====
 +
 +{{Images_Cahier-101-03-006.png?25}} Bien qu'il soit très tentant d'utiliser le mode développeur pour apporter certaines modifications à votre application, il existe des inconvénients. Selon ce que vous modifiez, vous pouvez perdre ces modifications avec les futures mises à jour des modules ou lorsque vous installez des applications supplémentaires dans //Flectra//. Ceci est particulièrement véridique pour les changements de vues.
 +
 +===== Activation par un ajout à l'URL =====
 +
 +<WRAP column 46%>
 +Après s'être logué, pour activer temporairement le mode développeur, on ajoute à l'//URL// le mot clé <wrap em>web?debug=</wrap> et on appuie sur //[Entrée]//.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-07-150.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 22%>
 +La page sera rechargée et le mode développeur/débogage activé.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-151.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 25%>
 +Sur la page **Configuration**, dans le cadre **Partagez l'engouement**, on peut aussi activer le mode développeur avec ou sans éléments d'actif //(assets)//.
 +|{{ Images_Cahier-201-07-155.png?300 }}|
 +</WRAP>
 +<WRAP column 22%>
 +\\ 
 +En cliquant l'icône des **Outils développeur**, un menu se déroule et affiche plusieurs choix de commandes.
 +|{{ Images_Cahier-201-07-152.png?300 }}|
 +</WRAP>
 +<WRAP column 20%>
 +À la page **Configuration**, on clique l'**icône**, un menu se déroule et affiche aussi plusieurs choix de commandes.
 +|{{ Images_Cahier-201-07-153.png?300 }}|
 +</WRAP>
 +<WRAP column 20%>
 +Pour quitter le mode développeur, à la page **Configuration**, on clique l'icône** -> Quitter les outils développeur**.
 +|{{ Images_Cahier-201-07-154.png?300 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +====== Mises à jour ======
 +
 +===== Flectra =====
 +
 +Nous avons utilisé ''git'' pour l'installation de //Flectra//; il peut donc aussi servir pour la mise à jour du coeur de //Flectra// et de ses extensions; ensuite on mettra à jour la base de données //PostgreSQL// afin qu'elle utilise le code le plus récent.\\ 
 +{{Images_Cahier-101-03-004.png?25}} Pour le nom de la //BD//, voir la section 
 +[[nethserver_201_cahier_07_flectra#Création d'une nouvelle base de données]]
 +.\\ 
 +{{Images_Cahier-101-03-003.png?22}} S'assurer d'avoir une sauvegarde de la base de donnée //PostgreSQL// avant de réaliser la mise à jour. Voir la section 
 +[[nethserver_201_cahier_07_flectra#Sauvegarde]]
 +.
 +
 +==== Flectra et ses extensions ====
 +
 +Adaptation de la page: [[https://www.cier.tech/fr_FR/blog/notre-blog-1/post/how-to-update-odoo-from-github-25|https://www.cier.tech/fr_FR/blog/notre-blog-1/post/how-to-update-odoo-from-github-25]].
 +
 +On arrête //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl stop flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie l'arrêt.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra  | grep -i Active:
 +
 +   Active: inactive (dead) since ven. 2019-09-20 19:45:50 EDT; 14s ago
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Notez que vous devez faire la mise à jour en tant qu'utilisateur **<wrap em>__flectra__</wrap>**.
 +
 +On se substitue à l'utilisateur **__flectra__**.
 +
 +<file>
 +[root@tchana ~]# su - flectra
 +
 +Dernière connexion : jeudi 19 septembre 2019 à 20:32:10 EDT sur pts/0
 +[flectra@tchana ~]$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[flectra@tchana ~]$ whoami
 +
 +flectra
 +[flectra@tchana ~]$
 +</file>
 +
 +On se rend dans le répertoire ''/opt/flectra/flectra''.
 +
 +<file>
 +[flectra@tchana ~]$ cd /opt/flectra/flectra
 +
 +[flectra@tchana flectra]$
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[flectra@tchana flectra]$ pwd
 +
 +/opt/flectra/flectra
 +[flectra@tchana flectra]$
 +</file>
 +
 +=== Récupération des mises à jour ===
 +
 +On récupère les mises à jour avec ''git''.
 +
 +<file>
 +[flectra@tchana flectra]$ git fetch origin master --depth=1
 +
 +remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
 +From https://github.com/flectra-hq/flectra
 + * branch            master     -> FETCH_HEAD
 +[flectra@tchana flectra]$
 +</file>
 +
 +=== Application des mises à jour ===
 +
 +S'il existait des mise à jour, nous les aurions récupérées et nous devrions demander au système de les appliquer. À ce stade, le système saurait quelles sont les modifications qui devraient être effectuées, mais nous ne les avons pas encore appliquées; nous pourrions le faire avec ''git reset''.\\ 
 +{{Images_Cahier-101-03-006.png?25}} La commande ''git reset –hard''  appliquera toutes les modifications, peu importe ce qui pourrait survenir.\\ 
 +{{Images_Cahier-101-03-003.png?22}} Si vous avez ajouté du code personnalisé dans des modules déjà existants //(donc dans le code source et non dans un module autonome)//, vous ne devez pas l'utiliser cette commande, car votre code personnalisé sera écrasé! Ajouté du code personnalisé dans des modules originaux est contraire à toutes les règles. Si vous devez ajouter du code, commencez par créer vos propres modules au lieu de modifier le code source.
 +
 +On applique les mises à jour.
 +
 +<file>
 +[flectra@tchana flectra]$ git reset --hard master
 +
 +HEAD is now at 4dd1e69 Merge branch 'master' into 'master'
 +[flectra@tchana flectra]$
 +</file>
 +
 +{{Images_icone-201-003_Note.png?25}} S'il existait des mises à jour causées par de bogues, le mot résolu ''[FIX]'' apparaîtrait à côté de ceux-ci.\\ 
 +Avec ce ''reset'', le code //Flectra// serait maintenant à jour et aurait été synchronisé avec les derniers changements apportés.
 +
 +==== Base de donnée PostgreSQL ====
 +
 +On met à jour la base de données //PostgreSQL// afin qu'elle prenne note de toutes les modifications et qu'elle se les applique à elle-même.
 +
 +<file>
 +[flectra@tchana flectra]$ /usr/bin/scl enable rh-python36           \
 +                          -- /opt/flectra/flectra-venv/bin/python3  \
 +                          /opt/flectra/flectra/flectra-bin          \
 +                          -c /etc/flectra-server.conf               \
 +                          -u all  -d Flectra
 +
 +
 +</file>
 +
 +  - **///usr/bin/scl enable rh-python36  -- /opt/flectra/flectra-venv/bin/python3 \//**\\ Indique au système d'activer la //Collection rh-python36// et d'utiliser la commande ''python3'' de l'environ­nement virtuel //flectra-venv//. La commande se poursuit sur la ligne suivante ( <wrap em>\</wrap> ).
 +  - **///opt/flectra/flectra/flectra-bin -c /etc/flectra-server.conf \//**\\ Lance //Flectra// en utilisant le fichier de configuration ''/etc/flectra-server.conf'' et la commande se poursuit sur la ligne suivante ( <wrap em>\</wrap> ).
 +  - **//-u all  -d Flectra//**\\ Indique de mettre à jour //(update)// tous les modules //(all)// de la base de données //(database)// //Flectra//.
 +
 +Pour une explication des paramètres de la commande ''flectra-bin'', voir: [[https://doc.flectrahq.com/reference/cmdline.html|https://doc.flectrahq.com/reference/cmdline.html]]
 +
 +=== Surveillance de la mise à jour de la BD ===
 +
 +On ouvre __une deuxième session //PuTTY//__, on se connecte en tant que **__root__** et on lance la commande suivante pour surveiller la mise à jour de la base de données.
 +
 +<file>
 +[flectra@tchana flectra]# top -d1 | grep python3
 +
 + 6336 flectra   20    467988  69156  10192 R  72,3  1,8   0:07.48 python3
 + 6336 flectra   20    467988  69156  10192 R  74,0  1,8   0:08.22 python3
 + 6336 flectra   20    467988  69156  10192 R  71,3  1,8   0:08.94 python3
 +...
 + 6336 flectra   20    482740  74744  10240 R  75,0  1,9   0:22.28 python3
 + 6336 flectra   20    482740  74744  10240 R  73,0  1,9   0:23.01 python3
 + 6336 flectra   20    630204  76980  10408 S  58,3  2,0   0:23.61 python3
 + 6336 flectra   20    630204  76980  10408 S   1, 2,0   0:23.62 python3
 + 6336 flectra   20    630204  76980  10408 S   1, 2,0   0:23.63 python3
 +...
 +[flectra@tchana flectra]#
 +</file>
 +
 +C'est la commande ''python3'', de l'environnement virtuel //flectra-venv//, qui fait tout le travail de la mise à jour de la //BD//. Pour ce faire, elle utilise une forte proportion du temp //CPU//.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Lorsque le temp //CPU// utilisé par ''python3'' redevient normal //(1,0)//, la mise à jour de la //BD// est terminée.\\ 
 +On peut fermer cette deuxième session //PuTTY//.
 +
 +==== Arrêt de la commande de mise à jour et redémarrage du service Flectra ====
 +
 +On revient à la sessions original de //PuTTY//.
 +
 +Les paramètres de la mise à jour de la base de données //(-u all  -d Flectra)// faisaient partie de la commande du lancement de //Flectra//.
 +
 +<WRAP box>
 +<file>
 +[flectra@tchana flectra]$ /usr/bin/scl enable rh-python36           \
 +                          -- /opt/flectra/flectra-venv/bin/python3  \
 +                          /opt/flectra/flectra/flectra-bin          \
 +                          -c /etc/flectra-server.conf               \
 +                          -u all  -d Flectra
 +
 +</file>
 +</WRAP>
 +
 +La mise à jour de la base de données est terminée, mais la commande du lancement de //Flectra// continue de rouler.
 +
 +Vu que nous n'avons pas utiliser ''systemctl'' pour lancer //Flectra//, ce dernier roule donc en tant que __commande__ et non en tant que __service__. Si nous fermons la fenêtre de cette session //PuTTY//, //Flectra// s'arrêtera car la fermeture d'une fenêtre termine toutes les commandes courantes lancées par cette session.
 +
 +On avorte la commande avec un <wrap em>[CTL]</wrap> + <wrap em>[c]</wrap>.
 +
 +<file>
 +[flectra@tchana flectra]$ /usr/bin/scl enable rh-python36           \
 +                          -- /opt/flectra/flectra-venv/bin/python3  \
 +                          /opt/flectra/flectra/flectra-bin          \
 +                          -c /etc/flectra-server.conf               \
 +                          -u all  -d Flectra
 +^C
 +[flectra@tchana flectra]$
 +</file>
 +
 +On quitte la substitution d'utilisateur pour retourner à **__root__**.
 +
 +<file>
 +[flectra@tchana flectra]$ exit
 +
 +déconnexion
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# whoami
 +
 +root
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le __service__ Flectra en utilisant ''systemctl''.\\ 
 +{{Images_Cahier-101-03-004.png?25}} Contrairement à une commande, un __service__ ne s'arrête pas si on ferme la session qui l'a lancée.\\ 
 +
 +<file>
 +[root@tchana ~]# systemctl start flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# systemctl status flectra | grep Active:
 +
 +   Active: active (running) since ven. 2019-09-20 20:17:15 EDT; 32s ago
 +[root@tchana ~]#
 +</file>
 +
 +==== Vérification du site Flectra ====
 +
 +{{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 à //Flectra// et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour: **https://www.flectra.micronator-dev.org**.
 +
 +<WRAP column 22%>
 +|{{ Images_Cahier-201-07-157.png?500 }}|
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-201-07-158.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== PHP =====
 +
 +Mise à jour de la //Collection PHP//.
 +
 +<file>
 +[root@tchana ~]# yum update -y nethserver-php-scl --enablerepo=stephdl
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation            (  3 Paquets en dépendance)
 +Mettre à jour  1 Paquet (+52 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 22 M
 +...
 +Running transaction
 +  Mise à jour  : php71-php-json-7.1.32-1.el7.remi.x86_64                              1/109
 +...
 +  Nettoyage    : php71-php-common-7.1.29-1.el7.remi.x86_64                          109/109
 +...
 +Mis à jour :
 +  nethserver-php-scl.x86_64 0:1.2.6-1.ns7.sdl
 +...
 +Dépendances mises à jour :
 +  php71-php-bcmath.x86_64 0:7.1.32-1.el7.remi
 +...
 +  php73-php-xml.x86_64 0:7.3.9-1.el7.remi
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le service //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +===== PostgreSQL =====
 +
 +On procède à la mise à jour de //PostgreSQL-11//.
 +
 +<file>
 +[root@tchana ~]# yum update -y --disablerepo=* --enablerepo=pgdg11          \
 +                               postgresql11         postgresql11-libs       \
 +                               postgresql11-server  postgresql11-contrib    \
 +                               postgresql11-devel   postgresql11-docs       \
 +                               postgresql11-test
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Mettre à jour  7 Paquets
 +
 +Taille totale des téléchargements : 22 M
 +...
 +  Mise à jour  : postgresql11-libs-11.5-1PGDG.rhel7.x86_64                             1/14
 +...
 +  Nettoyage    : postgresql11-docs-11.3-1PGDG.rhel7.x86_64                            14/14
 +...
 +Mis à jour :
 +  postgresql11.x86_64 0:11.5-1PGDG.rhel7
 +  postgresql11-contrib.x86_64 0:11.5-1PGDG.rhel7
 +  postgresql11-devel.x86_64 0:11.5-1PGDG.rhel7
 +  postgresql11-docs.x86_64 0:11.5-1PGDG.rhel7
 +  postgresql11-libs.x86_64 0:11.5-1PGDG.rhel7
 +  postgresql11-server.x86_64 0:11.5-1PGDG.rhel7
 +  postgresql11-test.x86_64 0:11.5-1PGDG.rhel7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +Il faut redémarrer //PostgreSQL// et //Flectra//.
 +
 +On redémarre le service //PostgreSQL//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart postgresql-11
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le service //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Vérification du site Flectra ====
 +
 +{{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 rend à notre site et on s'assure que tout fonctionne correctement: **[[https://www.flectra.micronator-dev.org|https://www.flectra.micronator-dev.org]]**.
 +
 +===== RH-Python36 =====
 +
 +Mise à jour de la //Collection RH-Python36//.
 +
 +<file>
 +[root@tchana ~]# yum update -y --enablerepo=centos-sclo-rh rh-python36*
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Mettre à jour  8 Paquets
 +
 +Taille totale des téléchargements : 19 M
 +...
 +  Mise à jour  : rh-python36-python-3.6.3-7.el7.x86_64                                 1/16
 +...
 +  Nettoyage    : rh-python36-python-3.6.3-3.el7.x86_64                                16/16
 +...
 +Mis à jour :
 +  rh-python36-python.x86_64 0:3.6.3-7.el7
 +  rh-python36-python-debug.x86_64 0:3.6.3-7.el7
 +  rh-python36-python-devel.x86_64 0:3.6.3-7.el7
 +  rh-python36-python-jinja2.noarch 0:2.9.6-3.el7
 +  rh-python36-python-libs.x86_64 0:3.6.3-7.el7
 +  rh-python36-python-test.x86_64 0:3.6.3-7.el7
 +  rh-python36-python-tkinter.x86_64 0:3.6.3-7.el7
 +  rh-python36-python-tools.x86_64 0:3.6.3-7.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +On doit redémarrer le service //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Vérification du site Flectra ====
 +
 +{{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 à //Flectra// et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour de //PostgreSQL//: **https://www.flectra.micronator-dev.org/**.
 +
 +===== npm/node =====
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/Npm|https://fr.wikipedia.org/wiki/Npm]].
 +
 +L'utilitaire ''npm'' est le gestionnaire officiel des paquets de //Node.js//. Depuis la version //0.6.3// de //Node.js//:
 +
 +  - npm fait partie de l'environnement //(nous l'avons installé comme prérequis de Flectra)//,
 +  - npm fonctionne avec un terminal et gère les dépendances pour une application et
 +  - npm permet également d'installer des applications //Node.js// disponibles depuis le référentiel //npm//.
 +
 +==== Impacts sur less et lessc ====
 +
 +{{Images_Cahier-101-03-006.png?25}} __Lors de l'installation initiale__ des anciennes version de //Flectra//, il ne fallait pas installer la dernière version de ''npm'', car elle générait une __erreur de style__ dûe à l'utilitaire ''lssc'' qui n'était pas reconnue.
 +
 +<WRAP box>
 +<file>
 +Style error
 +The style compilation failed, see the error below. Your recent actions may be the cause, please try reverting the changes you made.
 +
 +(b'', b'The "--no-js" argument is deprecated, as inline JavaScript is disabled by default. Use "--js" to enable inline JavaScript (not recommended).
 +[TypeError: Object function Object() { [native code] } has no method 'assign']
 +')This error occured while compiling the bundle 'web.assets_common' containing:
 +    - /web/static/lib/bootstrap/less/variables.less
 +...
 +</file>
 +</WRAP>
 +
 +{{Images_Cahier-101-03-003.png?22}} {{Images_Cahier-101-03-004.png?25}} Il est <wrap em>__plus que fortement recommandé__</wrap> de toujours utiliser un système de développement pour vérifier les mises à jours du code //Flectra// et surtout pour les logiciels prérequis.
 +
 +Vous pouvez consulter le document suivant pour la création d'un clone d'un //Serveur NethServer//: [[nethserver_101_cahier_11_nethserver_backuppc|Cahier-011]]: //NethServer & BackupPC// du "Cours NethServer-101".
 +
 +On vérifie la version actuelle.
 +
 +<file>
 +[root@tchana ~]# npm --version
 +
 +6.4.1
 +[root@tchana ~]#
 +</file>
 +
 +==== Mise à jour ====
 +
 +Mise à jour de //npm/node//.
 +
 +<file>
 +[root@tchana ~]# npm install -g npm
 +
 +/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
 +/usr/bin/npx -> /usr/lib/node_modules/npm/bin/npx-cli.js
 ++ npm@6.11.3
 +added 61 packages from 18 contributors, removed 18 packages and updated 69 packages in 12.179s
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Une mise à jour a été effectuée.
 +
 +Vu qu'il y a eu une mise à jour, on doit redémarrer le service //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Vérification du site Flectra ====
 +
 +{{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 à //Flectra// et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour de //npm//:  **https://www.flectra.micronator-dev.org/**.
 +
 +==== Retour à la version originalement installée ====
 +
 +Au cas où la nouvelle version occasionnerait des problèmes, on peut retourner à la version originalement installée.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# npm install -g npm@6.4.1
 +
 +/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
 +/usr/bin/npx -> /usr/lib/node_modules/npm/bin/npx-cli.js
 ++ npm@6.4.1
 +added 15 packages from 11 contributors, removed 54 packages and updated 47 packages in 8.626s
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +On vérifie.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# npm --version
 +
 +6.4.1
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +Redémarrage du service //Flectra//.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +{{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 à //Flectra// et on vérifie que tout fonctionne correctement tel qu'avec la version de //npm// originalement installée: **https://www.flectra.micronator-dev.org/**.
 +
 +===== less et less-plugin-clean-css =====
 +
 +On vérifie la version actuelle de ''less''.
 +
 +<file>
 +[root@tchana ~]# less --version
 +
 +less 458 (POSIX regular expressions)
 +Copyright (C) 1984-2012 Mark Nudelman
 +
 +less comes with NO WARRANTY, to the extent permitted by law.
 +For information about the terms of redistribution,
 +see the file named README in the less distribution.
 +Homepage: http://www.greenwoodsoftware.com/less
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie la version actuelle de ''lessc''.
 +
 +<file>
 +[root@tchana ~]# lessc --version
 +
 +lessc 3.9.0 (Less Compiler) [JavaScript]
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-003.png?22}} Pour éviter les erreurs de certificats //SSL// et de téléchargement.
 +
 +<file>
 +[root@tchana ~]# npm config set strict-ssl false
 +
 +[root@tchana ~]#
 +</file>  
 +
 +Mise à jour de ''less'' et de ''less-plugin-clean-css''.
 +
 +<file>
 +[root@tchana ~]# npm install -g less less-plugin-clean-css
 +
 +/usr/bin/lessc -> /usr/lib/node_modules/less/bin/lessc
 ++ less-plugin-clean-css@1.5.1
 ++ less@3.10.3
 +updated 7 packages in 4.233s
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Sept paquets ont été mis à jour, on devra redémarrer le service //Flectra// après la vérification de ''less'' et ''lessc''.
 +
 +On vérifie la version actuelle de ''less''.
 +
 +<file>
 +[root@tchana ~]# less --version
 +
 +less 458 (POSIX regular expressions)
 +Copyright (C) 1984-2012 Mark Nudelman
 +
 +less comes with NO WARRANTY, to the extent permitted by law.
 +For information about the terms of redistribution,
 +see the file named README in the less distribution.
 +Homepage: http://www.greenwoodsoftware.com/less
 +[root@tchana ~]#
 +</file>
 +
 +Il n'y a pas eu de mises à jour de ''less''. S'il y en avait eues, elles auraient été installées.
 +
 +On vérifie la version actuelle de ''lessc''.
 +
 +<file>
 +[root@tchana ~]# lessc --version
 +
 +lessc 3.10.3 (Less Compiler) [JavaScript]
 +[root@tchana ~]#
 +</file>
 +
 +Il y a eu une mise à jour de ''lessc''.
 +
 +Redémarrage du service //Flectra//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Vérification du site Flectra ====
 +
 +{{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 à //Flectra// et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour des deux paquets: **https://www.flectra.micronator-dev.org/**.
 +
 +===== wkhtmltox =====
 +
 +==== Dépendances pour wkhtmltopdf ====
 +
 +Mise à jour des dépendances.
 +
 +<file>
 +[root@tchana ~]# yum update -y fontconfig libpng libX11 libXext libXrender  \
 +                               xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi
 +
 +Modules complémentaires chargés : changelog, fastestmirror, nethserver_events, protectbase
 +Configuration du processus de mise à jour
 +Loading mirror speeds from cached hostfile
 + * base: centos.mirror.ca.planethoster.net
 +...
 +No packages marked for update
 +[root@tchana ~]#
 +</file>
 +
 +==== wkhtmltox ====
 +
 +Pour trouver la dernière version de ''wkhtmltopdf'' on se rend à l'//URL//: [[https://github.com/wkhtmltopdf/wkhtmltopdf/releases/|https://github.com/wkhtmltopdf/wkhtmltopdf/releases/]].
 +
 +<WRAP column 52%>
 +La dernière version disponible est la même que celle qu'on a installée à la section 
 +[[nethserver_201_cahier_07_flectra#wkhtmltox]]
 +.
 +
 +S'il y avait eu une nouvelle version, nous aurions pu l'installer de la même manière que celle que nous avons déjà installée.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-201-07-159.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Si des mises à jour ont été installées, il nous faut redémarrer //Flectra//.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# systemctl restart flectra
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +==== Vérification du site Flectra ====
 +
 +{{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 à //Flectra// et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour: **https://www.flectra.micronator-dev.org/**.
 +
 +===== Serveur NethServer =====
 +
 +De temps à autre, il faut mettre à jour le //Serveur NethServer// pour diverses raisons: suite à des mises à jour des logiciels qui composent //NethServer//, failles de sécurité découvertes par des utilisateurs ou des développeurs, etc.
 +
 +<WRAP column 46%>
 +<nowiki>-</nowiki> **Administration -> Gestionnaire des logiciels ->** onglet **Mises à jour**.\\ 
 +<nowiki>-</nowiki> **TÉLÉCHARGER ET INSTALLER**.
 +|{{ Images_Cahier-201-07-160.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +\\ 
 +\\ 
 +À la fin de la mise à jour, **Recharger la page**.
 +|{{ Images_Cahier-201-07-161.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_icone-201-003_Note.png?25}} La mise à jour du //Serveur NethServer// s'occupe aussi de celle de la //Collection PHP//.
 +
 +==== Vérification du site Flectra ====
 +
 +{{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 à //Flectra// et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour //NethServer//: **https://www.flectra.micronator-dev.org/**.
 +
 +===== 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 <wrap em>e</wrap> 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 [[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 ====
 +
 +Une fois que vous maîtrisez tous les aspects de: //Flectra//, //Let's Encrypt//, //Fail2ban//, //ClamAV// et de //BackupPC//, vous pouvez créer un réseau de Production incluant un serveur //Flectra//, un serveur de sauvegardes et un serveur de développement; ce qui est le but ultime que nous vous souhaitons.
 +
 +{{ Images_Cahier-201-07-162.png?600 }}
 +
 +====== Introduction à l'éditeur vi ======
 +
 +//Référence:// <del>http://www.iro.umontreal.ca/~dift3830/vi.html</del>. //(Dernière consultation, le 30 mai 2016. Novembre 2018, ce lien n'est plus fonctionnel.)//
 +
 +**''vi''** est un éditeur de texte très puissant. Sa convivialité par contre lui fait défaut. Ceci dit, il est toujours utile d'en connaître les rudiments, car son omniprésence est presque garantie sur les systèmes modernes.
 +
 +La documentation de ''vi'' étant très abondante, on se limitera pour cette démo aux commandes les plus usuelles.
 +
 +Tout d'abord l'invocation. On peut invoquer ''vi'' à partir du shell de plusieurs façons dont en voici quelques-unes:
 +
 +- **''vi''**: -> ouvre ''vi'' avec un contenu vide.
 +- **''vi nom_de_fichier''**: -> ouvre un fichier et l'affiche à l'écran.
 +- **''vi +nom_de_fichier''**: -> ouvre un fichier et positionne le curseur à la fin de celui-ci.
 +
 +Dès son invocation, ''vi'' se met en mode **commande**, dans ce mode il est possible d'entrer les commandes qui seront vues plus bas. Si on tape une commande susceptible de modifier un texte //(insertion d'un caractère par exemple)//, ''vi'' bascule en mode **édition**; dans ce mode tout caractère tapé sera considéré comme faisant partie du texte, tandis que les caractères saisis en mode //commande//, seront eux interprétés comme étant des commandes et ne seront jamais rajoutés au texte.
 +
 +Afin de basculer du mode //édition// au mode //commande// il suffit de presser la touche **[Échap]**.
 +
 +<WRAP column 45%>
 +Nous allons commencer par invoquer ''vi'' à partir du shell en tapant:
 +<file>
 +vi
 +</file>
 +
 +Ce qui devrait donner l'affichage ci-contre:
 +
 +''vi'' est déjà en mode //commande//, pour le faire passer en mode //édition//, on tape la commande ''i'' //(insert)// qui nous permet d'insérer du texte.
 +
 +<file>
 +i
 +</file>
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-01-018.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 45%>
 +Après avoir tapé le texte suivant:
 +
 +<file>
 +vi est un éditeur de texte très
 + 
 +utile pour la communauté des 
 +administrateurs.
 +</file>
 +
 +On obtient l'affichage ci-contre.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-01-019.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Après cela, on pourrait passer en mode //commande// par simple pression sur la touche [Échap].
 +
 +Une fois en mode //commande//, on voudrait par exemple, éliminer la ligne blanche qui se trouve juste après la première. Pour ce faire, on positionne le curseur a la hauteur de la 2e ligne et on tape ''dd''.
 +
 +Ceci aura pour effet de supprimer la ligne.
 +
 +Si on est satisfait, il ne nous reste plus qu'à sauvegarder le document sous le nom ''texte1.txt'' à l'aide de la commande suivante:
 +
 +<file>
 +:w texte1.txt
 +</file>
 +
 +//(Pour les sauvegardes ultérieures, il n'est pas nécessaire d'ajouter le nom du fichier)//.
 +
 +Afin de quitter ''vi'' il suffit de taper la commande:
 +
 +<file>
 +:q texte1.txt
 +</file>
 +
 +Les commandes abondent dans ''vi'', on n'en citera que quelques-unes.
 +
 +^ <WRAP centeralign>\\ Principales commandes de vi</WRAP> ^^
 +|//**Commande**//|//**Effets**//|
 +|i (insert)|Insère un texte sur le curseur|
 +|I|Insère au début de la ligne|
 +|a (append)|Insère après le curseur|
 +|A|Insère à la fin de la ligne|
 +|Les flèches|pour les déplacements|
 +|Ctrl-F (forward)|Défiler d'un écran vers le bas|
 +|Ctrl-B (backward)|Défiler d'un écran vers le haut|
 +|nG (goto)|va à la nième ligne dans le texte|
 +|G|Va à la fin du texte|
 +|x|Effacer le caractère courant|
 +|dd|Effacer la ligne courante|
 +|D|Effacer depuis la position du curseur jusqu'à la fin de la ligne|
 +|db (DeleteBegining)|Effacer depuis la position courante jusqu'au début de la ligne|
 +|/chaîne|rechercher la chaîne 'chaîne' dans le texte, on peut taper 'n' pour voir les autres occurrences|
 +|:w fichier|copie le texte courant sur le disque sous le nom fichier |
 +|:wq (write & quit)|écrit le fichier sur le disque et quitte vi.|
 +|:q!|Quitter sans sauvegarder.|
 +|:set nu|Affiche le numérotage des lignes.|
 +\\ 
 +\\ 
 +{{NS-101_002_Banniere_Victoire.png?50}}  Victoire totale, hissons la bannière de la victoire.
 +\\ 
 +
 +----
 +
 +====== Crédits ======
 +
 +© 2019  RF-232\\ 
 +Auteur: Michel-André.\\ 
 +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-07_Flectra_2019-09-24_11h47.odt</nowiki>.
 +
 +Historique des modifications:
 +
 +^Version^Date^Commentaire^Auteur|
 +|0.0.1|2019-09-18|Début.|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.
 +\\
 +\\