Outils pour utilisateurs

Outils du site


nethserver_201_cahier_07_flectra

Table des matières



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 (https) 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/.

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

  1. Préparation de l'environnement de travail incluant l'installation de la Collection PHP.
  2. Installation du serveur de bases de données PostgreSQL-11.
  3. Installation de la Collection RH-Python36, pour ne pas interférer avec la version de Python fournie par défaut avec le Serveur NethServer.
  4. Installation des prérequis pour Flectra.
  5. Téléchargement du code Flectra et installation.
  6. Redirection sécurisée.
  7. Post-scriptum Flectra.
  8. Sauvegarde/récupération de la base de données PostgreSQL.
  9. 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.
  10. Sauvegarde quotidienne NethServer.
  11. Mises à jour de: Flectra, PostgreSQL, RH-Python36, npm/node, less et less-plugin-clean-css, wkhtmltox, et du Serveur NethServer.

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.

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:

  1. Cahier-01: → Les bases de Linux.
  2. Cahier-02: → Installation et configuration des logiciels prérequis sur le poste de travail.
  3. Cahier-03: → Création d'un Serveur NethServer virtuel.
  4. Cahier-04: → Serveur NethServer LOCAL & Let's Encrypt.
  5. Cahier-05: → FAI, modem VDSL, domaine FQDN1) et Serveur NethServer physique.
  6. Cahier-06: → Installation de WordPress.
  7. Cahier-07: → Installation de l'extension de sécurité Wordfence.
  8. Cahier-08: → WooCommerce, comptes chez Stripe et PayPal pour les paiements en ligne.
  9. Cahier-09: → Sauvegarde/restauration ou migration d'un site avec l'extension Duplicator.
  10. Cahier-10: → Serveur mandataire inversé.
  11. 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.

  1. Cahier-201-01: → Dolibarr.
  2. Cahier-201-02: → Odoo-12.
  3. Cahier-201-03: → MediaWiki.
  4. Cahier-201-04: → DokuWiki.
  5. Cahier-201-05: → Moodle.
  6. Cahier-201-06: → Proxmox.
  7. 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.

Particularités de ce document

Notes au lecteur

* Les captures d'écrans ne sont que des références.
** 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.
*** 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

Manipulation, truc ou ruse pour se tirer d'embarras.
Une recommandation ou astuce.
Une note.
Une étape, note ou procédure à surveiller.
Paragraphe non complété ou non vérifié.
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.

[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 ~]#
Commande à exécuter si ce n'est déjà fait.
Commande indiquée à titre d'information seulement.


À savoir

Diagramme réseau

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 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/.
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/.

Documentation

Préparation de l'environnement de travail

Configuration du poste de travail

Voir la section À savoir du Cahier-03 : Création d'un Serveur NethServer virtuel du “Cours NethServer-101”.

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.

C:\Windows\System32\drivers\etc\hosts.

Les CNAME de notre Serveur NethServer virtuel LOCAL sont présents.

Installation d'un Serveur NethServer

Voir le 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 Cahier-03: Création d'un Serveur NethServer virtuel du “Cours NethServer-101”.

interface Web NethServer

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.

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.

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.

Si vous avez de la difficulté à vous connecter, vidanger le cache DNS du poste de travail et celui du navigateur Firefox.

- Sur le poste de travail, ouvrir un écran de commandes.
- ifconfig /flushdns.

Historique → Supprimer l'historique ré­cent… → tout → Effacer maintenant.


Fournisseur des comptes

Configuration → Fournisseur des comptes.

LDAP local est notre fournisseur de comptes.


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 Cahier-03: NethServer Virtuel du “Cours NethServer-101”, on peut le supprimer pour ce document.

Nom du serveur

Configuration → Nom du serveur.


Paramètres d'accès à distance

Sécurité → SSH.


FTP

Configuration → FTP onglet Configurer.

Le FTP ne doit pas être activé. Flectra s'occupe lui-même des téléchargements.

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.


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 Cahier-02 : Installations & configurations des logiciels prérequis du “Cours NethServer-101”.

On se logue en tant que l'utilisateur root.

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 ~]#

Adresse IP

On vérifie les adresses IP du serveur.

[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 ~]#

Fail2ban

On vérifie que le pare-feu Fail2ban soit installé.

[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 ~]#

On vérifie que Fail2ban roule sur le serveur.

[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 ~]#

ClamAV

Par défaut ClamAV est installé, mais partiellement, et s'occupe seulement du balayage des courriels.

Dans le 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é.

[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 ~]#

Configuration → Scanner Antivirus → onglet Clamscan.

ClamAV lancera un balayage complet du système à 01h00.


Utilisateurs

Utilisateur michelandre

Gestion → Utilisateurs et groupes → onglet Utilisateurs.

L'utilisateur michelandre a été créé dans le 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.

[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 ~]#

Comme on le voit, notre version 5.4.16 de PHP est légèrement vieillotte.

Nous allons installer la Collection PHP qui fournit une version plus récente tout en gardant installée la version originale.

Collections de logiciels

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.
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.

On vérifie si le référentiel stephdl est déjà installé.

[root@tchana ~]# rpm -qa | grep nethserver-stephdl

nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
[root@tchana ~]#

Si ce n'est déjà fait, on installe ce référentiel.

[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 ~]#

Vérification.

[root@tchana ~]# rpm -qa | grep stephdl

nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
[root@tchana ~]#

Référentiel remi

On vérifie si le référentiel remi est déjà installé.

[root@tchana ~]# rpm -qa | grep remi

remi-release-7.6-2.el7.remi.noarch
[root@tchana ~]#

Si ce n'est déjà fait, on installe ce référentiel.

[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 ~]#

On vérifie.

[root@tchana ~]# rpm -qa | grep remi

remi-release-7.6-2.el7.remi.noarch
[root@tchana ~]#

Installation de la Collection PHP

[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 ~]#

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.

  1. À 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.

  1. À 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

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.

[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 ~]#

On vérifie le répertoire /opt.

[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 ~]#

On affiche le répertoire /opt/remi.

[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 ~]#

PHP72 par défaut après une connexion à la ligne de commande

Référence: 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.
Prendre tout le contenu de l'encadré pour la commande.

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

On rend le fichier exécutable.

[root@tchana ~]# chmod +x /etc/profile.d/activer-php72.sh

[root@tchana ~]#

On vérifie.

[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 ~]#

Vérification si PHP72 est le défaut

On ferme la connexion PuTTY et on en ouvre une nouvelle.

On vérifie l'installation de la Collection.

[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 ~]#

Collections installées.

[root@tchana ~]# scl -l

php56
php70
php71
php72
php73
[root@tchana ~]#

Quel est le PHP par défaut?

[root@tchana ~]# which php

/opt/remi/php72/root/usr/bin/php
[root@tchana ~]#

Quelle est sa version?

[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 ~]#

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/profile.d/activer-php72.sh

/etc/profile.d/activer-php72.sh
[root@tchana ~]#

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:

[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 ~]#

S'il y avait une mise à jour, elle serait installée avec cette commande.
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.

[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 ~]#

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 > signifie “plus grand que”.
Nous allons ajuster: MemoryLimit (250M) > PostMaxSize (100M) > 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.

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.

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.


Ajustements des paramètres de la version PHP-7.2

Onglet Php V7.2 SCL
Ajuster tel que ci-contre (250M - 100M - 75M)
→ SOUMETTRE.

Allow PHP access to remote files est un bris de sécurité.


Onglet Version par défaut de PHP
Ajuster tel que ci-contre (250M - 75M - 75M)
→ SOUMETTRE.

Autoriser l'accès PHP aux fichiers distants est un bris de sécurité.

Vérifications à la ligne de commande

MemoryLimit
[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i Memory_Limit

memory_limit                           = 250M
[root@tchana ~]#
PostMaxSize
[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i post_max_size

post_max_size                          = 100M
[root@tchana ~]#
UploadMaxFilesize
[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i upload_max_filesize

upload_max_filesize                    = 75M

Comme on le voit ci-dessus, les grandeurs maximales pour PHP-7.2 sont maintenant de: MemoryLimit (250M) > PostMaxSize (100M) > UploadMaxFilesize (75M).

On vérifie la configuration de PHP-7.2.

[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 ~]#

Instantané VirtualBox

À 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

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.

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 ~]

On affiche les adresses IP du serveur.

[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 ~]#

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.

[root@tchana ~]# uname -p

x86_64
[root@tchana ~]#

Version CentOS

Pour connaître la version CentOS dont notre serveur est issu.

[root@tchana ~]# cat /etc/centos-release

CentOS Linux release 7.6.1810 (Core)
[root@tchana ~]#

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

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

Installation du référentiel

La commande pour installer le référentiel PostgreSQL est composée de 2 parties:

  1. yum install -y et
  2. 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.

[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 ~]#

Le référentiel PostgreSQL est installé.

Installation

Maintenant, on peut procéder à l'installation de PostgreSQL-11.

[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 ~]#

On vérifie l'installation.

[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 ~]#

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
Références: 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.

[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 ~]#

On affiche les informations du paquet yum-plugin-protectbase.

[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 ~]#

On s'assure que le paquet est activé c.-à-d. enabled = 1.

[root@tchana ~]# cat /etc/yum/pluginconf.d/protectbase.conf

[main]
enabled = 1
[root@tchana ~]#

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].

...
[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

...

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.

[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 ~]#

Initialisation de la BD

On initialise la BD.
Peut prendre un certain temps.

[root@tchana ~]# /usr/pgsql-11/bin/postgresql-11-setup initdb

Initializing database ... OK
[root@tchana ~]#

Activation du service PostgreSQL

On active le service pour qu'il démarre avec l'amorçage du Serveur NethServer.

[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 ~]#

On démarre le service PostgreSQL.

[root@tchana ~]# systemctl start postgresql-11.service

[root@tchana ~]#

On examine le statut du service PostgreSQL.

[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 ~]#

PostgreSQL-11 est installé et protégé contre les mises à jour par tous les référentiels, sauf pgdg11/7/x86_64.

PostgreSQL-11 - Premiers pas

Cette section est inspirée de l'article: 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.

[root@tchana ~]# su - postgres

-bash-4.2$

On vérifie.

-bash-4.2$ whoami

postgres
-bash-4.2$

On lance la console PostgreSQL.

-bash-4.2$ psql

postgres
-bash-4.2$ psql
psql (11.3)
Saisissez « help » pour l'aide.

postgres=#

On vérifie que l'aide fonctionne correctement.

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=#

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_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.

postgres=# CREATE SCHEMA test;

CREATE SCHEMA
postgres=#

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.

L'utilisateur PostgreSQL toto n'a rien à voir avec l'utilisateur NethServer toto.

postgres=# CREATE USER toto PASSWORD 'fghtbgh';

CREATE ROLE
postgres=#

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.

postgres=# GRANT ALL ON SCHEMA test TO toto;

GRANT
postgres=#

On donne au nouveau rôle tous les droits (tel que la possibilité d'insertion) sur toutes les tables du nouveau schéma.

postgres=# GRANT ALL ON ALL TABLES IN SCHEMA test TO toto;

GRANT
postgres=#

Sortie de la console PostgreSQL

On quitte la console PostgreSQL.

postgres=# \q

-bash-4.2$

On retourne à l'utilisateur root.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

Utilisateur standard Linux (toto) et PostgreSQL

On crée un utilisateur standard Linux.

[root@tchana ~]# useradd -m -U -s /bin/bash  toto

[root@tchana ~]#


On vérifie.

[root@tchana ~]# cat /etc/passwd | grep toto

toto:x:1002:1002::/home/toto:/bin/bash
[root@tchana ~]#

On lui octroie un mot de passe.

[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 ~]#

On se substitue à l'utilisateur toto.

[root@tchana ~]# su - toto

toto@tchana ~]$

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.

-bash-4.2$ su - toto

Mot de passe : mot-de-passe-de-toto
-bash-4.2$

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.

-bash-4.2$ psql -d postgres

psql (11.3)
Saisissez « help » pour l'aide.

postgres=>

HELP

On essaie l'aide.

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=>

CREATE

Dans le schéma test, l'utilisateur toto crée une table test.

postgres=> CREATE TABLE test.test (testdecol varchar(20));

CREATE TABLE
postgres=>

INSERT

On insère une entrée dans la nouvelle table.

postgres=> insert into test.test (testdecol) values ('Ça fonctionne!');

INSERT 0 1
postgres=>

SELECT

Sélection depuis une table.

postgres=> SELECT * from test.test;

   testdecol
-----------
 Ça fonctionne!
(1 ligne)

postgres=>

Tout fonctionne correctement.

Déconnexion

L'utilisateur toto quitte la console PostgreSQL.

postgres=> \q

-bash-4.2$

On vérifie qui on est.

-bash-4.2$ whoami

toto
-bash-4.2$

On retourne à l'utilisateur root.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

Suppression de l'utilisateur standard toto

On supprime l'utilisateur standard Linux toto et son répertoire.

[root@tchana ~]# userdel -f -r toto

[root@tchana ~]#

On vérifie.

[root@tchana ~]# cat /etc/passwd | grep toto

[root@tchana ~]#

Nettoyage de PostgreSQL

Suppression du SCHEMA test

On se substitue au super-utilisateur postgres.

[root@tchana ~]# su - postgres

Dernière connexion : jeudi 16 mai 2019 à 17:46:27 EDT EDT sur pts/0
-bash-4.2$

On vérifie.

-bash-4.2$ whoami

postgres
-bash-4.2$

On lance la console PostgreSQL.

-bash-4.2$ psql

psql (11.3)
Saisissez « help » pour l'aide.
postgres=#

On affiche les SCHEMA.

postgres=# \dn

   Liste des schémas
  Nom   | Propriétaire
--------+--------------
 public | postgres
 test   | postgres
(2 lignes)

postgres=#

On supprime le SCHEMA test.

postgres=# DROP SCHEMA test CASCADE;

NOTICE:  DROP cascade sur table test.test
DROP SCHEMA
postgres=#

On vérifie la suppression.

postgres=# \dn

   Liste des schémas
  Nom   | Propriétaire
--------+--------------
 public | postgres
(1 ligne)

postgres=#

Suppression de l'utilisateur PostgreSQL toto

postgres=# DROP USER toto;

DROP ROLE
postgres=#

On vérifie la suppression.

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=#

On quitte la console PostgreSQL.

postgres=# \q

-bash-4.2$

On quitte la substitution d'utilisateur.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

On vérifie qu'on est bien de retour à l'utilisateur root.

[root@tchana ~]# whoami

root
[root@tchana ~]#

PostgreSQL-11 fonctionne correctement.

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.

[root@tchana ~]# whoami

root
[root@tchana ~]#

En tant qu'utilisateur root, on remplace ident par md5 dans le fichier pg_hba.conf.

[root@tchana ~]# sed -i "/^host/s/ident/md5/g" /var/lib/pgsql/11/data/pg_hba.conf

[root@tchana ~]#

On vérifie.

[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 ~]#

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.

[root@tchana ~]# useradd -m -U -r -d /opt/flectra  -s /bin/bash flectra

[root@tchana ~]#

On octroie un mot de passe robuste à l'utilisateur flectra de Linux.

[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 ~]#

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.

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 As1.$AS1.$ 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.

[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 ~]#

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.

L'utilisateur flectra a été créé dans PostgreSQL par le super-utilisateur postgres et non dans le Serveur NethServer.

Sécurité

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 --db-filter 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 db_name et db_filter 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 list_db à 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 --db_user 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.



  • 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

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

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 page de référence, le paragraphe Configuring Odoo mentionne le paramètre admin_passwd.

“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).

Si les écrans de gestion ne doivent pas être accessibles du tout, vous devez définir l'option de configuration list_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_name approprié (et éventuellement aussi db_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_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:

python -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'

qui générera une chaîne imprimable pseudo-aléatoire de 32 caractères.

Instantané VirtualBox

À 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).

À l'URL: 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.

Référentiel centos-sclo-rh

Le référentiel centos-sclo-rh est déjà connu du Serveur NethServer.

[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 ~]#

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.

Installation

[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 ~]#

Une fois la Collection RH-Python36 installée, on peut vérifier sa présence sur le serveur.

[root@tchana ~]# scl -l

httpd24
php56
php70
php71
php72
php73
rh-python36
[root@tchana ~]#

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.

[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 ~]#

On affiche la version de la commande python de la Collection RH-Python36.

[root@tchana ~]# /opt/rh/rh-python36/root/usr/bin/python  --version

Python 3.6.3
[root@tchana ~]#

Instantané VirtualBox

À 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.

La Collection RH-Python36 est installée.

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.

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 Désinstallation des compilateurs gcc et cpp .

Installation

[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 ~]#

Logiciels du référentiel EPEL

On s'assure que le référentiel EPEL est connu de yum.

[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 ~]#

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).

[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 ~]#

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.
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.

On installe Node.js-v10.15.3 qui installera npm.
Les versions disponibles se trouvent à l'URL:

Node.js-v10.15.3

On crée un répertoire de travail.

[root@tchana ~]# mkdir /temp

[root@tchana ~]#

On s'y rend.

[root@tchana ~]# cd /temp/

[root@tchana temp]#

On télécharge la version Node.js-v10.15.3.

[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/s   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]#

On extraie vers le répertoire /usr.

[root@tchana temp]# tar -C /usr --strip-components 1 -xzf node-v10.15.3-linux-x64.tar.gz

[root@tchana temp]#

On vérifie la présence de npm.

[root@tchana temp]# which npm

/usr/bin/npm
[root@tchana temp]#

On vérifie la version.

[root@tchana temp]# npm --version

6.4.1
[root@tchana temp]#

less et less-plugin-clean-css

less

Référence: 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.

Ce greffon compresse la sortie css de less en utilisant clean-css.

Pour éviter les erreurs de certificats SSL et de téléchargement.

[root@tchana temp]# npm config set strict-ssl false

[root@tchana temp]#

On installe ces logiciels.

[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]#

On vérifie la présence de less.

[root@tchana temp]# which less

/usr/bin/less
[root@tchana temp]#

On vérifie sa version.

[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]#

On vérifie la présence de lessc.

[root@tchana temp]# which lessc

/usr/bin/lessc
[root@tchana temp]#

On vérifie sa version.

[root@tchana temp]# lessc --version

lessc 3.9.0 (Less Compiler) [JavaScript]
[root@tchana temp]#

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/.
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.

[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]#

wkhtmltox

Si ce n'est déjà fait, on se rend dans le répertoire de travail.

[root@tchana ~]# cd /temp

[root@tchana temp]#

On nettoie le répertoire /temp.

[root@tchana temp]# rm -rf *

[root@tchana temp]#

À l'aide d'un navigateur Internet, on se rend à l'Url:

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.

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.

[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]#

On vérifie l'installation des fichiers.

[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]#

On supprime tout dans le répertoire /temp.

[root@tchana temp]# rm -rf /temp/*

[root@tchana temp]#

On retourne dans le répertoire personnel de root.

[root@tchana temp]# cd

[root@tchana ~]#

On vérifie.

[root@tchana ~]# pwd

/root
[root@tchana ~]#

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.

[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 ~]#

Vérifications finales

NPM

[root@tchana ~]# which npm

/usr/local/bin/npm
[root@tchana ~]#
[root@tchana ~]# npm --version

6.4.1
[root@tchana ~]#

LESS

[root@tchana ~]# which less

/usr/bin/less
[root@tchana ~]#
[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 ~]#

LESSC

[root@tchana ~]# which lessc

/usr/bin/lessc
[root@tchana ~]#
[root@tchana ~]# lessc --version

lessc 3.9.0 (Less Compiler) [JavaScript]
[root@tchana ~]#

Instantané VirtualBox

À 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.

Tous les prérequis pour Flectra sont remplis, on est prêt pour l'installation.

Flectra - Installation

Pare-feu

On ouvre le port 7073 du pare-feu pour le réseau vert seulement.

[root@tchana ~]# config set fw_flectra service status enabled TCPPort 7073 access green

[root@tchana ~]#

Pour ouvrir le port 7073 pour les réseaux vert et rouge.

[root@tchana ~]# config set fw_flectra service status enabled TCPPort 7073 access green,red

[root@tchana ~]#

On signale le changement.

[root@tchana ~]# signal-event firewall-adjust

[root@tchana ~]#

On vérifie.

[root@tchana ~]# cat /etc/shorewall/rules | grep 7073

ACCEPT  loc     $FW     tcp     7073
[root@tchana ~]#
[root@tchana ~]# cat /etc/shorewall/rules | grep 7073

ACCEPT  loc     $FW     tcp     7073
ACCEPT  net     $FW     tcp     7073
[root@tchana ~]#

On affiche la configuration du port ouvert pour Flectra.

[root@tchana ~]# config show fw_flectra

fw_flectra=service
    TCPPort=7073
    access=green
    status=enabled
[root@tchana ~]#
[root@tchana ~]# config show fw_flectra

fw_flectra=service
    TCPPort=7073
    access=green,red
    status=enabled
[root@tchana ~]#

git clone Flectra

On se substitue à l'utilisateur flectra.

Remarquez le changement de l'invite.

[root@tchana ~]# su - flectra

[flectra@tchana ~]$

On vérifie quel utilisateur nous sommes.

[flectra@tchana ~]$ whoami

flectra
[flectra@tchana ~]$

On vérifie le chemin du répertoire courant.

[flectra@tchana ~]$ pwd

/opt/flectra
[flectra@tchana ~]$

On se rend à l'URL https://github.com/flectra-hq/flectra.

Clone or download → on clique l'icône Copier dans le presse-papier.

Le lien copié est: 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.

[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 ~]$

On vérifie.

[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 ~]$
[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 ~]$

Environnement virtuel pour l'utilisateur flectra

On active Python-36.

[flectra@tchana ~]$ scl enable rh-python36 bash

[flectra@tchana ~]$

On crée un environnement virtuel pour l'utilisateur flectra (peut prendre quelques secondes).

[flectra@tchana ~]$ python3 -m venv flectra-venv

[flectra@tchana ~]$

On vérifie.

[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 ~]$

On active l'environnement virtuel.

[flectra@tchana ~]$ source flectra-venv/bin/activate

(flectra-venv) [flectra@tchana ~]$

requirements.txt

C'est ici que gcc est utilisé pour la compilation des exigences de Flectra.

(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 ~]$

On installe toutes les exigences contenues dans le fichier requirements.txt. (Peu prendre un certain temps, surtout pour lxml.)

(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 ~]$

On peut ignorer la suggestion pour la mise à jour de pip.

On désactive l'environnement virtuel et on le quitte.

(flectra-venv) [flectra@tchana ~]$ deactivate && exit

exit
[flectra@tchana ~]$

On quitte la substitution d'utilisateur.

[flectra@tchana ~]$ exit

déconnexion
[root@tchana ~]#

On vérifie qui nous sommes.

[root@tchana ~]# whoami

root
[root@tchana ~]#

Journal

Création du répertoire

Prendre tout le contenu de l'encadré pour la commande.

DIR="/var/log/flectra"
for NAME in $DIR
do
if [ ! -d $NAME ]; then
   mkdir $NAME
   chown flectra.flectra $NAME
   chmod 700 $NAME
fi
done

On vérifie la création du répertoire.

[root@tchana ~]# ls -alsd /var/log/flectra

0 drwx------ 2 flectra flectra 32 19 sept. 01:20 /var/log/flectra
[root@tchana ~]#

logrotation

Nous autorisons la rotation du journal flectra-server de telle sorte qu'il sera géré de la même manière que ceux de toutes les autres applications.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie la création du fichier.

[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 ~]#

On vérifie le début du contenu.

[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 ~]#

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.

Le journal pourra être examiné dans l'interface Web Nethserver en se rendant à: Administration → Logs → et en cliquant /var/log/flectra/flectra-server.log.

Le premier examen du journal sera très long à se charger, car il contiendra les infos de débogage.

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/logrotate.d/flectra-server

/etc/logrotate.d/flectra-server
[root@tchana ~]#

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[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 ~]#

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.

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.

[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 ~]#

On rend le script exécutable par le propriétaire/groupe et on enlève tous les droits à “other”.

[root@dorgee ~]# chmod 550 /etc/flectra-server.conf

[root@dorgee ~]#

On change le propriétaire et le groupe pour flectra:flectra.

[root@dorgee ~]# chown flectra:flectra /etc/flectra-server.conf

[root@dorgee ~]#

On vérifie.

[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 ~]#

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

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie la création du fichier.

[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 ~]#

On vérifie son contenu.

[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 ~]#

Premier démarrage de Flectra

On recharge la configuration du gestionnaire systemd en lançant la commande systemctl3) avec le paramètre daemon-reload4).

[root@tchana ~]# systemctl daemon-reload

[root@tchana ~]#

La première fois qu'on lance Flectra, on utilise les paramètre enable5) et –now6).

[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 ~]#

Vérification

Peut prendre quelques secondes avant que Flectra soit complètement démarré.

[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 ~]#

Finalisation de l'installation

Accès à Flectra

  1. Autoriser les témoins et activer JavaScript du fureteur Internet.


  1. On se rend à la page de notre site Flectra en spécifiant le port :7073 . http://www.micronator-dev.org:7073/ ou http://10.10.10.75:7073/ pas de https pour l'instant. L'affichage de la page peut prendre un certain temps (minutes).

Création d'une nouvelle base de données

Master password: → le mot de passe qu'on a spécifié dans le fichier de configuration /etc/flectra-server.conf à la ligne: db_password = fghtbgh à la section 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.
(Ne pas cocher pour un site en Production.)

On clique Create database pour créer la base de données de notre société.

Ce processus peut prendre un certain temps (quelques minutes). Être patient!

La page d'accueil s'affiche.

Nous sommes prêt à utiliser Flectra.

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_handler à sa valeur par défaut en dé-commentant la ligne log_handler = werkzeug:WARNING et en commentant [ ; ] la ligne log_handler = :DEBUG.

Fichier final de configuration /etc/flectra-server.conf

...
; 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
...

À la console du serveur, on ouvre le fichier avec l'éditeur vi.

Vu que le fichier n'a pas de droit d'écriture, lorsque root écrira les modifications, il devra utiliser w!, c.-à-d. [ w ] + [ ! ].

vi /etc/flectra-server.conf

On vérifie les changements dans le fichiers /etc/flectra-server.conf.

[root@tchana ~]# cat /etc/flectra-server.conf | grep log_handler

log_handler = werkzeug:WARNING
;log_handler = :DEBUG
[root@tchana ~]#

Nous avons changé un paramètre important, on redémarre le service Flectra afin qu'il recharge son fichier de configuration.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

Rotation du journal Flectra

Le journal de Flectra est très volumineux, car il contient toutes les entrées de débogage.

[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 ~]$

On force la rotation de ce journal.

[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 ~]$

On vérifie.

[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 ~]#

Désinstallation des compilateurs gcc et cpp

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.
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.

[root@tchana ~]# rpm -e --nodeps gcc cpp

[root@tchana ~]#

On vérifie cpp.

[root@tchana ~]# rpm -qa | grep cpp

[root@tchana ~]#

On vérifie gcc.

[root@tchana ~]# rpm -qa | grep gcc

libgcc-4.8.5-36.el7_6.2.x86_64
[root@tchana ~]#

Les compilateurs gcc et cpp ont été supprimés.
La librairie libgcc 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

À 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.

L'installation est réussie. Tout fonctionne correctement.

Flectra - Redirection sécurisée

Description

Un grand merci à Markus Neuberger, ambassadeur de NethServer.

Si nous n'avons aucun site Web et que nous spécifions seulement http://www.micronator-dev.org/ ou 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.

Contenu du répertoire /var/www/html/.

[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 ~]#

Serveur branché directement à l'Internet

Voir la section 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

Avant d'installer un certificat Let's Encrypt selon la section 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/.

On vérifie le résultat.

On se déconnecte de Cloudflare.com.

Création d'entrées DNS pour Flectra

Configuration → DNS onglet Hôtes → CRÉER NOUVEAU.

- On entre le informations demandées.
- SOUMETTRE.


On vérifie le résultat.

- Alias du serveur.
- CRÉER NOUVEAU.

- On entre les informations demandées.
- SOUMETTRE.


On vérifie le résultat.

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.

Le certificat sera “émis pour” le premier domaine de la liste, c.-à-d. micronator-dev.org (voir plus loin, Émis pour.)

[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 ~]#

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.

[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 ~]#

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.

- Le cadenas est vert.
- On clique l'icône >.


Plus d'informations.

- Onglet Sécurité.
- Afficher le certificat.

- Onglet Général.
- Émis pour → micronator-dev.org (le premier domai­ne de la liste, lors de la demande).
- Émis par → Let's Encrypt Authority X3.

- Onglet Détails.
- Nom alternatif du sujet du certificat.
- Tous les CNAME sont présents.
- Fermer toutes les fenêtres.

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

C:\Windows\System32\drivers\etc\hosts

du poste de travail afin qu'il puisse trouver l'adresse IP de notre serveur Flectra LOCAL.

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.

Redirection par le module Proxy inverse

Référence: 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.

Installation

Administration → Gestionnaire des logiciels → onglet Disponible → cocher Proxy inverse → AJOUTER.


APPLIQUER LES CHAN­GE­MENTS.


Recharger la page.

Le nouveau menu Proxy inverse est disponible.

Configuration en mandataire inversé

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.

On entre les informations demandées.

SOUMETTRE.

On vérifie le résultat.

Vérification de la connexion redirigée et sécurisée

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.

Si on utilise seulement le protocole http://..., il sera transformé en https:…, car lors de la configuration à l'onglet Hôtes virtuels, nous avons coché Nécessite une connexion SSL chiffrée.

- Le cadenas est vert.
- On se connecte.

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.


La page d'accueil de Flectra s'affiche et le cadenas est toujours vert.

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.

On vérifie le résultat.

Instantané VirtualBox

À 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.

[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 ~]#

Flectra

On vérifie son statut.

[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 ~]#

Administration de Flectra

Pour administrer Flectra, il suffit de se connecter avec le justificatif choisi lors de la 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 https

- Le cadenas est vert.
- On se connecte.


La page d'accueil de Flectra s'affiche et le cadenas est toujours vert.

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.

  1. À l'aide de l'interface Web: Administration → Logs → /var/log/flectra/flectra-server.log.
  2. 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.

[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available"

[root@tchana ~]#

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.

[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 ~]#

On se substitue à l'utilisateur flectra.

[root@tchana ~]# su - flectra

Dernière connexion : mercredi 22 mai 2019 à 00:12:34 EDT sur pts/1
[flectra@tchana ~]$

On active Python36.

[flectra@tchana ~]$ scl enable rh-python36 bash

[flectra@tchana ~]$

On s'assure que nous sommes dans le répertoire personnel de l'utilisateur flectra.

[flectra@tchana ~]$ pwd

/opt/flectra
[flectra@tchana ~]$

On active l'environnement virtuel flectra-venv.

[flectra@tchana ~]$ source flectra-venv/bin/activate

(flectra-venv) [flectra@tchana ~]$

On installe le module phonenumbers.

(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 ~]$

On désactive l'environnement virtuel et on quitte.

(flectra-venv) [flectra@tchana ~]$ deactivate && exit

exit
[flectra@tchana ~]$

On vérifie qui nous sommes.

[flectra@tchana ~]$ whoami

flectra
[flectra@tchana ~]$

On quitte la substitution d'utilisateur.

[flectra@tchana ~]$ exit

déconnexion
[root@tchana ~]#

On vérifie qui nous sommes.

[root@tchana ~]# whoami

root
[root@tchana ~]#

Le module manquant a été installé.

On redémarre Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

On vérifie le journal.

[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 ~]#

Il n'existe aucune nouvelle entrée indiquant un module manquant.

On vérifie pour des erreurs.

[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep -i error

[root@tchana ~]#

On vérifie pour des avertissements.

[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 ~]#

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.

[root@tchana ~]# cat /etc/flectra-server.conf | grep db_password

db_password = fghtbgh
[root@tchana ~]#

Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe de l'utilisateur flectra de PostgreSQL:

  1. à la console du Serveur NethServer,
  2. à la console de PostgreSQL et
  3. dans le fichier /etc/flectra-server.conf.

À la console du Serveur NethServer

On change le mot de passe Linux de l'utilisateur flectra.

[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 ~]#

L'avertissement "MOT DE PASSE INCORRECT : Le mot de passe comporte moins de 8 caractères" 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.
Il ne faut pas prendre notre exemple pour un serveur en production, mais un mot de passe robuste.
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 As1.$AS1.$ 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.

[root@tchana ~]# su - postgres

-bash-4.2$

On vérifie.

-bash-4.2$ whoami

postgres
-bash-4.2$

L'utilisateur postgres entre dans la console PostgreSQL.

-bash-4.2$ psql

psql (11.3))
Saisissez « help » pour l'aide.

postgres=#

On change le mot de passe de l'utilisateur flectra de PostgreSQL.

postgres=# ALTER ROLE flectra WITH PASSWORD 'nouveau-mot-de-passe';

ALTER ROLE
postgres=#

On quitte la console PostgreSQL.

postgres=# \q

-bash-4.2$

On retourne à l'utilisateur root.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

On vérifie.

[root@tchana ~]# whoami

root
[root@tchana ~]#

Dans le fichier /etc/flectra-server.conf

IMPORTANT. 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.

[root@tchana ~]# cat /etc/flectra-server.conf | grep db_password

db_password = fghtbgh
[root@tchana ~]#

Redémarrage de PostgreSQL

On redémarre le service PostgreSQL.

[root@tchana ~]# systemctl restart postgresql-11

[root@tchana ~]#

On vérifie.

[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 ~]#

Redémarrage de Flectra

On redémarre le service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

On vérifie.

[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 ~]#

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.

[root@tchana ~]# cat /etc/flectra-server.conf | grep admin_passwd

admin_passwd = fghtbgh
[root@tchana ~]#

Si on veut changer le mot de passe du super utilisateur PostgreSQL (postgres), il faut aussi le changer:

  1. à la console du Serveur NethServer,
  2. à la console de PostgreSQL et
  3. dans le fichier /etc/flectra-server.conf.

À la console du Serveur NethServer

On vérifie si nous sommes root.

root@tchana ~]# whoami

root
[root@tchana ~]#

On change le mot de passe Linux du super-utilisateur postgres.

[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 ~]#

À la console de PostgreSQL

On se substitue au super-utilisateur postgres.

[root@tchana ~]# su - postgres

Dernière connexion : dimanche 19 mai 2019 à 13:14:13 EDT sur pts/0
-bash-4.2$

On ouvre la console PostgreSQL.

-bash-4.2$ psql

psql (11.3)
Saisissez « help » pour l'aide.

postgres=#

On change le mot de passe du super-utilisateur postgres.

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=#

On sort de la console PostgreSQL.

postgres=# \q

-bash-4.2$

On retourne à l'utilisateur root.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

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.

[root@tchana ~]# cat /etc/flectra-server.conf | grep admin_passwd

admin_passwd = fghtbgh
[root@tchana ~]#

Redémarrage de PostgreSQL

On redémarre PostgreSQL.

[root@tchana ~]# systemctl restart postgresql-11

[root@tchana ~]#

On vérifie.

[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 ~]#

Redémarrage de Flectra

On redémarre le service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

On vérifie.

[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 ~]#

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 Création d'une nouvelle base de données .

On se déconnecte de Flectra et on se reconnecte avec le nouveau mot de passe.

On se connecte.

La page d'accueil de Flectra s'affiche.

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.


Configuration → Sociétés → Modifier.

On survole avec la souris pour faire apparaître le crayon qu'on clique.

On choisit l'image de notre logo → Ouvrir.

On entre le nom de notre société → Sauvegarder.

On rafraîchie la page et notre logo apparaît.

Notre logo s'affichera aussi sur la page de connexion.

Sauvegarde/restauration manuelle de la BD

Description

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.

[root@tchana ~]# mkdir /var/lib/pgsql/sauvegarde

[root@tchana ~]#

On change le propriétaire et le groupe.

[root@tchana ~]# chown postgres:postgres /var/lib/pgsql/sauvegarde

[root@tchana ~]#

On ajuste tous les droits afin que seul l'utilisateur postgres puisse y accéder.

[root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde

[root@tchana ~]#

On vérifie.

[root@tchana ~]# ls -alsd /var/lib/pgsql/sauvegarde

0 drwx------ 2 postgres postgres 6 20 sept. 14:46 /var/lib/pgsql/sauvegarde
[root@tchana ~]#

Script de sauvegarde PostgreSQL

Prendre tout le contenu de l'encadré pour la commande.

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

Le paramètre -c (–clean) de la commande pg_dumpall indique d'inclure les commandes SQL DROP pour nettoyer (supprimer) les bases de données avant de les recréer. La commande DROP pour les rôles et les espaces de table (tablespaces) est également ajoutée.

On vérifie les premières lignes du fichier.

[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 ~]#

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.

[root@tchana ~]# chown root:root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh

[root@tchana ~]#

On ajuste les droits pour rendre le fichier exécutable par l'utilisateur root uniquement.

[root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh

[root@tchana ~]#

On vérifie.

[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 ~]#

Sauvegarde

Vérification du script de sauvegarde

On vérifie le fonctionnement de notre script de sauvegarde en simulant ce que fera cron.

[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 ~]#

On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie.

[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 ~]#

Comme on le voit, seul root pourra manipuler le fichier de sauvegarde.

Journal du Serveur NethServer

...
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 ********************
...

Si flectra-server n'est pas en exécution (arrêté)

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.

[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 ~]#

On arrête Flectra.

[root@tchana ~]# systemctl stop flectra

[root@tchana ~]#

On vérifie.

[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 ~]#

On relance le script de sauvegarde.

[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 ~]#

On vérifie le statut de Flectra.

[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 ~]#

Le script a bien démarré Flectra.

On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie.

[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 ~]#

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.

Prendre tout le contenu de l'encadré pour la commande.

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

Le répertoire inclut le script sauvegarde-postgres.sh et le fichier Flectra.dump de la sauvegarde PostgreSQL.

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /var/lib/pgsql/sauvegarde/

/var/lib/pgsql/sauvegarde/
[root@tchana ~]#

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[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 ~]#

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.

Prendre tout le contenu de l'encadré pour la commande.

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

L'heure peut être choisie à votre entière discrétion.

On vérifie le contenu du fichier de la tâche.

[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 ~]#

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.

[root@tchana ~]# chmod 700 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

[root@tchana ~]#

On vérifie

[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 ~]#

On développe le gabarit personnalisé.

[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab

[root@tchana ~]#

On redémarre le démon crond.

[root@tchana ~]# systemctl restart crond

[root@tchana ~]#

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.

[root@tchana ~]# sed -i 's/^0 2/\* \*/' /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

[root@tchana ~]#

On vérifie.

[root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

#
* * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh

[root@tchana ~]#

On développe le gabarit personnalisé.

[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab

[root@tchana ~]#

On redémarre le démon crond.

[root@tchana ~]# systemctl restart crond

[root@tchana ~]#

Suivi

On lance la commande ci-dessous pour suivre toutes les tâches cron et on filtre avec grep celles qui contiendront sauvegarde.

[root@tchana ~]#  tail -F /var/log/messages | grep sauvegarde

À toutes les minutes, on voit notre tâche s'afficher.

...
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
...

On arrête la commande tail avec [CTL] + [c].

...
Sep 20 16:10:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
^C
[root@tchana ~]#

Vérification lorsque Flectra est arrêté

On arrête Flectra.

[root@tchana ~]# systemctl stop flectra

[root@tchana ~]#

On relance la commande tail.

[root@tchana ~]# tail -F /var/log/messages | grep sauvegarde

À toutes les minutes, on voit notre tâche s'afficher.

...
May 20 17:24:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
...

On arrête la commande tail avec [CTL] + [c].

...
May 20 17:24:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump
^C
[root@tchana ~]#

On remet l'heure de la tâche cron à 02h00.

[root@tchana ~]# sed -i 's/\* \* \* \* \* root/0 2 \* \* \* root/'                       \
                        /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

[root@tchana ~]#

On vérifie.

[root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

#
* 2 * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh

[root@tchana ~]#

On développe le gabarit personnalisé.

[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab

[root@tchana ~]#

On redémarre le démon crond.

[root@tchana ~]# systemctl restart crond

[root@tchana ~]#

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.

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep crontab

/etc/e-smith/templates-custom/etc/crontab/
[root@tchana ~]#

Notre tâche cron pour la sauvegarde automatique de PostgreSQL fonctionne parfaitement.

Pour s'assurer que la restauration fonctionne correctement. on supprime notre logo que la restauration remettra en place.

Configuration → Sociétés → on clique le nom de notre société.


Modifier.

On survole le logo avec la souris pour faire apparaître la corbeille qu'on clique.

- Sauvegarder.

- Notre logo est disparu.

Récupération du fichier de sauvegarde

On peut choisir le fichier de sauvegarde qu'on veut restaurer.

  1. /var/lib/pgsql/sauvegarde/Flectra.dump.
  2. 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.

[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 ~]#

Le fichier Flectra.dump est présent dans la dernière sauvegarde NethServer, mais on peut le choisir de n'importe quelle sauvegarde.

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.

Le répertoire a été trouvé et restauré à sa position initiale.

On vérifie.

[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 ~]#

Le fichier est bien celui de la sauvegarde que nous avons lancée manuellement le 20 septembre.
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.

[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 ~]#

Arrêt de Flectra

[root@tchana ~]# systemctl stop flectra

[root@tchana ~]#

On vérifie.

[root@tchana ~]# systemctl status flectra | grep Active

   Active: inactive (dead) since sam. 2019-09-21 17:26:26 EDT; 8s ago
[root@tchana ~]#

Suppression de la BD actuelle

On se substitue à l'utilisateur postgres.

root@tchana ~]# su - postgres

Dernière connexion : jeudi 19 septembre 2019 à 20:46:08 EDT sur pts/0
-bash-4.2$

On entre dans la console PostgreSQL.

-bash-4.2$ psql

psql (11.5)
Saisissez « help » pour l'aide.

postgres=#

On affiche les BD présentes.

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=#

La BD Flectra est présente.

On quitte la console PostgreSQL.

postgres=# \q

-bash-4.2$

On supprime la BD Flectra.

-bash-4.2$ dropdb 'Flectra'

-bash-4.2$

On retourne dans la console PostgreSQL pour vérifier la suppression de la BD.

-bash-4.2$ psql

psql (11.5)
Saisissez « help » pour l'aide.

postgres=#

On affiche les BD présentes.

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=#

La base de données Flectra n'est plus présente, elle a bien été supprimée.

On quitte la console PostgreSQL.

postgres=#  \q

-bash-4.2$

On revient à l'utilisateur root.

-bash-4.2$ exit

déconnexion
root@tchana ~]#

Propriétaire du fichier de sauvegarde

L'utilisateur root se rend dans le répertoire des sauvegardes.

[root@tchana ~]# cd /var/lib/pgsql/sauvegarde/

[root@tchana sauvegarde]#

On affiche le contenu du répertoire.

[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]#

On change le propriétaire du fichier de sauvegarde afin que l'utilisateur postgres puisse le lire.

[root@tchana sauvegarde]# chown postgres Flectra.dump

[root@tchana sauvegarde]#

On vérifie.

[root@tchana sauvegarde]# ls -ls Flectra.dump

3604 -rwx------ 1 postgres root 3690361 20 sept. 15:59 Flectra.dump
[root@tchana sauvegarde]#

Restauration de la BD

On se substitue à l'utilisateur postgres.

root@tchana ~]# su - postgres

Dernière connexion : jeudi 19 septembre 2019 à 20:56:08 EDT sur pts/0
-bash-4.2$

L'utilisateur postgres se rend dans le répertoire des sauvegardes.

-bash-4.2$ cd /var/lib/pgsql/sauvegarde/

-bash-4.2$

On vérifie le fichier de sauvegarde.

-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$

On restaure la sauvegarde.

-bash-4.2$ psql -f Flectra.dump

SET
SET
...
SET
COMMENT-bash-4.2$

Vérification

On entre dans la console PostgreSQL.

-bash-4.2$ psql

psql (11.5)
Saisissez « help » pour l'aide.

postgres=#

On affiche les BD présentes.

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=#

La BD Flectra a été créée et restaurée.

On quitte la console PostgreSQL et on retourne à l'usager postgres.

postgres=# \q

-bash-4.2$

On revient à l'utilisateur root.

-bash-4.2$ exit

déconnexion
root@tchana ~]#

Vérification

On se logue à Flectra et on vérifie si tout est tel qu'avant la sauvegarde: https://www.flectra.micronator-dev.org/.
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.

- Notre logo s'affiche.
- On se connecte.


La page d'accueil de Flectra s'affiche et notre logo a bien été restauré.

Instantané VirtualBox

À 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.

La sauvegarde et la restauration manuelle fonctionnent correctement.

Sauvegarde NethServer

Description

Référence: 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:

  1. 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.
  2. 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.

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.

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

Configuration → Sauvegarde (configuration) → CRÉER UNE SAUVEGARDE.


Si l'écran ne s'affiche pas correctement, on l'agrandit.

- On entre une Description.
- CRÉER UN SAUVEGARDE.

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.


Enregistrer le fichier → OK.


Enregistrer.

Ces fichiers ne sont pas très volumineux, quelques Ko seulement.

Restauration d'une configuration

On peut récupérer une ancienne sauvegarde stockée sur le poste de travail afin de la restaurer.



Envoyer.



Parcourir…

- On sélectionne la sauvegarde à récupérer.
- Ouvrir.


- On entre une description.
- ENVOYER.

La sauvegarde récupérée apparaît dans la liste et on peut la restaurer en cliquant Restaurer.



Les différentes paramètres de la sauvegarde récupérée apparaissent ci-dessous.

- 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.
- RESTAURER.





La restauration est en cours.

La restauration a réussie.

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.

Sauvegarde des données

Les sauvegardes sont conservées dans: /var/lib/nethserver/backup/duplicity/backup-data/.

NethServer implémente 2 types de sauvegarde des données:

  1. Sauvegarde unique (primaire, par défaut, compatible avec les versions antérieures)
  2. Sauvegardes multiples (multi-sauvegardes, multi-moteurs)

La sauvegarde des données peut être effectuée à l'aide de différents moteurs:

  1. Duplicity (défaut) - http://duplicity.nongnu.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.

NethServer n’implémente pas le chiffrage des sauvegardes si le moteur est Duplicity.

Applications dorsales7) prises en charge:

  1. CIFS
  2. NFS
  3. USB
  4. 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.

  1. Peut être planifiée une fois par jour.
  2. Peut inclure les journaux du système.
  3. Envoie des notifications à l'administrateur du système ou à une adresse courriel externe.

Répertoire partagé pour les sauvegardes

  1. Nos sauvegardes utiliseront le protocol CIFS (Common Internet File System).
  2. 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.

- On peut utiliser le répertoire déjà utilisé par les sauvegardes des autres serveurs.
- On peut aussi créer un nouveau répertoire Sauvegarde sur le disque D:\ du poste de travail.



Si Partager avec offre seulement les choix ci-dessous, fermer et ouvrir un autre Explorateur Windows.




Dans les menus de l'Explorateur Windows, Affichage → Options.

- Onglet Affichage.
- Décocher Utiliser l'Assistant Partage (recommandé).
- OK.


- On retourne au dossier Sauvegarde.
- Clac sur le nom du répertoire → Partager avec → Partage Avancé.




Onglet Partage → Partage avancé…

Cocher Partager ce dossier → Nom du partage: Sauvegarde apparaît → Autorisations.



Ajouter…

On entre le nom d'un utilisateur de la machine Windows, ex: michelandre → Vérifier les noms.


Le nom vérifié apparaît → OK.

Sélectionner michelandre → cocher toutes les Autorisations.

Sélectionner Tout le monde → décocher toutes les Autorisations → OK.

- OK.

- Le répertoire est partagé → OK.

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é.

Installation du module Sauvegarde

Administration → Gestionnaire des logiciels → on coche Sauvegarde → AJOUTER.

APPLIQUER LES CHANGEMENTS.

Recharger la page pour afficher les nouveaux menus.

Config de la Sauvegardes (données)

Configuration → Sauvegarde (données) → onglet Général → on entre les informations demandées…


… on entre les informations demandées → SOUMETTRE.

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.

Vérifications à la ligne de commande

Sauvegarde (configuration)

On affiche les propriétés de la configuration Sauvegarde (configuration).

[root@tchana ~]# config show backup-config

backup-config=configuration
    HistoryLength=31
    status=enabled
[root@tchana ~]#

HistoryLength: la valeur donnée au paramètre Configuration → Sauvegarde (Configuration) → Automatic backups to keep à la section 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.

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).

[root@tchana ~]# config show backup-data

backup-data=configuration
    IncludeLogs=enabled
[root@tchana ~]#

IncludeLogs: nous avons coché Configuration → Sauvegarde (données) → onglet Général → Advanced options → Include system logs à la section Config de la Sauvegardes (données) .

On affiche les propriétés Sauvegarde (données).

[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 ~]#

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 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.

[root@tchana ~]# db backups setprop backup-data VolSize 2048

[root@tchana ~]#

On signale le changement.

[root@tchana ~]# signal-event nethserver-backup-data-update

[root@tchana ~]#

On vérifie.

[root@tchana ~]# db backups show -> grep VolSize

 VolSize=2048
[root@tchana ~]#

Lancement forcé de la sauvegarde

Première sauvegarde

On peut forcer le lancement d'une sauvegarde en exécutant la commande ci-dessous.

[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 ~]#

Cette sauvegarde (1 918 Ko) est complète.

On vérifie la date.

[root@tchana ~]# date

ven février  8 13:32:59 EDT 2019
[root@tchana ~]#

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.

[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 ~]#

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.

Troisième sauvegarde

Nous changeons la journée des sauvegardes complètes pour qu'elles aient lieu les vendredis au lieu des dimanches → SOUMETTRE.

On force une troisième sauvegarde.

[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 ~]#

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.

On remet le paramètre des sauvegardes complètes pour les dimanches.

Exemple de récupération du fichier de sauvegarde de la configuration

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.

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.

Clac sur le fichier xxx.tar.xz → Copier vers…


OK.

Le fichier de la configuration est récupéré de la sauvegarde des données.

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

[root@tchana ~]# touch toto

[root@tchana ~]#

On vérifie.

[root@tchana ~]# ls -ls toto

0 -rw-r--r-- 1 root root 0 Feb  8 13:55 toto
[root@tchana ~]#

2) On lance une sauvegarde.

[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 ~]#

3) Nous supprimons le fichier créé avant la sauvegarde, celui de la première étape.

[root@tchana ~]# rm toto

rm : supprimer fichier vide « toto » ? y
[root@tchana ~]#

On vérifie.

[root@tchana ~]# ls -ls toto

ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type
[root@tchana ~]#

Restauration

4) On récupère le fichier.

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.

- 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é.

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.

[root@tchana ~]# ls -ls toto

0 -rw-r--r-- 1 root root 0 Feb  8 13:55 toto
[root@tchana ~]#

Le fichier a été restauré.

Recherche de fichiers dans les sauvegardes

On peut rechercher un fichier dans les sauvegardes (peut prendre un certain temps).

[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 ~]#

La sauvegarde/restauration NethServer est fonctionnelle.

Instantané VirtualBox

À 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.

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.

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 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://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

Page officielle de BackupPC: https://backuppc.github.io/backuppc/.

Référence: 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

Sauvegarder, puis migrer le serveur SOURCE
vers le serveur DESTINATION.



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.

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

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

Après s'être logué, pour activer temporairement le mode développeur, on ajoute à l'URL le mot clé web?debug= et on appuie sur [Entrée].

La page sera rechargée et le mode développeur/débogage activé.

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).


En cliquant l'icône des Outils développeur, un menu se déroule et affiche plusieurs choix de commandes.

À la page Configuration, on clique l'icône, un menu se déroule et affiche aussi plusieurs choix de commandes.

Pour quitter le mode développeur, à la page Configuration, on clique l'icône → Quitter les outils développeur.

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.
Pour le nom de la BD, voir la section Création d'une nouvelle base de données .
S'assurer d'avoir une sauvegarde de la base de donnée PostgreSQL avant de réaliser la mise à jour. Voir la section 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.

On arrête Flectra.

[root@tchana ~]# systemctl stop flectra

[root@tchana ~]#

On vérifie l'arrêt.

[root@tchana ~]# systemctl status flectra  | grep -i Active:

   Active: inactive (dead) since ven. 2019-09-20 19:45:50 EDT; 14s ago
[root@tchana ~]#

Notez que vous devez faire la mise à jour en tant qu'utilisateur flectra.

On se substitue à l'utilisateur flectra.

[root@tchana ~]# su - flectra

Dernière connexion : jeudi 19 septembre 2019 à 20:32:10 EDT sur pts/0
[flectra@tchana ~]$

On vérifie.

[flectra@tchana ~]$ whoami

flectra
[flectra@tchana ~]$

On se rend dans le répertoire /opt/flectra/flectra.

[flectra@tchana ~]$ cd /opt/flectra/flectra

[flectra@tchana flectra]$

On vérifie.

[flectra@tchana flectra]$ pwd

/opt/flectra/flectra
[flectra@tchana flectra]$

Récupération des mises à jour

On récupère les mises à jour avec git.

[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]$

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.
La commande git reset –hard appliquera toutes les modifications, peu importe ce qui pourrait survenir.
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.

[flectra@tchana flectra]$ git reset --hard master

HEAD is now at 4dd1e69 Merge branch 'master' into 'master'
[flectra@tchana flectra]$

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.

[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

  1. /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 ( \ ).
  2. /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 ( \ ).
  3. -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

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.

[flectra@tchana flectra]# top -d1 | grep python3

 6336 flectra   20   0  467988  69156  10192 R  72,3  1,8   0:07.48 python3
 6336 flectra   20   0  467988  69156  10192 R  74,0  1,8   0:08.22 python3
 6336 flectra   20   0  467988  69156  10192 R  71,3  1,8   0:08.94 python3
...
 6336 flectra   20   0  482740  74744  10240 R  75,0  1,9   0:22.28 python3
 6336 flectra   20   0  482740  74744  10240 R  73,0  1,9   0:23.01 python3
 6336 flectra   20   0  630204  76980  10408 S  58,3  2,0   0:23.61 python3
 6336 flectra   20   0  630204  76980  10408 S   1,0  2,0   0:23.62 python3
 6336 flectra   20   0  630204  76980  10408 S   1,0  2,0   0:23.63 python3
...
[flectra@tchana flectra]#

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.
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.

[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

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 [CTL] + [c].

[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]$

On quitte la substitution d'utilisateur pour retourner à root.

[flectra@tchana flectra]$ exit

déconnexion
[root@tchana ~]#

On vérifie.

[root@tchana ~]# whoami

root
[root@tchana ~]#

On redémarre le service Flectra en utilisant systemctl.
Contrairement à une commande, un service ne s'arrête pas si on ferme la session qui l'a lancée.

[root@tchana ~]# systemctl start flectra

[root@tchana ~]#

On vérifie.

[root@tchana ~]# systemctl status flectra | grep Active:

   Active: active (running) since ven. 2019-09-20 20:17:15 EDT; 32s ago
[root@tchana ~]#

Vérification du site Flectra

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.

PHP

Mise à jour de la Collection PHP.

[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 ~]#

On redémarre le service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

PostgreSQL

On procède à la mise à jour de PostgreSQL-11.

[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 ~]#

Il faut redémarrer PostgreSQL et Flectra.

On redémarre le service PostgreSQL.

[root@tchana ~]# systemctl restart postgresql-11

[root@tchana ~]#

On redémarre le service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

Vérification du site Flectra

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.

RH-Python36

Mise à jour de la Collection RH-Python36.

[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 ~]#

On doit redémarrer le service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

Vérification du site Flectra

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.

L'utilitaire npm est le gestionnaire officiel des paquets de Node.js. Depuis la version 0.6.3 de Node.js:

  1. npm fait partie de l'environnement (nous l'avons installé comme prérequis de Flectra),
  2. npm fonctionne avec un terminal et gère les dépendances pour une application et
  3. npm permet également d'installer des applications Node.js disponibles depuis le référentiel npm.

Impacts sur less et lessc

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.

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
...

Il est plus que fortement recommandé 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: Cahier-011: NethServer & BackupPC du “Cours NethServer-101”.

On vérifie la version actuelle.

[root@tchana ~]# npm --version

6.4.1
[root@tchana ~]#

Mise à jour

Mise à jour de npm/node.

[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 ~]#

Une mise à jour a été effectuée.

Vu qu'il y a eu une mise à jour, on doit redémarrer le service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

Vérification du site Flectra

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.

[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 ~]#

On vérifie.

[root@tchana ~]# npm --version

6.4.1
[root@tchana ~]#

Redémarrage du service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

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.

[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 ~]#

On vérifie la version actuelle de lessc.

[root@tchana ~]# lessc --version

lessc 3.9.0 (Less Compiler) [JavaScript]
[root@tchana ~]#

Pour éviter les erreurs de certificats SSL et de téléchargement.

[root@tchana ~]# npm config set strict-ssl false

[root@tchana ~]#

Mise à jour de less et de less-plugin-clean-css.

[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 ~]#

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.

[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 ~]#

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.

[root@tchana ~]# lessc --version

lessc 3.10.3 (Less Compiler) [JavaScript]
[root@tchana ~]#

Il y a eu une mise à jour de lessc.

Redémarrage du service Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

Vérification du site Flectra

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.

[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 ~]#

wkhtmltox

Pour trouver la dernière version de wkhtmltopdf on se rend à l'URL: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/.

La dernière version disponible est la même que celle qu'on a installée à la section 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.

Si des mises à jour ont été installées, il nous faut redémarrer Flectra.

[root@tchana ~]# systemctl restart flectra

[root@tchana ~]#

Vérification du site Flectra

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.

- Administration → Gestionnaire des logiciels → onglet Mises à jour.
- TÉLÉCHARGER ET INSTALLER.



À la fin de la mise à jour, Recharger la page.

La mise à jour du Serveur NethServer s'occupe aussi de celle de la Collection PHP.

Vérification du site Flectra

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

À 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

Les exemples de ce chapitre proviennent de la section Appendices du Cahier-04: DokuWiki du “Cours NethServer-201”.

Écran conventionnel de démarrage

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:

/etc/default/grub

Suppression du paramètre rhgb

Ligne originale dans le fichier /etc/default/grub.

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap nodmraid rhgb quiet"

Après avoir enlevé le paramètre rhgb.

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap nodmraid quiet"

On signale le changement en régénérant le fichier de configuration.

[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 ~]#

Au prochain réamorçage, le nouveau fichier grub sera effectif.

Nom du serveur dans l'écran de connexion à Webmail

À 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:

/etc/roundcubemail/config.inc.php

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.

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é.

[root@tchana ~]# mkdir -p /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php

[root@tchana ~]#

On crée le fichier 91CacherNomDuServeur et on y insère la ligne de configuration.

Prendre tout le contenu de l'encadré pour la commande.

cat > /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur <<'EOT'

$config['default_host'] = '127.0.0.1';

EOT

On vérifie.

[root@tchana ~]# cat /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur

$config['default_host'] = '127.0.0.1';
[root@tchana ~]#

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.

[root@tchana ~]# expand-template /etc/roundcubemail/config.inc.php

[root@tchana ~]#

On redémarre le démon httpd.

[root@tchana ~]# systemctl restart httpd

[root@tchana ~]#

On se rend à l'URL de connexion à Webmail: https://www.micronator-dev.org/webmail/. Le domaine du serveur ne s'affiche plus.

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include |  grep roundcube

/etc/e-smith/templates-custom/etc/roundcubemail/
[root@tchana ~]#

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_FR.utf8, car ce choix affectera aussi celui de la traduction pour l'interface Web. Pour l'instant, la traduction fr_FR est plus avancé que celle de fr_CA.

  [root@tchana ~]# localectl set-locale LANG=fr_FR.utf8
  
  [root@tchana ~]#

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.

Administration → Software center (peut prendre un certain temps) on coche French language.



ADD.



APPLY CHANGES.


Le RPM nethserver-lang-fr s'installe.



Reload page.

On se déconnecte/reconnecte pour activer la traduction française.

- Par défaut, Français (France) est affiché.
- LOGIN.

Table de mappe de clavier

On affiche les différentes mappes de clavier8) “ca” disponibles.

[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 ~]#

On active le clavier ca-multi.

[root@tchana ~]# localectl set-keymap ca-multi

[root@tchana ~]#

On vérifie.

[root@tchana ~]# localectl

   System Locale: LANG=fr_FR.UTF-8
       VC Keymap: ca-multi
      X11 Layout: us
[root@tchana ~]#

Fermeture automatique de session (session timeout)

Référence: 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.

[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime 7200 MaxSessionLifeTime 57600

[root@tchana ~]#

Désactivation des délais.

[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime '' MaxSessionLifeTime ''

[root@tchana ~]#

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.

[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 ~]#

Changement du fuseau horaire

On affiche le fuseau horaire actuel.

[root@tchana ~]# ls -l /etc/localtime

lrwxrwxrwx 1 root root 37 19 mai   23:48 /etc/localtime -> ../usr/share/zoneinfo/America/Toronto
[root@tchana ~]#

On change le fuseau horaire pour celui de Montréal.

[root@tchana ~]# timedatectl set-timezone America/Montreal

[root@tchana ~]#

On vérifie.

[root@tchana ~]# ls -l /etc/localtime

lrwxrwxrwx 1 root root 38 22 mai   14:02 /etc/localtime -> ../usr/share/zoneinfo/America/Montreal
[root@tchana ~]#

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.
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

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.

- Le cadenas est vert.
- On se logue.

- On clique le cadenas.
- On clique l'icône “>”.


Plus d'informations.



- Onglet Sécurité.
- Afficher le certificat.

- Onglet Détails.
- Émis pour micronator-101.org
- Émis par Let's Encrypt Authority X3
- On voit la date de début et de fin.



- Validité → Pas après.
- Le certificat est valide pour 90 jours.

- Nom alternatif du sujet du certificat.
- Tous nos CNAME choisis lors de la demande du certificat sont affichés.
- Fermer toutes les fenêtres du certificat.

Vérification par Qualsys SSLLabs

Seulement pour un serveur directement branché à l'Internet.
Une fois que vous avez obtenu votre certificat, testez-le en vous rendant chez Qualsys SSLLabs, https://www.ssllabs.com/ssltest/.
Soumettez le nom FQDN de votre domaine pour vérifier que le certificat fonctionne correctement.

Hostname:
micronator-101.org → Submit.

- Overall Rating → A.
- Certificate → 100%.

Changement du mot de passe de root

Référence: 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.
Comme pour toutes les tâches de maintenance du système, assurez-vous de disposer d'une sauvegarde/instantané du système avant de poursuivre.

Si votre système Linux est en cours d'exécution, redémarrez-le. S'il ne roule pas, démarrez-le.

Pour CentOS 7, le menu de démarrage vous laissera 5 secondes pour sélectionner le noyau du système d’exploitation à démarrer. Ces 5 secondes sont importantes, car elles permettent aux administrateurs de sélectionner différents noyaux ou d’éditer les paramètres du noyau existant avant le démarrage.

Dans le menu de démarrage, appuyez sur e pour modifier le noyau existant tel qu'indiqué ci-dessous.


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.

rd.break


Appuyez sur [Ctrl] + [x] pour démarrer avec ces options qui vous amèneront à l'invite initramfs avec un shell root.


À 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.

switch_root:/# mount -o  remount,rw  /sysroot

switch_root:/#


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.

switch_root:/# chroot /sysroot

sh-4.2#


À partir d'ici, le mot de passe de root peut être réinitialisé à l’aide de la commande passwd.

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#


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.

sh-4.2# touch /.autorelabel

sh-4.2#

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.

sh-4.2# exit

exit
sh-4.2#

On quitte le shell racine initramfs (peut prendre un certain temps, être patient…). Le serveur s'amorce.

sh-4.2# exit

logout
...

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.


- On arrête le Serveur NethServer.
- À l'écran VirtualBox, on sélectionne la machine → État actuel → Configuration.


Au retour, on amorce le Serveur NethServer et le message ne s'affichera plus.


Affichage → onglet Écran → Contrôleur graphique → on change pour VboxVGA → OK.

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.

...IPv4: martian source 192.168.1.1...
...IPv4: martian source 192.168.1.1...
...IPv4: martian source 192.168.1.1...

Passerelle du réseau de la carte enp0s3

On trouve notre passerelle en lançant un traceroute vers google.com.

[root@dorgee ~]# traceroute google.com

traceroute to google.com (172.217.165.14), 30 hops max, 60 byte packets
 1  lo0-0-lns03-tor.teksavvy.com (206.248.155.139)  10.367 ms  11.449 ms  11.487 ms
 2  ae0-2150-bdr01-tor.teksavvy.com (69.196.136.172)  11.523 ms  11.793 ms  11.826 ms
 3  72.14.212.134 (72.14.212.134)  11.868 ms  12.430 ms  12.306 ms
 4  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
 5  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
 6  yyz12s06-in-f14.1e100.net (172.217.165.14)  13.020 ms  12.009 ms  11.291 ms
[root@dorgee ~]#

L'adresse IP de la ligne #1 est 206.248.155.139 et elle est donc la passerelle utilisée par notre connexion.

Configuration → Réseau → Périphérique enp0s3 → Éditer.

On change l'IP de la passerelle pour l'IP du rôle LAN (vert) / enp0s3206.248.155.139.

SOUMETTRE.

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.
… 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.

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.

Référence: pour ci-dessous 1.1.1.1 - https://www.dnsperf.com/#!dns-resolvers.

Configuration → Réseau → Serveurs DNS.

On ajuste les DNS Primaire et Secondaire.

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.

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.

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.

Introduction à l'éditeur vi

Référence: http://www.iro.umontreal.ca/~dift3830/vi.html. (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].

Nous allons commencer par invoquer vi à partir du shell en tapant:

vi

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.

i

Après avoir tapé le texte suivant:

vi est un éditeur de texte très
 
utile pour la communauté des 
administrateurs.

On obtient l'affichage ci-contre.

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:

:w texte1.txt

(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:

:q texte1.txt

Les commandes abondent dans vi, on n'en citera que quelques-unes.


Principales commandes de vi

CommandeEffets
i (insert)Insère un texte sur le curseur
IInsère au début de la ligne
a (append)Insère après le curseur
AInsère à la fin de la ligne
Les flèchespour 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
GVa à la fin du texte
xEffacer le caractère courant
ddEffacer la ligne courante
DEffacer 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înerechercher la chaîne 'chaîne' dans le texte, on peut taper 'n' pour voir les autres occurrences
:w fichiercopie 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 nuAffiche le numérotage des lignes.



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: E:\000_DocPourRF232_general\RF-232_NethServer-201\RF-232_Cours_NethServer-201-07_Flectra_2019-09-24_11h47.odt.

Historique des modifications:

VersionDateCommentaireAuteur
0.0.12019-09-18Dé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.

1)
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.

2)
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.

3)
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).

4)
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.

5)
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.

6)
systemctl… –now: Lorsqu'utilisé avec enable, l'unité est également démarrée.

7)
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.

8)
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.

nethserver_201_cahier_07_flectra.txt · Dernière modification : 2025-01-12 19:30 de 127.0.0.1