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

  • Préparation de l'environnement de travail incluant l'installation de la Collection PHP.
  • Installation du serveur de bases de données PostgreSQL-11.
  • Installation de la Collection RH-Python36, pour ne pas interférer avec la version de Python fournie par défaut avec le Serveur NethServer.
  • Installation des prérequis pour Flectra.
  • Téléchargement du code Flectra et installation.
  • Redirection sécurisée.
  • Post-scriptum Flectra.
  • Sauvegarde/récupération de la base de données PostgreSQL.
  • Programmer un script de sauvegarde de la base de données PostgreSQL et créer une tâche cron qui l'activera quotidiennement. Ainsi, la sauvegarde PostgreSQL sera intégrée à la sauvegarde régulière du Serveur NethServer.
  • Sauvegarde quotidienne NethServer.
  • Mises à jour de: Flectra, PostgreSQL, RH-Python36, npm/node, less et 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:

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

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.

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

***********************************************
[[email protected] ~]#

Adresse IP

On vérifie les adresses IP du serveur.

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

[[email protected] ~]#

Fail2ban

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

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

On vérifie que Fail2ban roule sur le serveur.

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

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

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

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.

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

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

[[email protected] ~]# rpm -qa | grep nethserver-stephdl

nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
[[email protected] ~]#

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

[[email protected]chana ~]# 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!
[[email protected] ~]#

Vérification.

[[email protected] ~]# rpm -qa | grep stephdl

nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
[[email protected] ~]#

Référentiel remi

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

[[email protected] ~]# rpm -qa | grep remi

remi-release-7.6-2.el7.remi.noarch
[[email protected] ~]#

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

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

On vérifie.

[[email protected] ~]# rpm -qa | grep remi

remi-release-7.6-2.el7.remi.noarch
[[email protected] ~]#

Installation de la Collection PHP

[[email protected] ~]# 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é !
[[email protected] ~]#

Usage

Normalement, l'interface Web devrait être complète et vous ne devriez pas devoir utiliser la ligne de commande. Si vous pensez que Stéphane de Labrusse pourrait améliorer les paramètres PHP en apportant plus d'options, veuillez le lui demander: stephdl arobas de-labrusse point fr.

Les réglages sont répartis à deux endroits.

  • À la page Gestion → Hôtes virtuels.
    Là, après avoir créé un hôte virtuel, vous pouvez choisir la version que vous utiliserez pour l'Ibay/virtualhost (par défaut, la version PHP d’Apache).
    - Vu que NethServer utilise un script CGI pour gérer la version de PHP, vous ne pourrez pas ajuster les paramètres PHP avec le module nethserver-phpsettings; vous devez régler les paramètres à l'aide du fichier php.ini correspondant. Stéphane de Labrusse voulait coder quelque chose de “cool” afin que tous les paramètres ne soient pas basés uniquement sur des commandes db… Il a alors crée une page de configuration.
  • À la page Configuration → Paramètres PHP.
    Là, vous pouvez choisir la version PHP que vous souhaitez utiliser pour l’ensemble du serveur.
    - Lorsqu'Apache est le gestionnaire de PHP, vous pouvez alors définir les paramètres PHP avec le module nethserver-phpsettings. En d'autres termes, si vous souhaitez utiliser le module nethserver-phpsettings et que vous avez besoin d'une version spécifique de PHP, vous devez utiliser cette version pour tout le serveur. Bien sûr, vous pouvez revenir à la version par défaut en cas de problème avec une ancienne application Web. Dans d’autres parties de cette page de configuration, vous pouvez ajuster les paramètres PHP pour toutes les versions de PHP.

Répertoire d'installation

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.

[[email protected] ~]# yum repolist | grep remi

* remi-safe: mirror.team-cymru.com
remi-safe                   Safe Remi's RPM repository for Enterprise Lin  3 191
[[email protected] ~]#

On vérifie le répertoire /opt.

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

On affiche le répertoire /opt/remi.

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

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.

[[email protected] ~]# chmod +x /etc/profile.d/activer-php72.sh

[[email protected] ~]#

On vérifie.

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

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.

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

Collections installées.

[[email protected] ~]# scl -l

php56
php70
php71
php72
php73
[[email protected] ~]#

Quel est le PHP par défaut?

[[email protected] ~]# which php

/opt/remi/php72/root/usr/bin/php
[[email protected] ~]#

Quelle est sa version?

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

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.

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

/etc/profile.d/activer-php72.sh
[[email protected] ~]#

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:

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

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.

[[email protected] ~]# config show php72

php72=configuration
    AllowUrlFopen=On
    ExposePhp=0
    MaxExecutionTime=30
    MaxFileUpload=20
    MaxInputTime=60
    MemoryLimit=128
    PostMaxSize=20
    UploadMaxFilesize=10
[[email protected] ~]#

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
[[email protected] ~]# cat /etc/opt/remi/php72/php.ini | grep -i Memory_Limit

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

post_max_size                          = 100M
[[email protected] ~]#
UploadMaxFilesize
[[email protected] ~]# 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.

[[email protected] ~]# config show php72

php72=configuration
    AllowUrlFopen=Off
    ExposePhp=0
    MaxExecutionTime=30
    MaxFileUpload=20
    MaxInputTime=60
    MemoryLimit=250
    PostMaxSize=100
    UploadMaxFilesize=75
[[email protected] ~]#

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
[email protected]'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

***********************************************
[[email protected] ~]

On affiche les adresses IP du serveur.

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

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.

[[email protected] ~]# uname -p

x86_64
[[email protected] ~]#

Version CentOS

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

[[email protected] ~]# cat /etc/centos-release

CentOS Linux release 7.6.1810 (Core)
[[email protected] ~]#

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:

  • yum install -y et
  • l'URL du référentiel.

On installe le référentiel PostgreSQL pour les serveurs CentOS-7 dont le Serveur NethServer est issu.

On entre yum install -y (suivi d'un espace) et on colle l'URL copié précédemment.

[[email protected] ~]# 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é !
[[email protected] ~]#

Le référentiel PostgreSQL est installé.

Installation

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

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

On vérifie l'installation.

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

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.

[[email protected] ~]# 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é !
[[email protected] ~]#

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

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

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

[[email protected] ~]# cat /etc/yum/pluginconf.d/protectbase.conf

[main]
enabled = 1
[[email protected] ~]#

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.

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

Initialisation de la BD

On initialise la BD.
Peut prendre un certain temps.

[[email protected] ~]# /usr/pgsql-11/bin/postgresql-11-setup initdb

Initializing database ... OK
[[email protected] ~]#

Activation du service PostgreSQL

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

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

On démarre le service PostgreSQL.

[[email protected] ~]# systemctl start postgresql-11.service

[[email protected] ~]#

On examine le statut du service PostgreSQL.

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

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.

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

Utilisateur standard Linux (toto) et PostgreSQL

On crée un utilisateur standard Linux.

[[email protected] ~]# useradd -m -U -s /bin/bash  toto

[[email protected] ~]#


On vérifie.

[[email protected] ~]# cat /etc/passwd | grep toto

toto:x:1002:1002::/home/toto:/bin/bash
[[email protected] ~]#

On lui octroie un mot de passe.

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

On se substitue à l'utilisateur toto.

[[email protected] ~]# su - toto

[email protected] ~]$

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

Suppression de l'utilisateur standard toto

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

[[email protected] ~]# userdel -f -r toto

[[email protected] ~]#

On vérifie.

[[email protected] ~]# cat /etc/passwd | grep toto

[[email protected] ~]#

Nettoyage de PostgreSQL

Suppression du SCHEMA test

On se substitue au super-utilisateur postgres.

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

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

[[email protected] ~]# whoami

root
[[email protected] ~]#

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.

[[email protected] ~]# whoami

root
[[email protected] ~]#

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

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

[[email protected] ~]#

On vérifie.

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

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.

[[email protected] ~]# useradd -m -U -r -d /opt/flectra  -s /bin/bash flectra

[[email protected] ~]#

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

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

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.

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

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.

  • Configurez votre serveur en mode multiprocessus2) avec des limites adaptées à votre utilisation habituelle (mémoire/CPU/délais d'attente). Voir Builtin server: https://www.odoo.com/documentation/11.0/setup/deploy.html#builtin-server.

  • Exécutez Flectra derrière un serveur Web fournissant une connexion HTTPS avec Certificat SSL valide, afin d'empêcher l'écoute clandestine des communications en texte clair. De nos jours, les Certificats SSL ne sont plus aussi dispendieux qu'autrefois et de nombreuses options gratuites existent telle Let's Encrypt. Voir le 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.

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

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

[[email protected] ~]# 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é !
[[email protected] ~]#

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

[[email protected] ~]# scl -l

httpd24
php56
php70
php71
php72
php73
rh-python36
[[email protected] ~]#

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.

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

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

[[email protected] ~]# /opt/rh/rh-python36/root/usr/bin/python  --version

Python 3.6.3
[[email protected] ~]#

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

[[email protected] ~]# 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é !
[[email protected] ~]#

Logiciels du référentiel EPEL

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

[[email protected] ~]# yum repolist | grep epel

 * epel: mirror.layeronline.com
epel/x86_64                 Extra Packages for Enterprise Linux 7 - x8 13 168+22
[[email protected] ~]#

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

[[email protected] ~]# 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é !
[[email protected] ~]#

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.

[[email protected] ~]# mkdir /temp

[[email protected] ~]#

On s'y rend.

[[email protected] ~]# cd /temp/

[[email protected] temp]#

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

[[email protected] 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]

[[email protected] temp]#

On extraie vers le répertoire /usr.

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

[[email protected] temp]#

On vérifie la présence de npm.

[[email protected] temp]# which npm

/usr/bin/npm
[[email protected] temp]#

On vérifie la version.

[[email protected] temp]# npm --version

6.4.1
[[email protected] 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.

[[email protected] temp]# npm config set strict-ssl false

[[email protected] temp]#

On installe ces logiciels.

[[email protected] temp]# npm install -g less less-plugin-clean-css

/usr/bin/lessc -> /usr/lib/node_modules/less/bin/lessc
+ [email protected]
+ [email protected]
added 66 packages from 128 contributors in 4.337s
[[email protected] temp]#

On vérifie la présence de less.

[[email protected] temp]# which less

/usr/bin/less
[[email protected] temp]#

On vérifie sa version.

[[email protected] 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
[[email protected] temp]#

On vérifie la présence de lessc.

[[email protected] temp]# which lessc

/usr/bin/lessc
[[email protected] temp]#

On vérifie sa version.

[[email protected] temp]# lessc --version

lessc 3.9.0 (Less Compiler) [JavaScript]
[[email protected] 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.

[[email protected] 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é !
[[email protected] temp]#

wkhtmltox

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

[[email protected] ~]# cd /temp

[[email protected] temp]#

On nettoie le répertoire /temp.

[[email protected] temp]# rm -rf *

[[email protected] 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.

[[email protected] 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%]
[[email protected] temp]#

On vérifie l'installation des fichiers.

[[email protected] 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
[[email protected] temp]#

On supprime tout dans le répertoire /temp.

[[email protected] temp]# rm -rf /temp/*

[[email protected] temp]#

On retourne dans le répertoire personnel de root.

[[email protected] temp]# cd

[[email protected] ~]#

On vérifie.

[[email protected] ~]# pwd

/root
[[email protected] ~]#

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.

[[email protected] ~]# 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é !
[[email protected] ~]#

Vérifications finales

NPM

[[email protected] ~]# which npm

/usr/local/bin/npm
[[email protected] ~]#
[[email protected] ~]# npm --version

6.4.1
[[email protected] ~]#

LESS

[[email protected] ~]# which less

/usr/bin/less
[[email protected] ~]#
[[email protected] ~]# 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
[[email protected] ~]#

LESSC

[[email protected] ~]# which lessc

/usr/bin/lessc
[[email protected] ~]#
[[email protected] ~]# lessc --version

lessc 3.9.0 (Less Compiler) [JavaScript]
[[email protected] ~]#

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.

[[email protected] ~]# config set fw_flectra service status enabled TCPPort 7073 access green

[[email protected] ~]#

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

[[email protected] ~]# config set fw_flectra service status enabled TCPPort 7073 access green,red

[[email protected] ~]#

On signale le changement.

[[email protected] ~]# signal-event firewall-adjust

[[email protected] ~]#

On vérifie.

[[email protected] ~]# cat /etc/shorewall/rules | grep 7073

ACCEPT  loc     $FW     tcp     7073
[[email protected] ~]#
[[email protected] ~]# cat /etc/shorewall/rules | grep 7073

ACCEPT  loc     $FW     tcp     7073
ACCEPT  net     $FW     tcp     7073
[[email protected] ~]#

On affiche la configuration du port ouvert pour Flectra.

[[email protected] ~]# config show fw_flectra

fw_flectra=service
    TCPPort=7073
    access=green
    status=enabled
[[email protected] ~]#
[[email protected] ~]# config show fw_flectra

fw_flectra=service
    TCPPort=7073
    access=green,red
    status=enabled
[[email protected] ~]#

git clone Flectra

On se substitue à l'utilisateur flectra.

Remarquez le changement de l'invite.

[[email protected] ~]# su - flectra

[[email protected] ~]$

On vérifie quel utilisateur nous sommes.

[[email protected] ~]$ whoami

flectra
[[email protected] ~]$

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

[[email protected] ~]$ pwd

/opt/flectra
[[email protected] ~]$

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.

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

On vérifie.

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

Environnement virtuel pour l'utilisateur flectra

On active Python-36.

[[email protected] ~]$ scl enable rh-python36 bash

[[email protected] ~]$

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

[[email protected] ~]$ python3 -m venv flectra-venv

[[email protected] ~]$

On vérifie.

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

On active l'environnement virtuel.

[[email protected] ~]$ source flectra-venv/bin/activate

(flectra-venv) [[email protected] ~]$

requirements.txt

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

(flectra-venv) [[email protected] ~]$ 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) [[email protected] ~]$

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

(flectra-venv) [[email protected] ~]$ 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) [[email protected] ~]$

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

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

(flectra-venv) [[email protected] ~]$ deactivate && exit

exit
[[email protected] ~]$

On quitte la substitution d'utilisateur.

[[email protected] ~]$ exit

déconnexion
[[email protected] ~]#

On vérifie qui nous sommes.

[[email protected] ~]# whoami

root
[[email protected] ~]#

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.

[[email protected] ~]# ls -alsd /var/log/flectra

0 drwx------ 2 flectra flectra 32 19 sept. 01:20 /var/log/flectra
[[email protected] ~]#

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.

[[email protected] ~]# ls -ls /etc/logrotate.d/flectra-server

4 -rw-r--r-- 1 root root 794 19 sept. 19:33 /etc/logrotate.d/flectra-server
[[email protected] ~]#

On vérifie le début du contenu.

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

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.

[[email protected] ~]# cat /etc/backup-data.d/custom.include | grep /etc/logrotate.d/flectra-server

/etc/logrotate.d/flectra-server
[[email protected] ~]#

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.

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

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.

[[email protected] ~]# ls -als /etc/flectra-server.conf

4 -rw-r--r-- 1 root root 673 19 sept. 19:54 /etc/flectra-server.conf
[[email protected] ~]#

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

[[email protected] ~]# chmod 550 /etc/flectra-server.conf

[[email protected] ~]#

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

[[email protected] ~]# chown flectra:flectra /etc/flectra-server.conf

[[email protected] ~]#

On vérifie.

[[email protected] ~]# ls -ls /etc/flectra-server.conf

4 -r-xr-x--- 1 flectra flectra 673 19 sept. 19:54 /etc/flectra-server.conf
[[email protected] ~]#

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.

[[email protected] ~]# ls -als /etc/systemd/system/flectra.service

4 -rw-r--r-- 1 root root 416 19 sept. 20:10 /etc/systemd/system/flectra.service
[[email protected] ~]#

On vérifie son contenu.

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

[[email protected] ~]#

Premier démarrage de Flectra

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

[[email protected] ~]# systemctl daemon-reload

[[email protected] ~]#

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

[[email protected] ~]# systemctl enable flectra --now

Created symlink from /etc/systemd/system/multi-user.target.wants/flectra.service to /etc/systemd/system/flectra.service.
[[email protected] ~]#

Vérification

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

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

Finalisation de l'installation

Accès à Flectra

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

  • On se rend à la page de notre site Flectra en spécifiant le port :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.

[[email protected] ~]# cat /etc/flectra-server.conf | grep log_handler

log_handler = werkzeug:WARNING
;log_handler = :DEBUG
[[email protected] ~]#

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

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

Rotation du journal Flectra

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

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

On force la rotation de ce journal.

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

On vérifie.

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

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.

[[email protected] ~]# rpm -e --nodeps gcc cpp

[[email protected] ~]#

On vérifie cpp.

[[email protected] ~]# rpm -qa | grep cpp

[[email protected] ~]#

On vérifie gcc.

[[email protected] ~]# rpm -qa | grep gcc

libgcc-4.8.5-36.el7_6.2.x86_64
[[email protected] ~]#

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

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

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

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

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.

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

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.

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

Flectra

On vérifie son statut.

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

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.

  • À l'aide de l'interface Web: Administration → Logs → /var/log/flectra/flectra-server.log.
  • Directement dans les fichiers /var/log/messages et /var/log/flectra/flectra-server.log.

Fichier /var/log/flectra/flectra-server.log

On peut aussi utiliser la console du serveur pour vérifier le journal de Flectra afin de s'assurer qu'il n'existe pas de modules manquants.

[[email protected] ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available"

[[email protected] ~]#

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.

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

On se substitue à l'utilisateur flectra.

[[email protected] ~]# su - flectra

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

On active Python36.

[[email protected] ~]$ scl enable rh-python36 bash

[[email protected] ~]$

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

[[email protected] ~]$ pwd

/opt/flectra
[[email protected] ~]$

On active l'environnement virtuel flectra-venv.

[[email protected] ~]$ source flectra-venv/bin/activate

(flectra-venv) [[email protected] ~]$

On installe le module phonenumbers.

(flectra-venv) [[email protected] ~]$ 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) [[email protected] ~]$

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

(flectra-venv) [[email protected] ~]$ deactivate && exit

exit
[[email protected] ~]$

On vérifie qui nous sommes.

[[email protected] ~]$ whoami

flectra
[[email protected] ~]$

On quitte la substitution d'utilisateur.

[[email protected] ~]$ exit

déconnexion
[[email protected] ~]#

On vérifie qui nous sommes.

[[email protected] ~]# whoami

root
[[email protected] ~]#

Le module manquant a été installé.

On redémarre Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

On vérifie le journal.

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

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

On vérifie pour des erreurs.

[[email protected] ~]# cat /var/log/flectra/flectra-server.log | grep -i error

[[email protected] ~]#

On vérifie pour des avertissements.

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

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.

[[email protected] ~]# cat /etc/flectra-server.conf | grep db_password

db_password = fghtbgh
[[email protected] ~]#

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

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

À la console du Serveur NethServer

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

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

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.

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

On vérifie.

[[email protected] ~]# whoami

root
[[email protected] ~]#

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.

[[email protected] ~]# cat /etc/flectra-server.conf | grep db_password

db_password = fghtbgh
[[email protected] ~]#

Redémarrage de PostgreSQL

On redémarre le service PostgreSQL.

[[email protected] ~]# systemctl restart postgresql-11

[[email protected] ~]#

On vérifie.

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

Redémarrage de Flectra

On redémarre le service Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

On vérifie.

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

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.

[[email protected] ~]# cat /etc/flectra-server.conf | grep admin_passwd

admin_passwd = fghtbgh
[[email protected] ~]#

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

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

À la console du Serveur NethServer

On vérifie si nous sommes root.

[email protected] ~]# whoami

root
[[email protected] ~]#

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

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

À la console de PostgreSQL

On se substitue au super-utilisateur postgres.

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

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.

[[email protected] ~]# cat /etc/flectra-server.conf | grep admin_passwd

admin_passwd = fghtbgh
[[email protected] ~]#

Redémarrage de PostgreSQL

On redémarre PostgreSQL.

[[email protected] ~]# systemctl restart postgresql-11

[[email protected] ~]#

On vérifie.

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

Redémarrage de Flectra

On redémarre le service Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

On vérifie.

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

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.

[[email protected] ~]# mkdir /var/lib/pgsql/sauvegarde

[[email protected] ~]#

On change le propriétaire et le groupe.

[[email protected] ~]# chown postgres:postgres /var/lib/pgsql/sauvegarde

[[email protected] ~]#

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

[[email protected] ~]# chmod 700 /var/lib/pgsql/sauvegarde

[root[email protected] ~]#

On vérifie.

[[email protected] ~]# ls -alsd /var/lib/pgsql/sauvegarde

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

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.

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

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.

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

[[email protected] ~]#

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

[[email protected] ~]# chmod 700 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh

[[email protected] ~]#

On vérifie.

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

Sauvegarde

Vérification du script de sauvegarde

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

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

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

[[email protected] ~]# ls -ls /var/lib/pgsql/sauvegarde/Flectra.dump

3604 -rwx------ 1 root root 3690361 20 sept. 15:40 /var/lib/pgsql/sauvegarde/Flectra.dump
[[email protected] ~]#

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.

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

On arrête Flectra.

[[email protected] ~]# systemctl stop flectra

[[email protected] ~]#

On vérifie.

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

On relance le script de sauvegarde.

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

On vérifie le statut de Flectra.

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

Le script a bien démarré Flectra.

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

[[email protected] ~]# ls -ls /var/lib/pgsql/sauvegarde/Flectra.dump

3604 -rwx------ 1 root root 3690361 20 sept. 15:59 /var/lib/pgsql/sauvegarde/Flectra.dump
[[email protected] ~]#

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.

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

/var/lib/pgsql/sauvegarde/
[[email protected] ~]#

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.

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

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.

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

[[email protected] ~]#

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.

[[email protected] ~]# chmod 700 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

[[email protected] ~]#

On vérifie

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

On développe le gabarit personnalisé.

[[email protected] ~]# /sbin/e-smith/expand-template /etc/crontab

[[email protected] ~]#

On redémarre le démon crond.

[[email protected] ~]# systemctl restart crond

[[email protected] ~]#

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.

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

[[email protected] ~]#

On vérifie.

[[email protected] ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

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

[[email protected] ~]#

On développe le gabarit personnalisé.

[[email protected] ~]# /sbin/e-smith/expand-template /etc/crontab

[[email protected] ~]#

On redémarre le démon crond.

[[email protected] ~]# systemctl restart crond

[[email protected] ~]#

Suivi

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

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

Vérification lorsque Flectra est arrêté

On arrête Flectra.

[[email protected] ~]# systemctl stop flectra

[[email protected] ~]#

On relance la commande tail.

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

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

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

[[email protected] ~]#

On vérifie.

[[email protected] ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql

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

[[email protected] ~]#

On développe le gabarit personnalisé.

[[email protected] ~]# /sbin/e-smith/expand-template /etc/crontab

[[email protected] ~]#

On redémarre le démon crond.

[[email protected] ~]# systemctl restart crond

[[email protected] ~]#

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.

[[email protected] ~]# cat /etc/backup-data.d/custom.include | grep crontab

/etc/e-smith/templates-custom/etc/crontab/
[[email protected] ~]#

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.

  • /var/lib/pgsql/sauvegarde/Flectra.dump.
  • Flectra.dump depuis une une sauvegarde NethServer.

/var/lib/pgsql/sauvegarde/Flectra.dump

La dernière sauvegarde PostgreSQL est présente dans le répertoire /var/lib/pgsql/sauvegarde/.

Flectra dump depuis une sauvegarde NethServer

On peut récupérer un fichier de sauvegarde PostgreSQL depuis les sauvegardes NethServer.

On s'assure que le fichier Flectra.dump est présent dans les sauvegardes NethServer.

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

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.

[[email protected] ~]# ls -als /var/lib/pgsql/sauvegarde/Flectra.dump

3604 -rwx------ 1 root root 3690361 20 sept. 15:59 /var/lib/pgsql/sauvegarde/Flectra.dump
[[email protected] ~]#

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.

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

Arrêt de Flectra

[[email protected] ~]# systemctl stop flectra

[[email protected] ~]#

On vérifie.

[[email protected] ~]# systemctl status flectra | grep Active

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

Suppression de la BD actuelle

On se substitue à l'utilisateur postgres.

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

Propriétaire du fichier de sauvegarde

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

[[email protected] ~]# cd /var/lib/pgsql/sauvegarde/

[[email protected] sauvegarde]#

On affiche le contenu du répertoire.

[[email protected] 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
[[email protected] sauvegarde]#

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

[[email protected] sauvegarde]# chown postgres Flectra.dump

[[email protected] sauvegarde]#

On vérifie.

[[email protected] sauvegarde]# ls -ls Flectra.dump

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

Restauration de la BD

On se substitue à l'utilisateur postgres.

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

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:

  • Sauvegarde de la configuration
    Ce type de sauvegarde ne contient que les fichiers de configuration du système. Son objectif est de restaurer rapidement une machine en cas de récupération après sinistre.
  • Sauvegarde des données
    Ce type de sauvegarde est activée par l’installation du module “Sauvegarde” et contient, par défaut, toutes les données stockées dans le système (répertoires des utilisateurs, dossiers partagés, courriels, etc). Cette sauvegarde s'exécute une fois par jour et peut être complète ou incrémentielle sur une base hebdomadaire (six incrémentielles et la septième complète). Elle contient également l'archive de la Sauvegarde de la configuration. Plusieurs sauvegardes peuvent être configurées pour enregistrer différentes données à des intervalles différents.
    Lorsque la machine est fonctionnelle, une restauration complète des données peut être effectuée même si la machine est déjà en production.

Sauvegarde de la configuration

Référence: https://docs.nethserver.org/projects/nethserver-devel/en/latest/nethserver-backup-config.html.

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:

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

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

Duplicity

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:

  • CIFS
  • NFS
  • USB
  • WebDAV (seulement en cas de sauvegarde unique)

Sauvegarde unique

Il s'agit de la sauvegarde système par défaut pouvant être configurée et restaurée à l'aide de l'interface Web.

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

Répertoire partagé pour les sauvegardes

  • Nos sauvegardes utiliseront le protocol CIFS (Common Internet File System).
  • Elles seront téléversées automatiquement dans un répertoire partagé sur le poste de travail.

Il nous faut donc un répertoire partagé sur le poste de travail afin que le Serveur NethServer puisse y déposer les fichiers de la sauvegarde.

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

[[email protected] ~]# config show backup-config

backup-config=configuration
    HistoryLength=31
    status=enabled
[[email protected] ~]#

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

[[email protected] ~]# config show backup-data

backup-data=configuration
    IncludeLogs=enabled
[[email protected] ~]#

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

[[email protected] ~]# db backups show

backup-data=duplicity
    BackupTime=0 3 * * *
    CleanupOlderThan=56D
    FullDay=0
    NFSHost=
    NFSShare=
    Notify=always
    [email protected]
    [email protected]
    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
[[email protected] ~]#

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.

[[email protected] ~]# db backups setprop backup-data VolSize 2048

[[email protected] ~]#

On signale le changement.

[[email protected] ~]# signal-event nethserver-backup-data-update

[[email protected] ~]#

On vérifie.

[[email protected] ~]# db backups show -> grep VolSize

 VolSize=2048
[[email protected] ~]#

Lancement forcé de la sauvegarde

Première sauvegarde

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

[[email protected] ~]# /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%
[[email protected] ~]#

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

On vérifie la date.

[[email protected] ~]# date

ven février  8 13:32:59 EDT 2019
[[email protected] ~]#

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.

[[email protected] ~]# /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%
[[email protected] ~]#

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.

[[email protected] ~]# /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%
[[email protected] ~]#

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

[[email protected] ~]# touch toto

[[email protected] ~]#

On vérifie.

[[email protected] ~]# ls -ls toto

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

2) On lance une sauvegarde.

[[email protected] ~]# /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%
[[email protected] ~]#

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

[[email protected] ~]# rm toto

rm : supprimer fichier vide « toto » ? y
[[email protected] ~]#

On vérifie.

[[email protected] ~]# ls -ls toto

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

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.

[[email protected] ~]# ls -ls toto

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

Le fichier a été restauré.

Recherche de fichiers dans les sauvegardes

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

[[email protected] ~]# /sbin/e-smith/backup-data-list -b backup-data | grep toto

Ven février  8 13:55:22 2019 root/toto
[[email protected] ~]#

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.

[[email protected] ~]# systemctl stop flectra

[[email protected] ~]#

On vérifie l'arrêt.

[[email protected] ~]# systemctl status flectra  | grep -i Active:

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

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

On se substitue à l'utilisateur flectra.

[[email protected] ~]# su - flectra

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

On vérifie.

[[email protected] ~]$ whoami

flectra
[[email protected] ~]$

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

[[email protected] ~]$ cd /opt/flectra/flectra

[[email protected] flectra]$

On vérifie.

[[email protected] flectra]$ pwd

/opt/flectra/flectra
[[email protected] flectra]$

Récupération des mises à jour

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

[[email protected] 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
[[email protected] 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.

[[email protected] flectra]$ git reset --hard master

HEAD is now at 4dd1e69 Merge branch 'master' into 'master'
[[email protected] 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.

[[email protected] 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

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

[[email protected] 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
...
[[email protected] 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.

[[email protected] 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].

[[email protected] 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
[[email protected] flectra]$

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

[[email protected] flectra]$ exit

déconnexion
[[email protected] ~]#

On vérifie.

[[email protected] ~]# whoami

root
[[email protected] ~]#

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.

[[email protected] ~]# systemctl start flectra

[[email protected] ~]#

On vérifie.

[[email protected] ~]# systemctl status flectra | grep Active:

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

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.

[[email protected] ~]# 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é !
[[email protected] ~]#

On redémarre le service Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

PostgreSQL

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

[[email protected] ~]# 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é !
[[email protected] ~]#

Il faut redémarrer PostgreSQL et Flectra.

On redémarre le service PostgreSQL.

[[email protected] ~]# systemctl restart postgresql-11

[[email protected] ~]#

On redémarre le service Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

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.

[[email protected] ~]# 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é !
[[email protected] ~]#

On doit redémarrer le service Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

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:

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

Impacts sur less et lessc

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.

[[email protected] ~]# npm --version

6.4.1
[[email protected] ~]#

Mise à jour

Mise à jour de npm/node.

[[email protected] ~]# 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
+ [email protected]
added 61 packages from 18 contributors, removed 18 packages and updated 69 packages in 12.179s
[[email protected] ~]#

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

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

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

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.

[[email protected] ~]# npm install -g [email protected]

/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
/usr/bin/npx -> /usr/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
added 15 packages from 11 contributors, removed 54 packages and updated 47 packages in 8.626s
[[email protected] ~]#

On vérifie.

[[email protected] ~]# npm --version

6.4.1
[[email protected] ~]#

Redémarrage du service Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

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.

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

On vérifie la version actuelle de lessc.

[[email protected] ~]# lessc --version

lessc 3.9.0 (Less Compiler) [JavaScript]
[[email protected] ~]#

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

[[email protected] ~]# npm config set strict-ssl false

[[email protected] ~]#


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

[[email protected] ~]# npm install -g less less-plugin-clean-css

/usr/bin/lessc -> /usr/lib/node_modules/less/bin/lessc
+ [email protected]
+ [email protected]
updated 7 packages in 4.233s
[[email protected] ~]#

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.

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

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.

[[email protected] ~]# lessc --version

lessc 3.10.3 (Less Compiler) [JavaScript]
[[email protected] ~]#

Il y a eu une mise à jour de lessc.

Redémarrage du service Flectra.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

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.

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

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.

[[email protected] ~]# systemctl restart flectra

[[email protected] ~]#

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.

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

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

[[email protected] ~]# mkdir -p /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php

[[email protected] ~]#

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.

[[email protected] ~]# cat /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur

$config['default_host'] = '127.0.0.1';
[[email protected] ~]#

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.

[[email protected] ~]# expand-template /etc/roundcubemail/config.inc.php

[[email protected] ~]#

On redémarre le démon httpd.

[[email protected] ~]# systemctl restart httpd

[[email protected] ~]#

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.

[[email protected] ~]# cat /etc/backup-data.d/custom.include |  grep roundcube

/etc/e-smith/templates-custom/etc/roundcubemail/
[[email protected] ~]#

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.

[[email protected] ~]# localectl list-locales | grep fr_

fr_BE
fr_BE.iso88591
[email protected]
fr_BE.utf8
[email protected]
fr_CA
fr_CA.iso88591
fr_CA.utf8
fr_CH
fr_CH.iso88591
fr_CH.utf8
fr_FR
fr_FR.iso88591
[email protected]
fr_FR.utf8
[email protected]
fr_LU
fr_LU.iso88591
[email protected]
fr_LU.utf8
[email protected]
[[email protected] ~]#

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.

[[email protected] ~]# localectl set-locale LANG=fr_FR.utf8

[[email protected] ~]#

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.

[[email protected] ~]# ls -als toto

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

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.

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

On active le clavier ca-multi.

[[email protected] ~]# localectl set-keymap ca-multi

[[email protected] ~]#

On vérifie.

[[email protected] ~]# localectl

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

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.

[[email protected] ~]# config setprop httpd-admin MaxSessionIdleTime 7200 MaxSessionLifeTime 57600

[[email protected] ~]#

Désactivation des délais.

[[email protected] ~]# config setprop httpd-admin MaxSessionIdleTime '' MaxSessionLifeTime ''

[[email protected] ~]#

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.

[[email protected] ~]# ls -ls /usr/share/zoneinfo/America/ -> grep Montreal

 4 -rw-r--r--  3 root root 3477  1 avril 08:27 Montreal
[[email protected] ~]#

Changement du fuseau horaire

On affiche le fuseau horaire actuel.

[[email protected] ~]# ls -l /etc/localtime

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

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

[[email protected] ~]# timedatectl set-timezone America/Montreal

[[email protected] ~]#

On vérifie.

[[email protected] ~]# ls -l /etc/localtime

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

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.

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

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 nomdefichier: → ouvre un fichier et l'affiche à l'écran.
  • vi +nomdefichier: → 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


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: 2019-10-02 23:36 par michelandre