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-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.
- Cahier-201-01: → Dolibarr.
- Cahier-201-02: → Odoo-12.
- Cahier-201-03: → MediaWiki.
- Cahier-201-04: → DokuWiki.
- Cahier-201-05: → Moodle.
- Cahier-201-06: → Proxmox.
- Cahier-201-07: → Flectra.
Logiciels
Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence GPL; ils ne coûtent pas un sou. Le seul achat nécessaire est l'obtention d'un nom de domaine au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD.
But final
Après avoir suivi le Cours NethServer-101, vous posséderez un site de Commerce en ligne fiable et hautement sécuritaire. De plus, vous pourrez utiliser un clone de votre site, sur un Serveur NethServer virtuel roulant sur votre poste de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de votre site en ligne.
Particularités de ce document
Notes au lecteur
* Les captures d'écrans ne sont que des références.
** Les informations écrites ont préséance sur celles retrouvées dans les captures d'écrans. Veillez vous référer aux différents tableaux lorsque ceux-ci sont présents.
*** Une capture d'écran avec une accentuation en magenta indique qu'il faut remplacer cette distinction par vos propres paramètres ou implique un choix laissé à votre appréciation.
Conventions
Manipulation, truc ou ruse pour se tirer d'embarras.
Une recommandation ou astuce.
Une note.
Une étape, note ou procédure à surveiller.
Paragraphe non complété ou non vérifié.
Danger pour la sécurité du système.
Toutes les commandes à la console ou à travers PuTTY sont précédées d'une invite qui est toujours présente.
[root@dorgee ~]# ping 10.10.10.75 -c1 PING 10.10.10.75 (10.10.10.75) 56(84) bytes of data. 64 bytes from 10.10.10.75: icmp_seq=1 ttl=64 time=1.63 ms --- 10.10.10.75 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.639/1.639/1.639/0.000 ms [root@dorgee ~]#
Commande à exécuter si ce n'est déjà fait.
Commande indiquée à titre d'information seulement.
À savoir
Diagramme réseau
Serveur NethServer-7.6.1810
Le Serveur NethServer-7.6.1810 est un dérivé de la distribution Linux CentOS et est équivalent à CentOS-7.6.1810.
dorgee.micronator.org
Serveur passerelle pour les connexions à l'Internet.
Serveur DHCP pour tout le réseau LOCAL.
tchana.micronator-dev.org
Serveur virtuel sous VirtualBox Version 6.0.4 r128413 (Qt5.6.2).
Répertoire d'installation
Nous installerons Flectra dans le répertoire /opt/flectra/flectra
.
Poste de travail
Windows-8.1: on utilisera ce poste de travail pour tout ce document.
Éditeur de texte
Ne modifiez pas les fichiers avec des éditeurs de documents tels Notepad, TextEdit ou autres qui ajoutent une marque d'ordre d'octets (byte order marks) aux fichiers et qui casse le programme PHP. Utilisez plutôt un éditeur de code tel vi, vim, Notepad++, ou Atom. Ces éditeurs gèrent l'encodage des fichiers de manière appropriée; ils peuvent aussi être utilisés pour réparer les fichiers précédemment cassés par les autres éditeurs de documents.
Notepad++
Voir le Cahier-02: Installations & configurations des logiciels prérequis du “Cours NethServer-101” pour l'installation et la configuration de cet éditeur.
Description
Référence: https://notepad-plus-plus.org/.
Notepad++ est un éditeur de code source qui prend en charge plusieurs langages. Ce logiciel, codé en C++ avec STL et win32 api, a pour vocation de fournir un éditeur de code source de taille réduite mais très performant. En optimisant de nombreuses fonctions, tout en conservant une facilité d’utilisation et une certaine convivialité, Notepad++ contribue à la limitation des émissions de dioxyde de carbone dans le monde; en effet, en réduisant l’utilisation du CPU, la consommation d’énergie des ordinateurs chute considérablement, en conséquence de quoi, la terre est plus verte.
Site de téléchargement: https://notepad-plus-plus.org/downloads/.
Documentation
Guide pratique (1er août 2013): http://nliautaud.developpez.com/tutoriels/web/notepadplusplus-guide-pratique/.
Aide-mémoire des principales commande: https://drive.google.com/file/d/0B86nuTd5nMTKaENHcmliUC1kdnc/edit.
Préparation de l'environnement de travail
Configuration du poste de travail
Voir la section À savoir du 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.
Fournisseur des 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
Paramètres d'accès à distance
FTP
Configuration → FTP → onglet Configurer.
Le FTP ne doit pas être activé. Flectra s'occupe lui-même des téléchargements.
Serveurs DNS
Configuration → Réseau → onglet Serveur DNS.
Le serveur DNS secondaire peut être 8.8.8.8 ou 1.1.1.1; le dernier étant plus rapide.
Ouverture d'une session PuTTY
Les paramètres du serveur sont définis correctement et on peut utiliser PuTTY pour s'y loguer.
Voir PuTTY dans le Cahier-02 : Installations & configurations des logiciels prérequis du “Cours NethServer-101”.
On se logue en tant que l'utilisateur root.
login as: root root@10.10.10.75's password: mot-de-passe-de-root Last login: Thu May 16 09:58:33 2019 from 10.10.10.81 ************ Welcome to NethServer ************ This is a NethServer installation. Before editing configuration files, be aware of the automatic events and templates system. http://docs.nethserver.org *********************************************** [root@tchana ~]#
Adresse IP
On vérifie les adresses IP du serveur.
[root@tchana ~]# ifconfig enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.10.10.75 netmask 255.255.255.0 broadcast 10.10.10.255 inet6 fe80::a00:27ff:fedd:6373 prefixlen 64 scopeid 0x20<link> ether 08:00:27:dd:63:73 txqueuelen 1000 (Ethernet) RX packets 680 bytes 63712 (62.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 634 bytes 260579 (254.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.75 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::a00:27ff:feda:1348 prefixlen 64 scopeid 0x20<link> ether 08:00:27:da:13:48 txqueuelen 1000 (Ethernet) RX packets 27919 bytes 26181152 (24.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 20591 bytes 5112156 (4.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 2534 bytes 309622 (302.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2534 bytes 309622 (302.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@tchana ~]#
Fail2ban
On vérifie que le pare-feu Fail2ban soit installé.
[root@tchana ~]# rpm -qa | grep -i fail2ban fail2ban-firewalld-0.9.7-1.el7.noarch fail2ban-server-0.9.7-1.el7.noarch fail2ban-0.9.7-1.el7.noarch fail2ban-sendmail-0.9.7-1.el7.noarch nethserver-fail2ban-1.1.6-1.ns7.noarch fail2ban-shorewall-0.9.7-1.el7.noarch [root@tchana ~]#
On vérifie que Fail2ban roule sur le serveur.
[root@tchana ~]# ps aux | grep -i fail2ban root 4586 1.2 0.5 1746708 22656 ? Sl 12:05 0:28 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b root 7161 0.0 0.0 112728 984 pts/0 S+ 12:44 0:00 grep --color=auto -i fail2ban [root@tchana ~]#
ClamAV
Par défaut ClamAV est installé, mais partiellement, et s'occupe seulement du balayage des courriels.
Dans le Cahier-03 : Création d'un Serveur NethServer virtuel du “Cours NethServer-101”, nous avons installé ClamAV qui s'occupe aussi du balayage du système de fichiers.
On vérifie que l'antivirus ClamAV pour le système de fichiers soit installé.
[root@tchana ~]# rpm -qa | grep -i clamav clamav-scanner-systemd-0.101.2-1.el7.x86_64 clamav-lib-0.101.2-1.el7.x86_64 clamav-server-systemd-0.101.2-1.el7.x86_64 clamav-unofficial-sigs-5.6.2-7.el7.noarch clamav-update-0.101.2-1.el7.x86_64 clamav-0.101.2-1.el7.x86_64 clamav-filesystem-0.101.2-1.el7.noarch [root@tchana ~]#
Configuration → Scanner Antivirus → onglet Clamscan.
ClamAV lancera un balayage complet du système à 01h00.
Utilisateurs
Utilisateur michelandre
Gestion → Utilisateurs et groupes → onglet Utilisateurs.
L'utilisateur michelandre a été créé dans le
Cahier-03
: Création d'un Serveur NethServer virtuel du “Cours NethServer-101”.
Collection PHP
Version PHP actuelle pour notre Serveur NethServer-7.6-1810.
[root@tchana ~]# php --version PHP 5.4.16 (cli) (built: Oct 30 2018 19:30:51) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies [root@tchana ~]#
Comme on le voit, notre version 5.4.16 de PHP est légèrement vieillotte.
Nous allons installer la Collection PHP qui fournit une version plus récente tout en gardant installée la version originale.
Collections de logiciels
Les développeurs de RedHat ont pensé qu'un inconvénient, avec entre autres la version 5 de PHP, allait survenir tôt ou tard et ont écrit les paquetages des Collections.
Tous les RPM des Collections sont installés dans le répertoire /opt
; ce qui empêche toutes interférences ou conflits avec les installations par défaut.
PHP
Le but de la Collection PHP est d'installer PHP-5.6, PHP-7.0, PHP-7.1, PHP-7.2 et PHP-7.3 parallèlement à la version installée par défaut avec NethServer-7.6.1810, sans devoir supprimer ou modifier cette dernière. Cette Collection utilise les RPM du référentiel remi qui sont en fait, les mêmes que ceux sur le site Web officiel, mais ils ont l'avantage de fournir plus de choix. Cette Collection nécessite d'installer le référentiel stephdl.
Prérequis pour l'installation de la Collection PHP
Référence: https://wiki.nethserver.org/doku.php?id=php-scl.
Il faut installer les référentiels stephdl et remi pour pouvoir installer la Collection PHP.
Référentiel stephdl
Référence: https://wiki.nethserver.org/doku.php?id=stephdl_repository.
On vérifie si le référentiel stephdl est déjà installé.
[root@tchana ~]# rpm -qa | grep nethserver-stephdl nethserver-stephdl-1.0.7-1.ns7.sdl.noarch [root@tchana ~]#
Si ce n'est déjà fait, on installe ce référentiel.
[root@tchana ~]# yum install -y http://mirror.de-labrusse.fr/NethServer/7/x86_64/nethserver-stephdl-1.0.7-1.ns7.sdl.noarch.rpm ... Transaction Summary ============================================================================================ Install 1 Package Total size: 40 k Installed size: 40 k ... Installed: nethserver-stephdl.noarch 0:1.0.7-1.ns7.sdl Complete! [root@tchana ~]#
Vérification.
[root@tchana ~]# rpm -qa | grep stephdl nethserver-stephdl-1.0.7-1.ns7.sdl.noarch [root@tchana ~]#
Référentiel remi
On vérifie si le référentiel remi est déjà installé.
[root@tchana ~]# rpm -qa | grep remi remi-release-7.6-2.el7.remi.noarch [root@tchana ~]#
Si ce n'est déjà fait, on installe ce référentiel.
[root@tchana ~]# yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm ... Transaction Summary ============================================================================================ Install 1 Package Total size: 19 k Installed size: 19 k ... Installed: remi-release.noarch 0:7.6-2.el7.remi Complete! [root@tchana ~]#
On vérifie.
[root@tchana ~]# rpm -qa | grep remi remi-release-7.6-2.el7.remi.noarch [root@tchana ~]#
Installation de la Collection PHP
[root@tchana ~]# yum install -y nethserver-php-scl --enablerepo=stephdl ... Résumé de la transaction ============================================================================================ Installation 1 Paquet (+130 Paquets en dépendance) Taille totale des téléchargements : 47 M Taille d'installation : 136 M ... Installation : scl-utils-20130529-19.el7.x86_64 1/131 ... Installation : nethserver-php-scl-1.2.6-1.ns7.sdl.x86_64 131/131 ... Vérification : php72-php-xml-7.2.21-1.el7.remi.x86_64 1/131 ... Vérification : php73-php-json-7.3.8-1.el7.remi.x86_64 131/131 Installé : nethserver-php-scl.x86_64 0:1.2.6-1.ns7.sdl Dépendances installées : enchant.x86_64 1:1.6.0-8.el7 ... tcl.x86_64 1:8.5.13-8.el7 Terminé ! [root@tchana ~]#
Usage
Normalement, l'interface Web devrait être complète et vous ne devriez pas devoir utiliser la ligne de commande. Si vous pensez que Stéphane de Labrusse pourrait améliorer les paramètres PHP en apportant plus d'options, veuillez le lui demander: stephdl arobas de-labrusse point fr.
Les réglages sont répartis à deux endroits.
- À 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.
[root@tchana ~]# yum repolist | grep remi * remi-safe: mirror.team-cymru.com remi-safe Safe Remi's RPM repository for Enterprise Lin 3 191 [root@tchana ~]#
On vérifie le répertoire /opt
.
[root@tchana ~]# ls -ls /opt total 0 0 drwxr-xr-x. 7 root root 81 Jan 4 09:16 puppetlabs 0 drwxr-xr-x 7 root root 71 17 août 21:00 remi 0 drwxr-xr-x 3 root root 27 17 août 21:15 rh [root@tchana ~]#
On affiche le répertoire /opt/remi
.
[root@tchana ~]# ls -ls /opt/remi total 0 0 dr-xr-xr-x 3 root root 32 17 août 21:00 php56 0 dr-xr-xr-x 3 root root 32 17 août 21:00 php70 0 dr-xr-xr-x 3 root root 32 17 août 21:00 php71 0 dr-xr-xr-x 3 root root 32 17 août 21:00 php72 0 dr-xr-xr-x 3 root root 32 17 août 21:00 php73 [root@tchana ~]#
PHP72 par défaut après une connexion à la ligne de commande
Référence: http://appdev.oit.umn.edu/2015/02/11/scl/
On crée le fichier d'activation qui sera lu lors d'une connexion à une console du Serveur NethServer.
Prendre tout le contenu de l'encadré pour la commande.
cat > /etc/profile.d/activer-php72.sh <<'EOT' #!/bin/bash source /opt/remi/php72/enable if [[ "$X_SCLS" != *php72* ]]; then src="`scl enable php72 'echo $X_SCLS'`" pkgs=(${src// / }) uniq=($(printf "%s\n" "${pkgs[@]}" | sort -u)); export X_SCLS="${uniq[@]}" fi EOT
On rend le fichier exécutable.
[root@tchana ~]# chmod +x /etc/profile.d/activer-php72.sh [root@tchana ~]#
On vérifie.
[root@tchana ~]# ls -als /etc/profile.d/activer-php72.sh 4 -rwxr-xr-x 1 root root 215 17 août 21:05 /etc/profile.d/activer-php72.sh [root@tchana ~]#
Vérification si PHP72 est le défaut
On ferme la connexion PuTTY et on en ouvre une nouvelle.
On vérifie l'installation de la Collection.
[root@tchana ~]# rpm -qa | grep scl- scl-utils-20130529-19.el7.x86_64 nethserver-php-scl-1.2.6-1.ns7.sdl.x86_64 centos-release-scl-rh-2-3.el7.centos.noarch centos-release-scl-2-3.el7.centos.noarch [root@tchana ~]#
Collections installées.
[root@tchana ~]# scl -l php56 php70 php71 php72 php73 [root@tchana ~]#
Quel est le PHP par défaut?
[root@tchana ~]# which php /opt/remi/php72/root/usr/bin/php [root@tchana ~]#
Quelle est sa version?
[root@tchana ~]# php --version PHP 7.2.21 (cli) (built: Jul 30 2019 14:10:18) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.21, Copyright (c) 1999-2018, by Zend Technologies [root@tchana ~]#
Notre fichier activer-php72.sh
fonctionne correctement.
Sauvegarde du fichier d'activation
On vérifie si le nom du fichier /etc/profile.d/activer-php72.sh
est déjà présent dans le fichier d'inclusion de la sauvegarde des données: /etc/backup-data.d/custom.include
, sinon on l'insère.
Prendre tout le contenu de l'encadré pour la commande.
NouvelleInclusion="/etc/profile.d/activer-php72.sh" if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n" else # L'entrée n'a pas été trouvée dans custom.include echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n" fi
On vérifie.
[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/profile.d/activer-php72.sh /etc/profile.d/activer-php72.sh [root@tchana ~]#
Ci-dessus, il n'y a pas de ligne vide avant /etc/profile.d/activer-php72.sh. Nous en avons inséré une afin de faciliter la copie de la commande.
Mise à jour de la Collection
NethServer-7.6.1810 utilise intrinsèquement le référentiel remi-safe. Ce qui signifie qu'il est activé par défaut. Lancez simplement la commande suivante pour mettre à jour la Collection PHP:
[root@tchana ~]# yum update -y nethserver-php-scl --enablerepo=stephdl Loaded plugins: changelog, fastestmirror, nethserver_events Loading mirror speeds from cached hostfile * ce-base: it.centos.contactlab.it * ce-extras: it.centos.contactlab.it * ce-updates: it.centos.contactlab.it * epel: epel.mirror.constant.com * nethforge: mirror.nethserver.org * nethserver-base: mirror.nethserver.org * nethserver-updates: mirror.nethserver.org * remi-safe: rpms.remirepo.net No packages marked for update [root@tchana ~]#
S'il y avait une mise à jour, elle serait installée avec cette commande.
La mise à jour du Serveur NethServer s'occupe aussi de celle de la Collection PHP.
Ajustement des paramètres PHP
Les valeurs de certains paramètres de PHP ne sont pas suffisants pour certains ajouts. Ces paramètres sont: MemoryLimit
, PostMaxSize
et UploadMaxFilesize
. Il faut les ajuster.
Affichage des paramètres par défaut.
[root@tchana ~]# config show php72 php72=configuration AllowUrlFopen=On ExposePhp=0 MaxExecutionTime=30 MaxFileUpload=20 MaxInputTime=60 MemoryLimit=128 PostMaxSize=20 UploadMaxFilesize=10 [root@tchana ~]#
Il faut obligatoirement que le paramètre
PostMaxSize
soit plus grand que celui de UploadMaxFilesize
. Si on modifie l'un, il faut vérifier l'autre pour que la correspondance des grandeurs soit respectée.
Ci-dessous, le caractère > signifie “plus grand que”.
Nous allons ajuster:
MemoryLimit
(250M) > PostMaxSize
(100M) > UploadMaxFilesize
(75M).
MemoryLimit
Chaque fois qu'un client fait une requête au serveur Web, PHP génère un processus PHP. Le travail de ce processus est de générer du code HTML qu'il envoie au client. Le processus fournit un temps d'exécution à un script qui crée la réponse à la requête. La limite de mémoire MemoryLimit
est la quantité maximale de mémoire que ce processus peut utiliser. Si la limite est atteinte ou dépassée, le processus échoue et Apache signale une erreur HTTP 500.
PostMaxSize
Le paramètre PostMaxSize
définit la taille maximale autorisée pour les données d'un post. Ce paramètre affecte également le téléchargement de fichiers. Pour télécharger des fichiers volumineux, cette valeur doit absolument être toujours supérieure à UploadMaxFilesize
.
UploadMaxFilesize
Pour certaines extensions telles qu'entre autres WooCommerce, WordPress doit autoriser le téléversement de fichiers et la grandeur de ceux-ci ne peut dépasser la limite définie par le paramètre UploadMaxFilesize
de PHP.
La limite ci-contre, est celle de WordPress.
Version PHP par défaut
On définit la version PHP par défaut pour Apache.
Configuration → Paramètres PHP → onglet Version PHP Apache → cliquer Php72 SCL Version → SOUMETTRE.
Ajustements des paramètres de la version PHP-7.2
Onglet Php V7.2 SCL
Ajuster tel que ci-contre (250M - 100M - 75M)
→ SOUMETTRE.
Vérifications à la ligne de commande
MemoryLimit
[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i Memory_Limit memory_limit = 250M [root@tchana ~]#
PostMaxSize
[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i post_max_size post_max_size = 100M [root@tchana ~]#
UploadMaxFilesize
[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i upload_max_filesize upload_max_filesize = 75M
Comme on le voit ci-dessus, les grandeurs maximales pour PHP-7.2 sont maintenant de:
MemoryLimit
(250M) > PostMaxSize
(100M) > UploadMaxFilesize
(75M).
On vérifie la configuration de PHP-7.2.
[root@tchana ~]# config show php72 php72=configuration AllowUrlFopen=Off ExposePhp=0 MaxExecutionTime=30 MaxFileUpload=20 MaxInputTime=60 MemoryLimit=250 PostMaxSize=100 UploadMaxFilesize=75 [root@tchana ~]#
Instantané VirtualBox
À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
PostgreSQL-11 - Installation
Invite de commandes NethServer
Pour ce document, le Serveur NethServer est à l'adresse 10.10.10.75 et connecté à l'Internet à travers le serveur dorgee.micronator.org.
Si nous ne sommes pas déjà logué, nous nous connectons en tant que root au Serveur NethServer à l'aide de PuTTY.
login as: root root@10.10.10.75's password: mot-de-passe-de-root Last login: Fri May 10 17:11:57 2019 from 10.10.10.81 ************ Welcome to NethServer ************ This is a NethServer installation. Before editing configuration files, be aware of the automatic events and templates system. http://docs.nethserver.org *********************************************** [root@tchana ~]
On affiche les adresses IP du serveur.
[root@tchana html]# ifconfig enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.10.10.75 netmask 255.255.255.0 broadcast 10.10.10.255 inet6 fe80::a00:27ff:fedd:6373 prefixlen 64 scopeid 0x20<link> ether 08:00:27:dd:63:73 txqueuelen 1000 (Ethernet) RX packets 664 bytes 74068 (72.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 615 bytes 289665 (282.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.75 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::a00:27ff:feda:1348 prefixlen 64 scopeid 0x20<link> ether 08:00:27:da:13:48 txqueuelen 1000 (Ethernet) RX packets 144384 bytes 196551121 (187.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 83977 bytes 7402753 (7.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 3178 bytes 378438 (369.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3178 bytes 378438 (369.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@tchana ~]#
Référentiel pgdg11
32 ou 64 bits
Il nous faut connaître le genre de CPU utilisé par notre serveur afin de choisir la bonne version de PostgreSQL.
[root@tchana ~]# uname -p x86_64 [root@tchana ~]#
Version CentOS
Pour connaître la version CentOS dont notre serveur est issu.
[root@tchana ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) [root@tchana ~]#
Lien du référentiel PostgreSQL
Pour connaître le lien URL du référentiel PostgreSQL, on se rend au site suivant: https://yum.postgresql.org/repopackages.php#pg11
Le référentiel EPEL (Extra Packages pour Enterprise Linux) est présent et Activé par défaut sur un Server NethServer.
Notre Serveur NethServer est un 64 bits issu de CentOS-7.6. Donc, nous choisissons CentOS 7 - x86 64.
On claque sur CentOS 7 - x86 64 et on copie l'adresse 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.
[root@tchana ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm Modules complémentaires chargés : changelog, fastestmirror, nethserver_events pgdg-redhat-repo-latest.noarch.rpm | 5.6 kB 00:00:00 Examen de /var/tmp/yum-root-DVkWkS/pgdg-redhat-repo-latest.noarch.rpm : pgdg-redhat-repo-42.0-4.noarch Sélection de /var/tmp/yum-root-DVkWkS/pgdg-redhat-repo-latest.noarch.rpm pour installation Résolution des dépendances --> Lancement de la transaction de test ---> Le paquet pgdg-redhat-repo.noarch 0:42.0-4 sera installé --> Résolution des dépendances terminée Dépendances résolues ============================================================================================ Package Architecture Version Dépôt Taille ============================================================================================ Installation : pgdg-redhat-repo noarch 42.0-4 /pgdg-redhat-repo-latest.noarch 6.8 k Résumé de la transaction ============================================================================================ Installation 1 Paquet Taille totale : 6.8 k Taille d'installation : 6.8 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installation : pgdg-redhat-repo-42.0-4.noarch 1/1 Vérification : pgdg-redhat-repo-42.0-4.noarch 1/1 Installé : pgdg-redhat-repo.noarch 0:42.0-4 Terminé ! [root@tchana ~]#
Le référentiel PostgreSQL est installé.
Installation
Maintenant, on peut procéder à l'installation de PostgreSQL-11.
[root@tchana ~]# yum install -y --enablerepo=pgdg11 \ postgresql11 postgresql11-libs \ postgresql11-server postgresql11-contrib \ postgresql11-devel postgresql11-docs \ postgresql11-test ... Install 7 Packages (+1 Dependent package) Total download size: 23 M Installed size: 89 M ... Installed: postgresql11.x86_64 0:11.3-1PGDG.rhel7 postgresql11-contrib.x86_64 0:11.3-1PGDG.rhel7 postgresql11-devel.x86_64 0:11.3-1PGDG.rhel7 postgresql11-docs.x86_64 0:11.3-1PGDG.rhel7 postgresql11-libs.x86_64 0:11.3-1PGDG.rhel7 postgresql11-server.x86_64 0:11.3-1PGDG.rhel7 postgresql11-test.x86_64 0:11.3-1PGDG.rhel7 Dependency Installed: libicu-devel.x86_64 0:50.1.2-17.el7 Complete! [root@tchana ~]#
On vérifie l'installation.
[root@tchana ~]# rpm -qi postgresql11-server Name : postgresql11-server Version : 11.3 Release : 1PGDG.rhel7 Architecture: x86_64 Install Date: jeu. 16 mai 2019 17:27:20 EDT Group : Applications/Databases Size : 19562871 License : PostgreSQL Signature : DSA/SHA1, mer. 08 mai 2019 05:41:15 EDT, Key ID 1f16d2e1442df0f8 Source RPM : postgresql11-11.3-1PGDG.rhel7.src.rpm Build Date : mer. 08 mai 2019 05:37:39 EDT Build Host : koji-centos7-x86-64-pgbuild Relocations : (not relocatable) Vendor : PostgreSQL Global Development Group URL : https://www.postgresql.org/ Summary : The programs needed to create and run a PostgreSQL server Description : PostgreSQL is an advanced Object-Relational database management system (DBMS). The postgresql11-server package contains the programs needed to create and run a PostgreSQL server, which will in turn allow you to create and maintain PostgreSQL databases. [root@tchana ~]#
Protection du référentiel
Références: http://lxsoft106.cern.ch/cern/centos/7.6.1810/updates/x86_64/repoview/yum-plugin-protectbase.html
Références: https://www.cyberciti.biz/faq/rhel-centos-fedora-yum-protect-packages-from-certain-repositories/.
Nous voulons protéger le référentiel [pgdg11] afin que ses paquets ne soient pas mis à jour par aucun autre référentiel.
On installe le paquet yum-plugin-protectbase
.
[root@tchana ~]# yum install -y yum-plugin-protectbase ... Résumé de la transaction ============================================================================================ Installation 1 Paquet Taille totale des téléchargements : 27 k Taille d'installation : 22 k ... Installé : yum-plugin-protectbase.noarch 0:1.1.31-50.el7 Terminé ! [root@tchana ~]#
On affiche les informations du paquet yum-plugin-protectbase
.
[root@tchana ~]# rpm -qi yum-plugin-protectbase Name : yum-plugin-protectbase Version : 1.1.31 Release : 50.el7 Architecture: noarch Install Date: jeu. 16 mai 2019 23:15:00 EDT Group : System Environment/Base Size : 22696 License : GPLv2+ Signature : RSA/SHA256, lun. 12 nov. 2018 10:27:29 EST, Key ID 24c6a8a7f4a80eb5 Source RPM : yum-utils-1.1.31-50.el7.src.rpm Build Date : mar. 30 oct. 2018 18:58:13 EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://yum.baseurl.org/download/yum-utils/ Summary : Yum plugin to protect packages from certain repositories. Description : This plugin allows certain repositories to be protected. Packages in the protected repositories can't be overridden by packages in non-protected repositories even if the non-protected repo has a later version. [root@tchana ~]#
On s'assure que le paquet est activé c.-à-d. enabled = 1
.
[root@tchana ~]# cat /etc/yum/pluginconf.d/protectbase.conf [main] enabled = 1 [root@tchana ~]#
Protection de pgdg11
On protège le référentiel [pgdg11] en éditant le fichier: /etc/yum.repos.d/pgdg-redhat-all.repo
et en ajoutant la ligne protect = 1
à la fin de la section définissant le référentiel [pgdg11].
... [pgdg11] name=PostgreSQL 11 $releasever - $basearch baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG protect = 1 ...
Tous les paquets du référentiel [pgdg11] sont maintenant protégés contre toutes mises à jour provenant de tous autres référentiels.
On vérifie.
[root@tchana ~]# cat /etc/yum.repos.d/pgdg-redhat-all.repo | grep protect -n6 10-[pgdg11] 11-name=PostgreSQL 11 $releasever - $basearch 12-baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch 13-enabled=1 14-gpgcheck=1 15-gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG 16:protect = 1 17- 18-[pgdg10] 19-name=PostgreSQL 10 $releasever - $basearch 20-baseurl=https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-$releasever-$basearch 21-enabled=1 22-gpgcheck=1 [root@tchana ~]#
Initialisation de la BD
On initialise la BD.
Peut prendre un certain temps.
[root@tchana ~]# /usr/pgsql-11/bin/postgresql-11-setup initdb Initializing database ... OK [root@tchana ~]#
Activation du service PostgreSQL
On active le service pour qu'il démarre avec l'amorçage du Serveur NethServer.
[root@tchana ~]# systemctl enable postgresql-11.service Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service. [root@tchana ~]#
On démarre le service PostgreSQL.
[root@tchana ~]# systemctl start postgresql-11.service [root@tchana ~]#
On examine le statut du service PostgreSQL.
[root@tchana ~]# systemctl status postgresql-11.service ● postgresql-11.service - PostgreSQL 11 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled) Active: active (running) since jeu. 2019-05-16 17:36:27 EDT; 12s ago Docs: https://www.postgresql.org/docs/11/static/ Process: 5709 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 5715 (postmaster) CGroup: /system.slice/postgresql-11.service ├─5715 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/ ├─5717 postgres: logger ├─5719 postgres: checkpointer ├─5720 postgres: background writer ├─5721 postgres: walwriter ├─5722 postgres: autovacuum launcher ├─5723 postgres: stats collector └─5724 postgres: logical replication launcher mai 16 17:36:27 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database se.... mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.840 EDT …432 mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.845 EDT …2 » mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.850 EDT …2 » mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.864 EDT …ces mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.864 EDT … ». mai 16 17:36:27 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database server. Hint: Some lines were ellipsized, use -l to show in full. [root@tchana ~]#
PostgreSQL-11 est installé et protégé contre les mises à jour par tous les référentiels, sauf pgdg11/7/x86_64.
PostgreSQL-11 - Premiers pas
Cette section est inspirée de l'article: https://wiki.postgresql.org/wiki/First_steps et sert à démontrer quelques commandes à la console psql
.
Connexion
On se connecte au Serveur NethServer en tant que root puis on change d'utilisateur pour devenir le super-utilisateur postgres.
[root@tchana ~]# su - postgres -bash-4.2$
On vérifie.
-bash-4.2$ whoami postgres -bash-4.2$
On lance la console PostgreSQL.
-bash-4.2$ psql postgres -bash-4.2$ psql psql (11.3) Saisissez « help » pour l'aide. postgres=#
On vérifie que l'aide fonctionne correctement.
postgres=# HELP Vous utilisez psql, l'interface en ligne de commande de PostgreSQL. Saisissez: \copyright pour les termes de distribution \h pour l'aide-mémoire des commandes SQL \? pour l'aide-mémoire des commandes psql \g ou point-virgule en fin d'instruction pour exécuter la requête \q pour quitter postgres=#
SCHEMA
Une base de données contient un ou plusieurs schémas, qui eux, contiennent des tables. Les schémas contiennent aussi d'autres types d'objets y compris des types de données, fonctions et opérateurs. Seul le nom d'objet peut être utilisé sans conflit c.-à-d. schema1
et mon_schema
peuvent tous les deux contenir des tables mytable
. Contrairement aux bases de données; les schémas ne sont pas séparés de manière rigide; un utilisateur peut accéder aux objets de n'importe lequel des schémas de la base de données auxquels il se connecte s'il a les privilèges pour le faire.
On crée un schéma qu'on appellera test
dans la base de données par défaut appelée postgres
.
postgres=# CREATE SCHEMA test; CREATE SCHEMA postgres=#
RÔLE
Un rôle est une entité qui peut posséder des objets de la base de données et avoir des droits sur celle-ci. Il peut être considéré comme un “utilisateur”, un “groupe” ou les deux suivant la façon dont il est utilisé.
On crée un rôle (utilisateur) et on lui octroie un mot de passe.
L'utilisateur PostgreSQL toto n'a rien à voir avec l'utilisateur NethServer toto.
postgres=# CREATE USER toto PASSWORD 'fghtbgh'; CREATE ROLE postgres=#
GRANT
La commande GRANT
a deux variantes: la première donne des droits sur un objet de la base de données (table, vue, séquence, base de données, fonction, langage de procédure, schéma ou espace logique), la seconde gère les appartenances à un rôle.
On donne au nouveau rôle tous les droits (tel que la possibilité de créer des tables) sur le nouveau schéma.
postgres=# GRANT ALL ON SCHEMA test TO toto; GRANT postgres=#
On donne au nouveau rôle tous les droits (tel que la possibilité d'insertion) sur toutes les tables du nouveau schéma.
postgres=# GRANT ALL ON ALL TABLES IN SCHEMA test TO toto; GRANT postgres=#
Sortie de la console PostgreSQL
On quitte la console PostgreSQL.
postgres=# \q -bash-4.2$
On retourne à l'utilisateur root.
-bash-4.2$ exit déconnexion [root@tchana ~]#
Utilisateur standard Linux (toto) et PostgreSQL
On crée un utilisateur standard Linux.
[root@tchana ~]# useradd -m -U -s /bin/bash toto [root@tchana ~]#
On vérifie.
[root@tchana ~]# cat /etc/passwd | grep toto toto:x:1002:1002::/home/toto:/bin/bash [root@tchana ~]#
On lui octroie un mot de passe.
[root@tchana ~]# passwd toto Changement de mot de passe pour l'utilisateur toto. Nouveau mot de passe : mot-de-passe-pour-toto Retapez le nouveau mot de passe : mot-de-passe-pour-toto passwd : mise à jour réussie de tous les jetons d'authentification. [root@tchana ~]#
On se substitue à l'utilisateur toto.
[root@tchana ~]# su - toto toto@tchana ~]$
Si nous ne sommes pas root et que nous changeons d'utilisateur, il faudra entrer le mot de passe demandé qui est alors celui de l'utilisateur auquel on veut se substituer.
-bash-4.2$ su - toto Mot de passe : mot-de-passe-de-toto -bash-4.2$
Connexion à la BD avec un utilisateur standard
Par défaut, le mode d'authentification pour se loguer dans PostgreSQL est “ident” qui signifie qu'un utilisateur xxx de Linux ne peut se connecter qu'en tant qu'utilisateur PostgreSQL xxx.
On se logue, en tant qu'utilisateur ordinaire (toto qui a été créé précédemment dans PostgreSQL par le super-utilisateur postgres) à la base de données par défaut c'est-à-dire la BD postgres
.
-bash-4.2$ psql -d postgres psql (11.3) Saisissez « help » pour l'aide. postgres=>
HELP
On essaie l'aide.
postgres=> HELP Vous utilisez psql, l'interface en ligne de commande de PostgreSQL. Saisissez: \copyright pour les termes de distribution \h pour l'aide-mémoire des commandes SQL \? pour l'aide-mémoire des commandes psql \g ou point-virgule en fin d'instruction pour exécuter la requête \q pour quitter postgres=>
CREATE
Dans le schéma test
, l'utilisateur toto crée une table test
.
postgres=> CREATE TABLE test.test (testdecol varchar(20)); CREATE TABLE postgres=>
INSERT
On insère une entrée dans la nouvelle table.
postgres=> insert into test.test (testdecol) values ('Ça fonctionne!'); INSERT 0 1 postgres=>
SELECT
Sélection depuis une table.
postgres=> SELECT * from test.test; testdecol ----------- Ça fonctionne! (1 ligne) postgres=>
Déconnexion
L'utilisateur toto quitte la console PostgreSQL.
postgres=> \q -bash-4.2$
On vérifie qui on est.
-bash-4.2$ whoami toto -bash-4.2$
On retourne à l'utilisateur root.
-bash-4.2$ exit déconnexion [root@tchana ~]#
Suppression de l'utilisateur standard toto
On supprime l'utilisateur standard Linux toto et son répertoire.
[root@tchana ~]# userdel -f -r toto [root@tchana ~]#
On vérifie.
[root@tchana ~]# cat /etc/passwd | grep toto [root@tchana ~]#
Nettoyage de PostgreSQL
Suppression du SCHEMA test
On se substitue au super-utilisateur postgres.
[root@tchana ~]# su - postgres Dernière connexion : jeudi 16 mai 2019 à 17:46:27 EDT EDT sur pts/0 -bash-4.2$
On vérifie.
-bash-4.2$ whoami postgres -bash-4.2$
On lance la console PostgreSQL.
-bash-4.2$ psql psql (11.3) Saisissez « help » pour l'aide. postgres=#
On affiche les SCHEMA.
postgres=# \dn Liste des schémas Nom | Propriétaire --------+-------------- public | postgres test | postgres (2 lignes) postgres=#
On supprime le SCHEMA test
.
postgres=# DROP SCHEMA test CASCADE; NOTICE: DROP cascade sur table test.test DROP SCHEMA postgres=#
On vérifie la suppression.
postgres=# \dn Liste des schémas Nom | Propriétaire --------+-------------- public | postgres (1 ligne) postgres=#
Suppression de l'utilisateur PostgreSQL toto
postgres=# DROP USER toto; DROP ROLE postgres=#
On vérifie la suppression.
postgres=# \du Liste des rôles Nom du rôle | Attributs | Membre de -------------+---------------------------------------------------------------------------------+----------- postgres | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {} postgres=#
On quitte la console PostgreSQL.
postgres=# \q -bash-4.2$
On quitte la substitution d'utilisateur.
-bash-4.2$ exit déconnexion [root@tchana ~]#
On vérifie qu'on est bien de retour à l'utilisateur root.
[root@tchana ~]# whoami root [root@tchana ~]#
PostgreSQL-11 fonctionne correctement.
PostgreSQL-11 - Configuration finale
MD5
Maintenant, il nous faut configurer PostgreSQL pour qu'il accepte les connexions avec mots de passe chiffrés MD5 pour être ainsi compatible avec les modules Python.
On vérifie qu'on est bien root.
[root@tchana ~]# whoami root [root@tchana ~]#
En tant qu'utilisateur root, on remplace
ident
par md5
dans le fichier pg_hba.conf
.
[root@tchana ~]# sed -i "/^host/s/ident/md5/g" /var/lib/pgsql/11/data/pg_hba.conf [root@tchana ~]#
On vérifie.
[root@tchana ~]# cat /var/lib/pgsql/11/data/pg_hba.conf | grep md5 # METHOD can be "trust", "reject", "md5", "password", "scram-sha-256", # Note that "password" sends passwords in clear text; "md5" or host all all 127.0.0.1/32 md5 host all all ::1/128 md5 host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5 [root@tchana ~]#
Création de l'utilisateur Linux flectra
On peut choisir le mot de passe qu'on veut, mais l'important est de le mémoriser. De plus, il est préférable qu'il réponde aux normes NethServer pour les mots de passe.
Utilisateur Linux
Le répertoire personnel ( -d ) de l'utilisateur flectra sera le répertoire /opt/flectra
, ainsi tout le contenu de ce répertoire aura comme propriétaire:groupe flectra:flectra.
[root@tchana ~]# useradd -m -U -r -d /opt/flectra -s /bin/bash flectra [root@tchana ~]#
On octroie un mot de passe robuste à l'utilisateur flectra de Linux.
[root@tchana ~]# passwd flectra Changement de mot de passe pour l'utilisateur flectra. Nouveau mot de passe : mot-de-passe-robuste-pour-flectra Retapez le nouveau mot de passe : mot-de-passe-robuste-pour-flectra passwd : mise à jour réussie de tous les jetons d'authentification. [root@tchana ~]#
Dans notre cas, le mot de passe est de 7 caractères seulement; pour un serveur en Production, il faut un mot de passe robuste et conforme aux normes NethServer. Il ne faut pas utiliser notre exemple.
Le mot de passe doit contenir: au moins 1 chiffre, 1 caractère majuscule, 1 caractère minuscule, 1 caractère spécial, 5 caractères différents, ne pas être présent dans les dictionnaires de mots courants et être différent du nom d'utilisateur. De plus, il est impossible de répéter des motifs formés de 3 caractères ou plus (par exemple, le mot de passe As1.$AS1.$ n'est pas valide).
Utilisateur PostgreSQL
Pour notre démonstration, on choisit le mot de passe fghtbgh qui est le préféré du fameux Général Toto dont les extraordinaires aventures sont connues de tous les enfants.
[root@tchana ~]# echo -e "fghtbgh\nfghtbgh\n" | \ su - postgres \ -c "createuser \ --createdb \ --username postgres \ --no-createrole \ --no-superuser \ --pwprompt flectra" Saisir le mot de passe pour le nouveau rôle : Le saisir de nouveau : [root@tchana ~]#
Il n'est pas nécessaire d'entrer le mot de passe fghtbgh, car il a été donné au début de la commande par l'utilitaire echo
.
L'utilisateur flectra a été créé dans PostgreSQL par le super-utilisateur postgres et non dans le Serveur NethServer.
Sécurité
Adaptation de la page: https://www.odoo.com/documentation/11.0/setup/deploy.html.
Sécurité de base
Pour commencer, gardez à l'esprit que la sécurisation d'un système d'information est un processus continu et non pas une opération ponctuelle. A tout moment, vous ne serez pas plus sécurisé que le maillon le plus faible de votre environnement.
Alors, s'il vous plaît, ne prenez pas cette section comme la liste ultime des mesures qui préviendront tous les problèmes de sécurité. Elle est seulement conçue comme un résumé des premières mesures importantes que vous devriez être certain d'inclure dans votre plan d'action de sécurité. Le reste proviendra des meilleures pratiques de sécurité pour votre système d'exploitation/distribution de même que des meilleures pratiques en termes d'utilisateurs, mot de passe, gestion du contrôle d'accès, etc.
Lors du déploiement d'un serveur connecté à l'Internet, veillez à prendre en compte les sujets suivants relatifs à la sécurité:
- Définissez toujours un mot de passe administrateur (super-utilisateur) robuste et restreignez l'accès aux pages de gestion de base de données dès que le système est configuré.
- Choisissez des login uniques et des mots de passe robustes pour tous les comptes d'administrateur sur toutes les bases de données. N'utilisez pas 'admin' comme identifiant. N'utilisez pas ces login pour les opérations quotidiennes, mais uniquement pour contrôler/gérer l'installation. N'utilisez jamais un mot de passe par défaut tel admin/admin, même pour les bases de données de test.
- Utilisez les filtres de base de données appropriés
--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
etdb_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 configurationlist_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 utilisateurdb_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.
[root@tchana ~]# yum repolist | grep -i sclo * ce-sclo-rh: mirrors.vooservers.com * ce-sclo-sclo: mirrors.vooservers.com ce-sclo-rh/7/x86_64 CE-SCLo-rh-7.6.1810 8 185 ce-sclo-sclo/7/x86_64 CE-SCLo-sclo-7.6.1810 771 [root@tchana ~]#
Les référentiels ce-sclo-rh et ce-sclo-sclo sont activés par défaut.
Référence: http://docs.nethserver.org/projects/nethserver-devel/en/latest/nethserver-base.html#repositories.
Installation
[root@tchana ~]# yum install -y --enablerepo=centos-sclo-rh rh-python36* ... Résumé de la transaction ============================================================================================ Installation 41 Paquets (+24 Paquets en dépendance) Taille totale des téléchargements : 74 M Taille d'installation : 355 M ... Installé: rh-python36.x86_64 0:2.0-1.el7 ... rh-python36-scldevel.x86_64 0:2.0-1.el7 Dépendance(s) installée(s) : atlas.x86_64 0:3.10.1-12.el7 ... zip.x86_64 0:3.0-11.el7 Terminé ! [root@tchana ~]#
Une fois la Collection RH-Python36 installée, on peut vérifier sa présence sur le serveur.
[root@tchana ~]# scl -l httpd24 php56 php70 php71 php72 php73 rh-python36 [root@tchana ~]#
La Collection http24 est incluse dans l'installation de la Collection RH-Python36.
Vérification de la version Python
Le chemin de la commande python
est: /opt/rh/rh-python36/root/usr/bin/python
.
[root@tchana ~]# ls -als /opt/rh/rh-python36/root/usr/bin/python 0 lrwxrwxrwx 1 root root 7 11 mai 18:11 /opt/rh/rh-python36/root/usr/bin/python -> python3 [root@tchana ~]#
On affiche la version de la commande python
de la Collection RH-Python36.
[root@tchana ~]# /opt/rh/rh-python36/root/usr/bin/python --version Python 3.6.3 [root@tchana ~]#
Instantané VirtualBox
À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
La Collection RH-Python36 est installée.
Flectra - Prérequis
Description
Flectra requière un assez grand nombre de dépendances avant d'être installé.
Logiciels généraux
Le compilateur gcc
est nécessaire lors de l'installation de certains prérequis qui doivent être compilés avant leur installation.
Comme la présence de
gcc
sur un serveur est un bris majeur de sécurité, une fois l'installation de Flectra terminée, on le désinstallera et on fera de même de sa dépendance cpp
. Voir la section
Désinstallation des compilateurs gcc et cpp
.
Installation
[root@tchana ~]# yum install -y git gcc zlib-devel bzip2-devel openssl-devel \ ncurses-devel sqlite-devel readline-devel tk-devel \ libffi-devel libxslt libxslt-devel libxml2-devel \ openldap-devel libjpeg-turbo-devel openjpeg-devel \ libtiff-devel libXext libz.so.1 xorg-x11-fonts-Type1 ... Résumé de la transaction ============================================================================================ Installation 18 Paquets (+39 Paquets en dépendance) Taille totale des téléchargements : 53 M Taille d'installation : 143 M ... Installé : bzip2-devel.x86_64 0:1.0.6-13.el7 gcc.x86_64 0:4.8.5-36.el7_6.2 git.x86_64 0:1.8.3.1-20.el7 libffi-devel.x86_64 0:3.0.13-18.el7 libjpeg-turbo-devel.x86_64 0:1.2.90-6.el7 libtiff-devel.x86_64 0:4.0.3-27.el7_3 libxml2-devel.x86_64 0:2.9.1-6.el7_2.3 libxslt-devel.x86_64 0:1.1.28-5.el7 ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 openjpeg-devel.x86_64 0:1.5.1-18.el7 openldap-devel.x86_64 0:2.4.44-21.el7_6 openssl-devel.x86_64 1:1.0.2k-16.el7_6.1 readline-devel.x86_64 0:6.2-10.el7 sqlite-devel.x86_64 0:3.7.17-8.el7 tk-devel.x86_64 1:8.5.13-6.el7 xorg-x11-fonts-Type1.noarch 0:7.5-9.el7 zlib.i686 0:1.2.7-18.el7 zlib-devel.x86_64 0:1.2.7-18.el7 Dépendance(s) installée(s) : ... cpp.x86_64 0:4.8.5-36.el7_6.2 cyrus-sasl.x86_64 0:2.1.26-23.el7 ... ttmkfdir.x86_64 0:3.0.9-42.el7 xorg-x11-proto-devel.noarch 0:2018.4-1.el7 xz-devel.x86_64 0:5.2.2-1.el7 Terminé ! [root@tchana ~]#
Logiciels du référentiel EPEL
On s'assure que le référentiel EPEL est connu de yum
.
[root@tchana ~]# yum repolist | grep epel * epel: mirror.layeronline.com epel/x86_64 Extra Packages for Enterprise Linux 7 - x8 13 168+22 [root@tchana ~]#
cabextract
L'utilitaire cabextract
est un logiciel pour l'extraction des fichiers CAB de Microsoft (.cab) ou tout fichier binaire qui incorpore un fichier CAB (fréquemment trouvé dans les fichiers .exe).
[root@tchana ~]# yum install -y --enablerepo=epel cabextract ... Résumé de la transaction ============================================================================================ Installation 1 Paquet (+1 Paquet en dépendance) Taille totale des téléchargements : 107 k Taille d'installation : 225 k ... Installé: cabextract.x86_64 0:1.5-1.el7 Dépendance(s) installée(s) : libmspack.x86_64 0:0.5-0.6.alpha.el7 Terminé ! [root@tchana ~]#
La dépendance qui a été installée,
libmspack.x86_64 0:0.5-0.6.alpha.el7
contient les polices de base de Microsoft afin qu'elles soient disponibles lorsque vous générez des rapports dans Flectra.
npm
Référence: https://fr.wikipedia.org/wiki/Npm.
L'utilitaire npm
est le gestionnaire officiel des paquets de Node.js. Depuis la version 0.6.3 de Node.js, npm
fait partie de l'environnement et est donc automatiquement installé par défaut. L'utilitaire npm
fonctionne avec un terminal et gère les dépendances pour une application. Il permet également d'installer des applications Node.js disponibles dans le dépôt npm.
Node.js-v10.15.3
On crée un répertoire de travail.
[root@tchana ~]# mkdir /temp [root@tchana ~]#
On s'y rend.
[root@tchana ~]# cd /temp/ [root@tchana temp]#
On télécharge la version Node.js-v10.15.3.
[root@tchana temp]# wget https://nodejs.org/download/release/v10.15.3/node-v10.15.3-linux-x64.tar.gz --2019-05-17 07:52:58-- https://nodejs.org/download/release/v10.15.3/node-v10.15.3-linux-x64.tar.gz Résolution de nodejs.org (nodejs.org)... 104.20.22.46, 104.20.23.46, 2606:4700:10::6814:162e, ... Connexion vers nodejs.org (nodejs.org)|104.20.22.46|:443...connecté. requête HTTP transmise, en attente de la réponse...200 OK Longueur: 18638507 (18M) [application/gzip] Sauvegarde en : «node-v10.15.3-linux-x64.tar.gz» 100%[==================================================>] 18 638 507 1,79MB/s ds 9,9s 2019-05-17 07:53:08 (1,79 MB/s) - «node-v10.15.3-linux-x64.tar.gz» sauvegardé [18638507/18638507] [root@tchana temp]#
On extraie vers le répertoire /usr
.
[root@tchana temp]# tar -C /usr --strip-components 1 -xzf node-v10.15.3-linux-x64.tar.gz [root@tchana temp]#
On vérifie la présence de npm
.
[root@tchana temp]# which npm /usr/bin/npm [root@tchana temp]#
On vérifie la version.
[root@tchana temp]# npm --version 6.4.1 [root@tchana temp]#
less et less-plugin-clean-css
less
Référence: https://fr.wikipedia.org/wiki/Less_(langage).
L'utilitaire less
est un langage dynamique de génération de CSS conçu par Alexis Sellier. Initialement inspiré par Sass, il l'influence à son tour avec l'apparition de la syntaxe SCSS par laquelle Sass reprend des éléments de la syntaxe CSS classique. Le principe de Less est en effet de ne pas rompre avec la syntaxe CSS: tout code CSS est aussi du code Less valide et sémantiquement équivalent. Less y ajoute notamment les mécanismes suivants: variables, imbrication, mixins, opérateurs et fonctions.
less-plugin-clean-css
Référence: https://github.com/less/less-plugin-clean-css.
Ce greffon compresse la sortie css
de less
en utilisant clean-css
.
Pour éviter les erreurs de certificats SSL et de téléchargement.
[root@tchana temp]# npm config set strict-ssl false [root@tchana temp]#
On installe ces logiciels.
[root@tchana temp]# npm install -g less less-plugin-clean-css /usr/bin/lessc -> /usr/lib/node_modules/less/bin/lessc + less-plugin-clean-css@1.5.1 + less@3.9.0 added 66 packages from 128 contributors in 4.337s [root@tchana temp]#
On vérifie la présence de less
.
[root@tchana temp]# which less /usr/bin/less [root@tchana temp]#
On vérifie sa version.
[root@tchana temp]# less --version less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less [root@tchana temp]#
On vérifie la présence de lessc
.
[root@tchana temp]# which lessc /usr/bin/lessc [root@tchana temp]#
On vérifie sa version.
[root@tchana temp]# lessc --version lessc 3.9.0 (Less Compiler) [JavaScript] [root@tchana temp]#
wkhtmltox
Les wkhtmltox
disponibles à partir de CentOS ou du référentiel EPEL sont d'une version inférieure à celle requise par Flectra. De plus, ces versions ne convertissent pas les en-têtes et les pieds de page. Il est fortement recommandé d'obtenir la dernière version stable directement de la source.
Dépendances pour wkhtmltopdf
Référence: https://wkhtmltopdf.org/.
wkhtmltopdf
et wkhtmltoimage
sont des outils LIBRE (LGPLv3) de ligne de commande pour convertir du code HTML en PDF ou en divers autres formats d'image en utilisant le moteur de rendu Qt WebKit. Ces outils fonctionnent entièrement “sans tête” (headless) et ne nécessitent aucun service d'écran ou d'affichage.
On installe les dépendances.
[root@tchana temp]# yum install -y fontconfig libpng libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi ... Résumé de la transaction ============================================================================================ Installation 1 Paquet Taille totale des téléchargements : 2.8 M Taille d'installation : 2.9 M ... Installé : xorg-x11-fonts-75dpi.noarch 0:7.5-9.el7 Terminé ! [root@tchana temp]#
wkhtmltox
Si ce n'est déjà fait, on se rend dans le répertoire de travail.
[root@tchana ~]# cd /temp [root@tchana temp]#
On nettoie le répertoire /temp
.
[root@tchana temp]# rm -rf * [root@tchana temp]#
À l'aide d'un navigateur Internet, on se rend à l'Url:
https://github.com/wkhtmltopdf/wkhtmltopdf/releases/.
On claque sur le fichier: wkhtmltox-0.12.5-1.centos7.x86_64.rpm.
→ Copier l'adresse du lien.
Le lien copié est: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
À la ligne de commande, on entre rpm -Uvh
suivi d'un espace, puis on colle le lien copié ci-dessus afin d'installer le fichier .rpm
.
[root@tchana temp]# rpm -Uvh https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm Récupération de https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm Préparation... ################################# [100%] Mise à jour / installation... 1:wkhtmltox-1:0.12.5-1.centos7 ################################# [100%] [root@tchana temp]#
On vérifie l'installation des fichiers.
[root@tchana temp]# ls -als /usr/local/bin/wkhtmlto* 36936 -rwxr-xr-x 1 root root 37818944 11 juin 2018 /usr/local/bin/wkhtmltoimage 37016 -rwxr-xr-x 1 root root 37900864 11 juin 2018 /usr/local/bin/wkhtmltopdf [root@tchana temp]#
On supprime tout dans le répertoire /temp
.
[root@tchana temp]# rm -rf /temp/* [root@tchana temp]#
On retourne dans le répertoire personnel de root.
[root@tchana temp]# cd [root@tchana ~]#
On vérifie.
[root@tchana ~]# pwd /root [root@tchana ~]#
pychart
PyChart est une bibliothèque Python pour la création de PDF, PNG ou graphiques SVG en PostScript encapsulé de haute qualité. Il prend actuellement en charge les traçage linéaires et les graphiques circulaires et par barres. Parce qu'il est basé sur Python, vous pouvez utiliser le pouvoir de scriptage de Python.
[root@tchana ~]# yum install -y pychart ... Résumé de la transaction ============================================================================================ Installation 1 Paquet Taille totale des téléchargements : 190 k Taille d'installation : 749 k ... Installé : pychart.noarch 0:1.39-17.el7 Terminé ! [root@tchana ~]#
Vérifications finales
NPM
[root@tchana ~]# which npm /usr/local/bin/npm [root@tchana ~]#
[root@tchana ~]# npm --version 6.4.1 [root@tchana ~]#
LESS
[root@tchana ~]# which less /usr/bin/less [root@tchana ~]#
[root@tchana ~]# less --version less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less [root@tchana ~]#
LESSC
[root@tchana ~]# which lessc /usr/bin/lessc [root@tchana ~]#
[root@tchana ~]# lessc --version lessc 3.9.0 (Less Compiler) [JavaScript] [root@tchana ~]#
Instantané VirtualBox
À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
Tous les prérequis pour Flectra sont remplis, on est prêt pour l'installation.
Flectra - Installation
Pare-feu
On ouvre le port 7073 du pare-feu pour le réseau vert seulement.
[root@tchana ~]# config set fw_flectra service status enabled TCPPort 7073 access green [root@tchana ~]#
Pour ouvrir le port 7073 pour les réseaux vert et rouge.
[root@tchana ~]# config set fw_flectra service status enabled TCPPort 7073 access green,red [root@tchana ~]#
On signale le changement.
[root@tchana ~]# signal-event firewall-adjust [root@tchana ~]#
On vérifie.
[root@tchana ~]# cat /etc/shorewall/rules | grep 7073 ACCEPT loc $FW tcp 7073 [root@tchana ~]#
[root@tchana ~]# cat /etc/shorewall/rules | grep 7073 ACCEPT loc $FW tcp 7073 ACCEPT net $FW tcp 7073 [root@tchana ~]#
On affiche la configuration du port ouvert pour Flectra.
[root@tchana ~]# config show fw_flectra fw_flectra=service TCPPort=7073 access=green status=enabled [root@tchana ~]#
[root@tchana ~]# config show fw_flectra fw_flectra=service TCPPort=7073 access=green,red status=enabled [root@tchana ~]#
git clone Flectra
On se substitue à l'utilisateur flectra.
Remarquez le changement de l'invite.
[root@tchana ~]# su - flectra [flectra@tchana ~]$
On vérifie quel utilisateur nous sommes.
[flectra@tchana ~]$ whoami flectra [flectra@tchana ~]$
On vérifie le chemin du répertoire courant.
[flectra@tchana ~]$ pwd /opt/flectra [flectra@tchana ~]$
On se rend à l'URL https://github.com/flectra-hq/flectra.
Clone or download → on clique l'icône Copier dans le presse-papier.
Le lien copié est: https://github.com/flectra-hq/flectra.git.
On emploie l'utilitaire git
pour télécharger la branche Master de Flectra.
On entre git clone
suivi d'un [Espace] et on colle le lien copié ci-haut avec un clic, suivi d'un [Espace], puis –depth=1
.
[flectra@tchana ~]$ git clone https://github.com/flectra-hq/flectra.git --depth=1 Cloning into 'flectra'... remote: Enumerating objects: 25765, done. remote: Counting objects: 100% (25765/25765), done. remote: Compressing objects: 100% (18241/18241), done. remote: Total 25765 (delta 8233), reused 19250 (delta 6685), pack-reused 0 Receiving objects: 100% (25765/25765), 137.41 MiB | 1.80 MiB/s, done. Resolving deltas: 100% (8233/8233), done. Checking out files: 100% (23269/23269), done. [flectra@tchana ~]$
On vérifie.
[flectra@tchana ~]$ ls -als total 20 0 drwx------ 6 flectra flectra 138 19 sept. 19:07 . 0 drwxr-xr-x. 7 root root 73 18 sept. 23:14 .. 4 -rw------- 1 flectra flectra 771 19 sept. 18:36 .bash_history 4 -rw-r--r-- 1 flectra flectra 18 30 oct. 2018 .bash_logout 4 -rw-r--r-- 1 flectra flectra 193 30 oct. 2018 .bash_profile 4 -rw-r--r-- 1 flectra flectra 231 30 oct. 2018 .bashrc 0 drwx------ 3 flectra flectra 17 19 sept. 00:51 .cache 4 drwxrwxr-x 9 flectra flectra 4096 19 sept. 19:05 flectra 0 drwx------ 3 flectra flectra 19 19 sept. 01:20 .local 0 drwxrw---- 3 flectra flectra 19 19 sept. 19:03 .pki [flectra@tchana ~]$
[flectra@tchana ~]$ ls -als flectra/ total 180 4 drwxrwxr-x 9 flectra flectra 4096 19 sept. 19:05 . 0 drwx------ 6 flectra flectra 138 19 sept. 19:07 .. 16 drwxrwxr-x 306 flectra flectra 12288 19 sept. 19:05 addons 8 -rw-rw-r-- 1 flectra flectra 5331 19 sept. 19:04 CHANGELOG.md 4 -rw-rw-r-- 1 flectra flectra 3218 19 sept. 19:04 CODE_OF_CONDUCT.md 4 -rw-rw-r-- 1 flectra flectra 432 19 sept. 19:04 CONTRIBUTING.md 4 -rw-rw-r-- 1 flectra flectra 433 19 sept. 19:04 COPYRIGHT 0 drwxrwxr-x 3 flectra flectra 238 19 sept. 19:05 debian 0 drwxrwxr-x 10 flectra flectra 321 19 sept. 19:05 doc 0 drwxrwxr-x 10 flectra flectra 323 19 sept. 19:05 flectra 4 -rwxrwxr-x 1 flectra flectra 186 19 sept. 19:05 flectra-bin 0 drwxrwxr-x 8 flectra flectra 178 19 sept. 19:05 .git 4 -rw-rw-r-- 1 flectra flectra 588 19 sept. 19:04 .gitignore 0 drwxrwxr-x 3 flectra flectra 29 19 sept. 19:04 .gitlab 4 -rw-rw-r-- 1 flectra flectra 1728 19 sept. 19:04 .gitlab-ci.yml 44 -rw-rw-r-- 1 flectra flectra 43529 19 sept. 19:04 LICENSE 56 -rw-rw-r-- 1 flectra flectra 56570 19 sept. 19:04 .mailmap 4 -rw-rw-r-- 1 flectra flectra 408 19 sept. 19:04 Makefile 4 -rw-rw-r-- 1 flectra flectra 1402 19 sept. 19:04 MANIFEST.in 4 -rw-rw-r-- 1 flectra flectra 1090 19 sept. 19:04 README.md 4 -rw-rw-r-- 1 flectra flectra 1179 19 sept. 19:05 requirements.txt 0 drwxrwxr-x 4 flectra flectra 166 19 sept. 19:05 setup 4 -rw-rw-r-- 1 flectra flectra 878 19 sept. 19:05 setup.cfg 8 -rw-rw-r-- 1 flectra flectra 5665 19 sept. 19:05 setup.py [flectra@tchana ~]$
Environnement virtuel pour l'utilisateur flectra
On active Python-36.
[flectra@tchana ~]$ scl enable rh-python36 bash [flectra@tchana ~]$
On crée un environnement virtuel pour l'utilisateur flectra (peut prendre quelques secondes).
[flectra@tchana ~]$ python3 -m venv flectra-venv [flectra@tchana ~]$
On vérifie.
[flectra@tchana ~]$ ls -als total 20 0 drwx------ 7 flectra flectra 158 19 sept. 19:11 . 0 drwxr-xr-x. 7 root root 73 18 sept. 23:14 .. 4 -rw------- 1 flectra flectra 771 19 sept. 18:36 .bash_history 4 -rw-r--r-- 1 flectra flectra 18 30 oct. 2018 .bash_logout 4 -rw-r--r-- 1 flectra flectra 193 30 oct. 2018 .bash_profile 4 -rw-r--r-- 1 flectra flectra 231 30 oct. 2018 .bashrc 0 drwx------ 3 flectra flectra 17 19 sept. 00:51 .cache 4 drwxrwxr-x 9 flectra flectra 4096 19 sept. 19:05 flectra 0 drwxrwxr-x 5 flectra flectra 74 19 sept. 19:11 flectra-venv 0 drwx------ 3 flectra flectra 19 19 sept. 01:20 .local 0 drwxrw---- 3 flectra flectra 19 19 sept. 19:03 .pki [flectra@tchana ~]$
On active l'environnement virtuel.
[flectra@tchana ~]$ source flectra-venv/bin/activate (flectra-venv) [flectra@tchana ~]$
requirements.txt
C'est ici que gcc
est utilisé pour la compilation des exigences de Flectra.
(flectra-venv) [flectra@tchana ~]$ ls -als /opt/flectra/flectra/requirements.txt 4 -rw-rw-r-- 1 flectra flectra 1179 19 sept. 19:05 /opt/flectra/flectra/requirements.txt (flectra-venv) [flectra@tchana ~]$
On installe toutes les exigences contenues dans le fichier requirements.txt
. (Peu prendre un certain temps, surtout pour lxml.)
(flectra-venv) [flectra@tchana ~]$ pip3 install -r /opt/flectra/flectra/requirements.txt ... Ignoring pypiwin32: markers 'sys_platform == "win32"' don't match your environment Collecting Babel==2.3.4 (from -r /opt/flectra/flectra/requirements.txt (line 1)) Using cached https://files.pythonhosted.org/packages/b4/ec/acd307eac2e23f9cab1c8bdbe29b3b1d43215e31c32f8aa91b3a97925b5b/Babel-2.3.4-py2.py3-none-any.whl ... Running setup.py install for lxml ... \ ... Running setup.py install for pycrypto ... done Successfully installed Babel-2.3.4 Jinja2-2.10.1 Mako-1.0.4 MarkupSafe-0.23 Pillow-4.0.0 PyPDF2-1.26.0 PyYAML-3.12 Werkzeug-0.11.15 XlsxWriter-0.9.3 argparse-1.4.0 beautifulsoup4-4.8.0 certifi-2019.9.11 chardet-3.0.4 decorator-4.0.10 docutils-0.12 ebaysdk-2.1.5 feedparser-5.2.1 gevent-1.1.2 greenlet-0.4.10 html2text-2016.9.19 idna-2.7 linecache2-1.0.0 lxml-3.7.1 mock-2.0.0 num2words-0.5.6 numpy-1.14.3 oauthlib-2.0.7 ofxparse-0.16 olefile-0.46 passlib-1.6.5 pbr-5.4.3 phonenumbers-8.8.9 psutil-4.3.1 psycopg2-2.7.3.1 pycrypto-2.6.1 pydot-1.2.3 pyldap-2.4.28 pyparsing-2.1.10 pyserial-3.1.1 python-dateutil-2.5.3 python-stdnum-1.11 pytz-2016.7 pyusb-1.0.0 qrcode-5.3 reportlab-3.3.0 requests-2.20.0 six-1.12.0 soupsieve-1.9.3 suds-jurko-0.6 traceback2-1.4.0 unittest2-1.1.0 urllib3-1.24.3 vatnumber-1.2 vobject-0.9.3 xlrd-1.0.0 xlwt-1.3.0 You are using pip version 9.0.1, however version 19.2.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command. (flectra-venv) [flectra@tchana ~]$
On peut ignorer la suggestion pour la mise à jour de
pip
.
On désactive l'environnement virtuel et on le quitte.
(flectra-venv) [flectra@tchana ~]$ deactivate && exit exit [flectra@tchana ~]$
On quitte la substitution d'utilisateur.
[flectra@tchana ~]$ exit déconnexion [root@tchana ~]#
On vérifie qui nous sommes.
[root@tchana ~]# whoami root [root@tchana ~]#
Journal
Création du répertoire
Prendre tout le contenu de l'encadré pour la commande.
DIR="/var/log/flectra" for NAME in $DIR do if [ ! -d $NAME ]; then mkdir $NAME chown flectra.flectra $NAME chmod 700 $NAME fi done
On vérifie la création du répertoire.
[root@tchana ~]# ls -alsd /var/log/flectra 0 drwx------ 2 flectra flectra 32 19 sept. 01:20 /var/log/flectra [root@tchana ~]#
logrotation
Nous autorisons la rotation du journal flectra-server de telle sorte qu'il sera géré de la même manière que ceux de toutes les autres applications.
Prendre tout le contenu de l'encadré pour la commande.
cat > /etc/logrotate.d/flectra-server << EOF /var/log/flectra/flectra-server.log { # Fichier de logrotate pour /var/log/flectra/flectra-server.log # Michel-André 2018-06-1_22h00 Modification: 2019-09-19 pour NethServer # Pour plus de détails, voir: man logrotate # Rotation quotidienne daily # Si le fichier n'existe pas, c'est correct, pas de problème missingok # Grandeur maximale de 100k maxsize 100000 # Ne conserver que 5 fichiers de log rotate 5 # Ne pas faire de rotation si le fichier est vide. notifempty # Immédiatement après la permutation, un journal est créé. Chacun des attributs du journal # peut être omis, auquel cas ces attributs omis pour le nouveau journal prendront les même # valeurs que pour le journal original. # create droits propriétaire groupe create 0640 flectra flectra } EOF
On vérifie la création du fichier.
[root@tchana ~]# ls -ls /etc/logrotate.d/flectra-server 4 -rw-r--r-- 1 root root 794 19 sept. 19:33 /etc/logrotate.d/flectra-server [root@tchana ~]#
On vérifie le début du contenu.
[root@tchana ~]# head /etc/logrotate.d/flectra-server /var/log/flectra/flectra-server.log { # Fichier de logrotate pour /var/log/flectra/flectra-server.log # Michel-André 2018-06-1_22h00 Modification: 2019-09-19 pour NethServer # Pour plus de détails, voir: man logrotate # Rotation quotidienne daily # Si le fichier n'existe pas, c'est correct, pas de problème missingok [root@tchana ~]#
Il n'y a pas de ligne vide avant /var/log/flectra/flectra-server.log {. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
Sauvegarde
On vérifie si le nom du fichier /etc/logrotate.d/flectra-server
est déjà inséré dans le fichier d'inclusion de la sauvegarde des données: /etc/backup-data.d/custom.include
, sinon on l'insère.
Prendre tout le contenu de l'encadré pour la commande.
NouvelleInclusion="/etc/logrotate.d/flectra-server" if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n" else # L'entrée n'a pas été trouvée dans custom.include echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n" fi
On vérifie.
[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/logrotate.d/flectra-server /etc/logrotate.d/flectra-server [root@tchana ~]#
Ci-dessus, il n'y a pas de ligne vide avant /etc/logrotate.d/flectra-server. Nous en avons insérée une afin de faciliter la copie de la commande.
Fichier de configuration: /etc/flectra-server.conf
Pour débuter, nous activons log_handler = :DEBUG
pour voir tous les messages de Flectra dans le fichier journal. Lorsque tout fonctionnera correctement, on remettra la valeur par défaut.
Prendre tout le contenu de l'encadré pour la commande.
cat > /etc/flectra-server.conf <<'EOT' [options] ; Ceci est le mot de passe qui autorise les oprérations sur la base de données: admin_passwd = fghtbgh ; OPTIONS DE LA BASE DE DONNÉES db_host = localhost db_port = 5432 db_name = Flectra db_user = flectra db_password = fghtbgh ; PARAMÈTRES DIVERS addons_path = /opt/flectra/flectra/addons load = web timezone = America/Montreal without-demo=all no-xmlrpc = True no-xmlrpcs = True no-netrpc = True ; PARAMÈTRES DES JOURNAUX logfile = /var/log/flectra/flectra-server.log ; MAR - Ceci est le défault ;log_handler = werkzeug:WARNING ; MAR - Pour voir tous les messageS de Flectra, on active à :DEBUG log_handler = :DEBUG ;log_level = warn no-logrotate = True EOT
On vérifie.
[root@tchana ~]# cat /etc/flectra-server.conf [options] ; Ceci est le mot de passe qui autorise les oprérations sur la base de données: admin_passwd = fghtbgh ; OPTIONS DE LA BASE DE DONNÉES db_host = localhost db_port = 5432 db_name = Flectra db_user = flectra db_password = fghtbgh ; PARAMÈTRES DIVERS addons_path = /opt/flectra/flectra/addons load = web timezone = America/Montreal without-demo=all no-xmlrpc = True no-xmlrpcs = True no-netrpc = True ; PARAMÈTRES DES JOURNAUX logfile = /var/log/flectra/flectra-server.log ; MAR - Ceci est le défault ;log_handler = werkzeug:WARNING ; MAR - Pour voir tous les messageS de Flectra, on active à :DEBUG log_handler = :DEBUG ;log_level = warn no-logrotate = True [root@tchana ~]#
Il n'y a pas de ligne vide avant [options]. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
Faille de sécurité, car ce fichier contient le mot de passe de la BD et il est lisible par “other” c.-à-d. tout le monde.
On vérifie les droits du fichier.
[root@tchana ~]# ls -als /etc/flectra-server.conf 4 -rw-r--r-- 1 root root 673 19 sept. 19:54 /etc/flectra-server.conf [root@tchana ~]#
On rend le script exécutable par le propriétaire/groupe et on enlève tous les droits à “other”.
[root@dorgee ~]# chmod 550 /etc/flectra-server.conf [root@dorgee ~]#
On change le propriétaire et le groupe pour flectra:flectra
.
[root@dorgee ~]# chown flectra:flectra /etc/flectra-server.conf [root@dorgee ~]#
On vérifie.
[root@dorgee ~]# ls -ls /etc/flectra-server.conf 4 -r-xr-x--- 1 flectra flectra 673 19 sept. 19:54 /etc/flectra-server.conf [root@dorgee ~]#
Départ/Arrêt automatique
On veut que Flectra se lance automatiquement à tous les amorçages du Serveur NethServer. Pour ce faire, on crée le fichier /etc/systemd/system/flectra.service
.
Fichier /etc/systemd/system/flectra.service
Prendre tout le contenu de l'encadré pour la commande.
cat > /etc/systemd/system/flectra.service <<'EOT' [Unit] Description=Flectra Requires=postgresql-11.service After=network.target postgresql-11.service [Service] Type=simple SyslogIdentifier=flectra PermissionsStartOnly=true User=flectra Group=flectra ExecStart=/usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin -c /etc/flectra-server.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target EOT
On vérifie la création du fichier.
[root@tchana ~]# ls -als /etc/systemd/system/flectra.service 4 -rw-r--r-- 1 root root 416 19 sept. 20:10 /etc/systemd/system/flectra.service [root@tchana ~]#
On vérifie son contenu.
[root@tchana ~]# cat /etc/systemd/system/flectra.service [Unit] Description=Flectra Requires=postgresql-11.service After=network.target postgresql-11.service [Service] Type=simple SyslogIdentifier=flectra PermissionsStartOnly=true User=flectra Group=flectra ExecStart=/usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin -c /etc/flectra-server.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target [root@tchana ~]#
Premier démarrage de Flectra
On recharge la configuration du gestionnaire systemd
en lançant la commande systemctl
3) avec le paramètre daemon-reload
4).
[root@tchana ~]# systemctl daemon-reload [root@tchana ~]#
La première fois qu'on lance Flectra, on utilise les paramètre enable5) et –now6).
[root@tchana ~]# systemctl enable flectra --now Created symlink from /etc/systemd/system/multi-user.target.wants/flectra.service to /etc/systemd/system/flectra.service. [root@tchana ~]#
Vérification
Peut prendre quelques secondes avant que Flectra soit complètement démarré.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: active (running) since jeu. 2019-09-19 20:17:22 EDT; 8s ago Main PID: 4010 (scl) CGroup: /system.slice/flectra.service ├─4010 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python... ├─4025 /bin/bash /var/tmp/scl9gP0CO └─4038 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ... sept. 19 20:17:22 tchana.micronator-dev.org systemd[1]: Started Flectra. [root@tchana ~]#
Finalisation de l'installation
Accès à Flectra
- 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
.
[root@tchana ~]# cat /etc/flectra-server.conf | grep log_handler log_handler = werkzeug:WARNING ;log_handler = :DEBUG [root@tchana ~]#
Nous avons changé un paramètre important, on redémarre le service Flectra afin qu'il recharge son fichier de configuration.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
Rotation du journal Flectra
Le journal de Flectra est très volumineux, car il contient toutes les entrées de débogage.
[flectra@tchana ~]$ ls -als /var/log/flectra/flectra-server.log 24924 -rw-r--r-- 1 flectra flectra 25520972 19 sept. 21:12 /var/log/flectra/flectra-server.log [flectra@tchana ~]$
On force la rotation de ce journal.
[flectra@tchana ~]$ logrotate -vf /etc/logrotate.d/flectra-server reading config file /etc/logrotate.d/flectra-server Allocating hash table for state file, size 15360 B Handling 1 logs rotating pattern: /var/log/flectra/flectra-server.log forced from command line (5 rotations) empty log files are not rotated, log files >= 100000 are rotated earlier, old logs are removed considering log /var/log/flectra/flectra-server.log log needs rotating rotating log /var/log/flectra/flectra-server.log, log->rotateCount is 5 dateext suffix '-20190919' glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' renaming /var/log/flectra/flectra-server.log.5 to /var/log/flectra/flectra-server.log.6 (rotatecount 5, logstart 1, i 5), old log /var/log/flectra/flectra-server.log.5 does not exist renaming /var/log/flectra/flectra-server.log.4 to /var/log/flectra/flectra-server.log.5 (rotatecount 5, logstart 1, i 4), old log /var/log/flectra/flectra-server.log.4 does not exist renaming /var/log/flectra/flectra-server.log.3 to /var/log/flectra/flectra-server.log.4 (rotatecount 5, logstart 1, i 3), old log /var/log/flectra/flectra-server.log.3 does not exist renaming /var/log/flectra/flectra-server.log.2 to /var/log/flectra/flectra-server.log.3 (rotatecount 5, logstart 1, i 2), old log /var/log/flectra/flectra-server.log.2 does not exist renaming /var/log/flectra/flectra-server.log.1 to /var/log/flectra/flectra-server.log.2 (rotatecount 5, logstart 1, i 1), old log /var/log/flectra/flectra-server.log.1 does not exist renaming /var/log/flectra/flectra-server.log.0 to /var/log/flectra/flectra-server.log.1 (rotatecount 5, logstart 1, i 0), old log /var/log/flectra/flectra-server.log.0 does not exist log /var/log/flectra/flectra-server.log.6 doesn't exist -- won't try to dispose of it renaming /var/log/flectra/flectra-server.log to /var/log/flectra/flectra-server.log.1 creating new /var/log/flectra/flectra-server.log mode = 0640 uid = 983 gid = 979 [flectra@tchana ~]$
On vérifie.
[root@tchana ~]# ls -als /var/log/flectra/ total 24928 0 drwx------ 2 flectra flectra 60 19 sept. 21:12 . 4 drwxr-xr-x. 22 root root 4096 19 sept. 20:16 .. 0 -rw-r----- 1 flectra flectra 0 19 sept. 21:12 flectra-server.log 24924 -rw-r--r-- 1 flectra flectra 25520972 19 sept. 21:12 flectra-server.log.1 [root@tchana ~]#
Désinstallation des compilateurs gcc et cpp
Le compilateur
gcc
installé sur un serveur est un risque majeur de sécurité, car un pirate pourrait s'en servir pour compiler un logiciel malveillant.
Il faut désinstaller
gcc
, et plus tard, si nous en avions encore besoin, il suffirait de l'installer à nouveau.
Le paquet gcc
est toujours accompagné de son inséparable collègue cpp
.
Nous forçons la désinstallation de ces deux RPM.
[root@tchana ~]# rpm -e --nodeps gcc cpp [root@tchana ~]#
On vérifie cpp
.
[root@tchana ~]# rpm -qa | grep cpp [root@tchana ~]#
On vérifie gcc
.
[root@tchana ~]# rpm -qa | grep gcc libgcc-4.8.5-36.el7_6.2.x86_64 [root@tchana ~]#
Les compilateurs gcc
et cpp
ont été supprimés.
La librairie libgcc est utilisée par beaucoup de logiciels; il ne faut absolument pas la désinstaller, car un de ses utilisateurs le plus important est le programme de sauvegarde NethServer.
Instantané VirtualBox
À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
L'installation est réussie. Tout fonctionne correctement.
Flectra - Redirection sécurisée
Description
Un grand merci à Markus Neuberger, ambassadeur de NethServer.
Si nous n'avons aucun site Web et que nous spécifions seulement http://www.micronator-dev.org/ ou http://10.10.10.75 sans spécifier le port 7073, nous verrions s'afficher le contenu du site Web par défaut du Serveur NethServer.
Contenu du répertoire /var/www/html/
.
[root@tchana ~]# ls -als /var/www/html/ total 0 0 drwxr-xr-x. 3 root root 25 24 avril 09:46 . 0 drwxr-xr-x. 4 root root 33 24 avril 09:46 .. 0 drwxr-xr-x. 3 root root 28 4 janv. 09:16 .well-known [root@tchana ~]#
Serveur branché directement à l'Internet
Voir la section Certificat Let's Encrypt du Cahier-05: VDSL, FQDN, Internet et NethServer du “Cours NethServer-101”.
Préparation pour la demande d'un certificat Let's Encrypt
Avant d'installer un certificat Let's Encrypt selon la section Certificat pour un domaine LOCAL du Cahier-04: NethServer LOCAL & Certificat Let's Encrypt du “Cours NethServer-101”, il faut ajouter les CNAME flectra, www.flectra, et mail.flectra chez https://www.cloudflare.com/.
On vérifie le résultat.
On se déconnecte de Cloudflare.com.
Création d'entrées DNS pour Flectra
Configuration → DNS → onglet Hôtes → CRÉER NOUVEAU.
Demande d'un certificat de test
On force (–force) la demande d'un certificat de TEST (–test) pour notre domaine micronator-dev.org et six de ses CNAME.
Le certificat sera “émis pour” le premier domaine de la liste, c.-à-d. micronator-dev.org (voir plus loin, Émis pour.)
[root@tchana ~]# /root/.acme.sh/acme.sh \ --issue \ --dns dns_cf \ -d micronator-dev.org \ -d www.micronator-dev.org \ -d mail.micronator-dev.org \ -d wpad.micronator-dev.org \ -d flectra.micronator-dev.org \ -d www.flectra.micronator-dev.org \ -d mail.flectra.micronator-dev.org \ --cert-file /etc/pki/tls/certs/cert.pem \ --ca-file /etc/pki/tls/certs/chain.pem \ --key-file /etc/pki/tls/private/privkey.pem \ --reloadcmd "/sbin/e-smith/signal-event certificate-update" \ --force \ --test ... [jeu. sept. 19 21:50:25 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem [jeu. sept. 19 21:50:25 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem [jeu. sept. 19 21:50:25 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update [jeu. sept. 19 21:50:28 EDT 2019] Reload success [root@tchana ~]#
La demande d'un certificat de test est réussie.
Demande d'un certificat officiel
On force le renouvellement pour l'obtention d'un certificat officiel.
[root@tchana ~]# /root/.acme.sh/acme.sh \ --issue \ --dns dns_cf \ -d micronator-dev.org \ -d www.micronator-dev.org \ -d mail.micronator-dev.org \ -d wpad.micronator-dev.org \ -d flectra.micronator-dev.org \ -d www.flectra.micronator-dev.org \ -d mail.flectra.micronator-dev.org \ --cert-file /etc/pki/tls/certs/cert.pem \ --ca-file /etc/pki/tls/certs/chain.pem \ --key-file /etc/pki/tls/private/privkey.pem \ --reloadcmd "/sbin/e-smith/signal-event certificate-update" \ --force ... [jeu. sept. 19 22:00:57 EDT 2019] Installing cert to:/etc/pki/tls/certs/cert.pem [jeu. sept. 19 22:00:57 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem [jeu. sept. 19 22:00:57 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem [jeu. sept. 19 22:00:57 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update [jeu. sept. 19 22:01:00 EDT 2019] Reload success [root@tchana ~]#
La demande d'un certificat officiel a été couronné de succès.
Vérification du certificat Let's Encrypt à l'aide de Firefox en se rendant à https://www.micronator-dev.org.
- Onglet Général.
- Émis pour → micronator-dev.org (le premier domaine 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.
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.
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.
Pour accéder à Webmail de ce domaine,
Instantané VirtualBox
À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
Flectra - Post-scriptum
Vérification du démarrages des services
PostgreSQL
On vérifie son statut.
[root@tchana ~]# systemctl status postgresql-11 ● postgresql-11.service - PostgreSQL 11 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled) Active: active (running) since jeu. 2019-09-19 21:54:51 EDT; 46min ago Docs: https://www.postgresql.org/docs/11/static/ Main PID: 3416 (postmaster) CGroup: /system.slice/postgresql-11.service ├─ 3416 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/ ├─ 3909 postgres: logger ├─ 3992 postgres: checkpointer ├─ 3993 postgres: background writer ├─ 3994 postgres: walwriter ├─ 3995 postgres: autovacuum launcher ├─ 3996 postgres: stats collector ├─ 3997 postgres: logical replication launcher ├─10788 postgres: flectra Flectra160 127.0.0.1(37594) idle ├─10790 postgres: flectra Flectra160 127.0.0.1(37596) idle ├─10800 postgres: flectra Flectra160 127.0.0.1(37600) idle └─10801 postgres: flectra Flectra160 127.0.0.1(37602) idle sept. 19 21:54:37 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database .... sept. 19 21:54:46 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:46.147 EDT…32 sept. 19 21:54:46 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:46.466 EDT… » sept. 19 21:54:47 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:47.291 EDT… » sept. 19 21:54:48 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:48.726 EDT…es sept. 19 21:54:48 tchana.micronator-dev.org postmaster[3416]: 2019-09-19 21:54:48.726 EDT…». sept. 19 21:54:51 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database s.... Hint: Some lines were ellipsized, use -l to show in full. [root@tchana ~]#
Flectra
On vérifie son statut.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: active (running) since jeu. 2019-09-19 21:54:51 EDT; 47min ago Main PID: 4014 (scl) CGroup: /system.slice/flectra.service ├─4014 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python... ├─4026 /bin/bash /var/tmp/sclp9x8ET └─4051 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ... sept. 19 21:54:51 tchana.micronator-dev.org systemd[1]: Started Flectra. [root@tchana ~]#
Administration de Flectra
Pour administrer Flectra, il suffit de se connecter avec le justificatif choisi lors de la Finalisation de l'installation .
● On se rend à: https://www.flectra.micronator-dev.org.
● On peut aussi utiliser http://www.flectra.micronator-dev.org qui sera transformé en https…
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.
[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available" [root@tchana ~]#
S'il y avait un module manquant, il apparaîtrait ici.
Installation d'un module manquant
Exemple si le module phonenumbers manquerait.
On vérifie le journal.
[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available" 2019-05-29 17:04:13,742 4077 INFO Flectra flectra.addons.sms.wizard.send_sms: The `phonenumbers` Python module is not available. Phone number validation will be skipped. Try `pip3 install phonenumbers` to install it. [root@tchana ~]#
On se substitue à l'utilisateur flectra.
[root@tchana ~]# su - flectra Dernière connexion : mercredi 22 mai 2019 à 00:12:34 EDT sur pts/1 [flectra@tchana ~]$
On active Python36.
[flectra@tchana ~]$ scl enable rh-python36 bash [flectra@tchana ~]$
On s'assure que nous sommes dans le répertoire personnel de l'utilisateur flectra.
[flectra@tchana ~]$ pwd /opt/flectra [flectra@tchana ~]$
On active l'environnement virtuel flectra-venv.
[flectra@tchana ~]$ source flectra-venv/bin/activate (flectra-venv) [flectra@tchana ~]$
On installe le module phonenumbers.
(flectra-venv) [flectra@tchana ~]$ pip3 install phonenumbers Collecting phonenumbers Downloading https://files.pythonhosted.org/packages/00/13/118a79e417f06a23473d28de65db95f3a14a4548cf39cdf407f8ffb335a1/phonenumbers-8.10.12-py2.py3-none-any.whl (2.6MB) 100% |████████████████████████████████| 2.6MB 359kB/s Installing collected packages: phonenumbers Successfully installed phonenumbers-8.10.12 You are using pip version 9.0.1, however version 19.1.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. (flectra-venv) [flectra@tchana ~]$
On désactive l'environnement virtuel et on quitte.
(flectra-venv) [flectra@tchana ~]$ deactivate && exit exit [flectra@tchana ~]$
On vérifie qui nous sommes.
[flectra@tchana ~]$ whoami flectra [flectra@tchana ~]$
On quitte la substitution d'utilisateur.
[flectra@tchana ~]$ exit déconnexion [root@tchana ~]#
On vérifie qui nous sommes.
[root@tchana ~]# whoami root [root@tchana ~]#
Le module manquant a été installé.
On redémarre Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
On vérifie le journal.
[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep "module is not available" 2019-05-29 17:04:13,742 4077 INFO Flectra flectra.addons.sms.wizard.send_sms: The `phonenumbers` Python module is not available. Phone number validation will be skipped. Try `pip3 install phonenumbers` to install it. [root@tchana ~]#
Il n'existe aucune nouvelle entrée indiquant un module manquant.
On vérifie pour des erreurs.
[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep -i error [root@tchana ~]#
On vérifie pour des avertissements.
[root@tchana ~]# cat /var/log/flectra/flectra-server.log | grep -i warning 2019-05-29 16:35:20,393 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login' 2019-05-29 16:35:36,662 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login' 2019-05-29 16:35:58,848 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login' 2019-05-29 16:36:10,038 4055 WARNING Flectra flectra.http: CSRF validation failed on path '/web/login' [root@tchana ~]#
On peut ignorer ces avertissements car il se produisent si vous laissez la page '/web/login' ouverte trop longtemps: le jeton a une durée de vie limitée. Par conséquent, si vous attendez trop longtemps, la connexion peut échouer. Si cela se produit, rafraîchir la page '/web/login'.
Changements de mots de passe
Utilisateur flectra de PostgreSQL
Vous pouvez trouver le mot de passe de l'utilisateur flectra de PostgreSQL (l'utilisateur qui gère votre base de données Flectra) dans le fichier de configuration /etc/flectra-server.conf
.
[root@tchana ~]# cat /etc/flectra-server.conf | grep db_password db_password = fghtbgh [root@tchana ~]#
Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe de l'utilisateur flectra de PostgreSQL:
- à 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.
[root@tchana ~]# passwd flectra Changement de mot de passe pour l'utilisateur flectra. Nouveau mot de passe : nouveau-mot-de-passe-pour-flectra MOT DE PASSE INCORRECT : Le mot de passe comporte moins de 8 caractères Retapez le nouveau mot de passe : nouveau-mot-de-passe-pour-flectra passwd : mise à jour réussie de tous les jetons d'authentification. [root@tchana ~]#
L'avertissement "MOT DE PASSE INCORRECT : Le mot de passe comporte moins de 8 caractères" est normal dans notre cas, car nous utilisons le mot de passe du fameux Général Toto qui n'a que 7 caractères.
Il ne faut pas prendre notre exemple pour un serveur en production, mais un mot de passe robuste.
Dans l'interface Web de NethServer, on n'exige que 7 caractères, mais le mot de passe doit contenir: au moins 1 chiffre, 1 caractère majuscule, 1 caractère minuscule, 1 caractère spécial, 5 caractères différents, ne pas être présent dans les dictionnaires de mots courants et être différent du nom d'utilisateur. De plus, il est impossible de répéter des motifs formés de 3 caractères ou plus (par exemple, le mot de passe As1.$AS1.$ n'est pas valide).
A la console de PostgreSQL
Il faut se substituer au super-utilisateur postgres, puis ce dernier change le mot de passe de l'utilisateur flectra de PostgreSQL.
À la console du serveur, on se substitue à l'utilisateur postgres.
[root@tchana ~]# su - postgres -bash-4.2$
On vérifie.
-bash-4.2$ whoami postgres -bash-4.2$
L'utilisateur postgres entre dans la console PostgreSQL.
-bash-4.2$ psql psql (11.3)) Saisissez « help » pour l'aide. postgres=#
On change le mot de passe de l'utilisateur flectra de PostgreSQL.
postgres=# ALTER ROLE flectra WITH PASSWORD 'nouveau-mot-de-passe'; ALTER ROLE postgres=#
On quitte la console PostgreSQL.
postgres=# \q -bash-4.2$
On retourne à l'utilisateur root.
-bash-4.2$ exit déconnexion [root@tchana ~]#
On vérifie.
[root@tchana ~]# whoami root [root@tchana ~]#
Dans le fichier /etc/flectra-server.conf
IMPORTANT. Le changement de mot de passe de l'utilisateur flectra dans PostgreSQL ne modifie pas celui dans le fichier
/etc/flectra-server.conf
. Il faut éditer ce fichier et changer le mot de passe sur la ligne: db_password = nouveau-mot-de-passe
.
On édite le fichier /etc/flectra-server.conf
et on change le mot de passe de l'utilisateur flectra de PostgreSQL.
On vérifie.
[root@tchana ~]# cat /etc/flectra-server.conf | grep db_password db_password = fghtbgh [root@tchana ~]#
Redémarrage de PostgreSQL
On redémarre le service PostgreSQL.
[root@tchana ~]# systemctl restart postgresql-11 [root@tchana ~]#
On vérifie.
[root@tchana ~]# systemctl status postgresql-11 ● postgresql-11.service - PostgreSQL 11 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled) Active: active (running) since ven. 2019-09-20 11:35:04 EDT; 26s ago Docs: https://www.postgresql.org/docs/11/static/ Process: 14467 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 14473 (postmaster) CGroup: /system.slice/postgresql-11.service ├─14473 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/ ├─14476 postgres: logger ├─14478 postgres: checkpointer ├─14479 postgres: background writer ├─14480 postgres: walwriter ├─14481 postgres: autovacuum launcher ├─14482 postgres: stats collector ├─14483 postgres: logical replication launcher └─14493 postgres: flectra Flectra 127.0.0.1(46610) idle sept. 20 11:35:04 tchana.micronator-dev.org systemd[1]: Stopped PostgreSQL 11 database s.... sept. 20 11:35:04 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database .... sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.710 ED…32 sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.713 ED… » sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.748 ED… » sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.762 ED…es sept. 20 11:35:04 tchana.micronator-dev.org postmaster[14473]: 2019-09-20 11:35:04.762 ED…». sept. 20 11:35:04 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database s.... Hint: Some lines were ellipsized, use -l to show in full. [root@tchana ~]#
Redémarrage de Flectra
On redémarre le service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
On vérifie.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: active (running) since ven. 2019-09-20 11:36:23 EDT; 15s ago Main PID: 14599 (scl) CGroup: /system.slice/flectra.service ├─14599 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/pytho... ├─14600 /bin/bash /var/tmp/sclihq4LU └─14603 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin... sept. 20 11:36:23 tchana.micronator-dev.org systemd[1]: Started Flectra. [root@tchana ~]#
Après un changement de mot de passe, on supprime l'historique du fureteur Internet, on se reconnecte à Flectra et on vérifie quelques pages.
Super-utilisateur de PostgreSQL
Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe du super utilisateur PostgreSQL (postgres).
Vous pouvez trouver le mot de passe du super utilisateur PostgreSQL (postgres) dans le fichier de configuration /etc/flectra-server.conf
.
[root@tchana ~]# cat /etc/flectra-server.conf | grep admin_passwd admin_passwd = fghtbgh [root@tchana ~]#
Si on veut changer le mot de passe du super utilisateur PostgreSQL (postgres), il faut aussi le changer:
- à 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.
root@tchana ~]# whoami root [root@tchana ~]#
On change le mot de passe Linux du super-utilisateur postgres.
[root@tchana ~]# passwd postgres Changement de mot de passe pour l'utilisateur postgres. Entrez le nouveau mot de passe UNIX : nouveau-mot-de-passe-pour-postgres Retapez le nouveau mot de passe UNIX : nouveau-mot-de-passe-pour-postgres passwd : mise à jour réussie de tous les jetons d'authentification. [root@tchana ~]#
À la console de PostgreSQL
On se substitue au super-utilisateur postgres.
[root@tchana ~]# su - postgres Dernière connexion : dimanche 19 mai 2019 à 13:14:13 EDT sur pts/0 -bash-4.2$
On ouvre la console PostgreSQL.
-bash-4.2$ psql psql (11.3) Saisissez « help » pour l'aide. postgres=#
On change le mot de passe du super-utilisateur postgres.
postgres=# \password Saisissez le nouveau mot de passe : nouveau-mot-de-passe-du-super-utilisateur Saisissez-le à nouveau : nouveau-mot-de-passe-du-super-utilisateur postgres=#
On sort de la console PostgreSQL.
postgres=# \q -bash-4.2$
On retourne à l'utilisateur root.
-bash-4.2$ exit déconnexion [root@tchana ~]#
Dans le fichier /etc/flectra-server.conf
On édite le fichier /etc/flectra-server.conf
et on change le mot de passe du super-utilisateur de PostgreSQL.
On vérifie.
[root@tchana ~]# cat /etc/flectra-server.conf | grep admin_passwd admin_passwd = fghtbgh [root@tchana ~]#
Redémarrage de PostgreSQL
On redémarre PostgreSQL.
[root@tchana ~]# systemctl restart postgresql-11 [root@tchana ~]#
On vérifie.
[root@tchana ~]# systemctl status postgresql-11 ● postgresql-11.service - PostgreSQL 11 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled) Active: active (running) since ven. 2019-09-20 11:42:07 EDT; 7s ago Docs: https://www.postgresql.org/docs/11/static/ Process: 14956 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 14961 (postmaster) CGroup: /system.slice/postgresql-11.service ├─14961 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/ ├─14964 postgres: logger ├─14966 postgres: checkpointer ├─14967 postgres: background writer ├─14968 postgres: walwriter ├─14969 postgres: autovacuum launcher ├─14970 postgres: stats collector ├─14971 postgres: logical replication launcher └─14981 postgres: flectra Flectra 127.0.0.1(46620) idle sept. 20 11:42:07 tchana.micronator-dev.org systemd[1]: Stopped PostgreSQL 11 database s.... sept. 20 11:42:07 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database .... sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.496 ED…32 sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.500 ED… » sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.507 ED… » sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.521 ED…es sept. 20 11:42:07 tchana.micronator-dev.org postmaster[14961]: 2019-09-20 11:42:07.521 ED…». sept. 20 11:42:07 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database s.... Hint: Some lines were ellipsized, use -l to show in full. [root@tchana ~]#
Redémarrage de Flectra
On redémarre le service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
On vérifie.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: active (running) since ven. 2019-09-20 11:42:54 EDT; 8s ago Main PID: 15032 (scl) CGroup: /system.slice/flectra.service ├─15032 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/pytho... ├─15033 /bin/bash /var/tmp/sclqqf7xD └─15036 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin... sept. 20 11:42:54 tchana.micronator-dev.org systemd[1]: Stopped Flectra. sept. 20 11:42:54 tchana.micronator-dev.org systemd[1]: Started Flectra. [root@tchana ~]#
Après un changement de mot de passe, on supprime l'historique du fureteur Internet, on se reconnecte à Flectra et on vérifie quelques pages.
Administrateur Flectra
Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe de l'administrateur de Flectra en se connectant avec l'adresse courriel/mot de passe de l'administrateur utilisé pour la création de la base de données, lors de la finalisation de l'installation de Flectra au paragraphe Création d'une nouvelle base de données .
On se déconnecte de Flectra et on se reconnecte avec le nouveau mot de passe.
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.
Sauvegarde/restauration manuelle de la BD
Description
Nous créons un script Bash qui générera, dans le répertoire
/var/lib/pgsql/sauvegarde
, un fichier dump de sauvegarde de la BD de PostgreSQL du site Flectra. Le script est alors sécurisé et seul l'utilisateur root pourra le lancer.
Ce script sera lancé par une tâche cron
qui s'exécutera à 02h00, juste avant la sauvegarde habituelle des données du Serveur NethServer et ainsi cette dernière inclura la sauvegarde quotidienne de PostgreSQL.
Répertoire de sauvegarde
Tout ce qui a trait à la sauvegarde de la BD Flectra de PostgreSQL se trouvera dans un répertoire dédié à cette fin uniquement: /var/lib/pgsql/sauvegarde/
.
- Le propriétaire et le groupe du répertoire seront postgres:postgres.
- Le fichier de la nouvelle sauvegarde sera:
- généré et écrasera la sauvegarde précédente et
- sécurisé par le script en changeant le propriétaire et le groupe pour root:root et en donnant des droits à root seulement.
On crée le répertoire.
[root@tchana ~]# mkdir /var/lib/pgsql/sauvegarde [root@tchana ~]#
On change le propriétaire et le groupe.
[root@tchana ~]# chown postgres:postgres /var/lib/pgsql/sauvegarde [root@tchana ~]#
On ajuste tous les droits afin que seul l'utilisateur postgres puisse y accéder.
[root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde [root@tchana ~]#
On vérifie.
[root@tchana ~]# ls -alsd /var/lib/pgsql/sauvegarde 0 drwx------ 2 postgres postgres 6 20 sept. 14:46 /var/lib/pgsql/sauvegarde [root@tchana ~]#
Script de sauvegarde PostgreSQL
Prendre tout le contenu de l'encadré pour la commande.
cat > /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh <<'EOT' #!/bin/sh # Script pour générer une sauvegarde de la BD PostgreSQL de Flectra. # Michel-André 2018-09-17_11h16 / modifié le 19 septembre pour Flectra # vars TEMPS_DE_PAUSE=10 REP_SAUVEGARDE=/var/lib/pgsql/sauvegarde NOM_BD_FLECTRA=Flectra FORMAT_FICHIER=dump # On vérifie que flectra-server est en cours d'exécution. if (!(/usr/bin/systemctl status flectra | grep "active (running)")); then # Message au système et à la console /bin/logger "******************** flectra-server ******************** " /bin/logger "flectra-server N'EST PAS en cours d'execution..." /bin/echo "flectra-server N'EST PAS en cours d'execution..." # On relance server-flectra pour la sauvegarde de la BD $NOM_BD_FLECTRA /usr/bin/systemctl start flectra /bin/logger "flectra-server est relancé" /bin/logger " ***** flectra-server *****" /bin/echo "flectra-server est relancé" # Message au système et à la console /bin/logger "Pause de $TEMPS_DE_PAUSE secondes pour le démarrage de Flectra" /bin/echo "Pause de $TEMPS_DE_PAUSE secondes pour le démarrage de Flectra" # On fait une pause de $TEMPS_DE_PAUSE secondes pour le démarrage de Flectra. /bin/sleep $TEMPS_DE_PAUSE fi /bin/logger "******************** flectra-server ******************** " /bin/logger "flectra-server est en cours d'execution..." /bin/echo "flectra-server est en cours d'execution..." # On sauvegarde la BD dans $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER. # La sauvegarde du jour écrase la sauvegarde du jour précédent. # On sauvegarde la BD su - postgres -c '/usr/bin/pg_dumpall -c' > $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER # On sécurise le fichier de $NOM_BD_FLECTRA.$FORMAT_FICHIER. /bin/chown root:root $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER > /dev/null 2>&1 /bin/chmod 700 $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER > /dev/null 2>&1 # On écrit une entrée dans le journal du système. /bin/logger "La sauvegarde de la BD $NOM_BD_FLECTRA est dans: $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER" /bin/logger "******************** flectra-server ******************** " /bin/echo "La sauvegarde de la BD $NOM_BD_FLECTRA est dans: $REP_SAUVEGARDE/$NOM_BD_FLECTRA.$FORMAT_FICHIER" exit 1 EOT
Le paramètre -c (–clean) de la commande
pg_dumpall
indique d'inclure les commandes SQL DROP pour nettoyer (supprimer) les bases de données avant de les recréer. La commande DROP pour les rôles et les espaces de table (tablespaces) est également ajoutée.
On vérifie les premières lignes du fichier.
[root@tchana ~]# head -n7 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh #!/bin/sh # Script pour générer une sauvegarde de la BD PostgreSQL de Flectra. # Michel-André 2018-09-17_11h16 / modifié le 19 septembre pour Flectra # vars TEMPS_DE_PAUSE=10 [root@tchana ~]#
Il n'y a pas de ligne vide avant la ligne #!/bin/sh. Ci-dessus, nous en avons insérée une pour faciliter la copie de la commande.
On sécurise le fichier en changeant le groupe et le propriétaire.
[root@tchana ~]# chown root:root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]#
On ajuste les droits pour rendre le fichier exécutable par l'utilisateur root uniquement.
[root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]#
On vérifie.
[root@tchana ~]# ls -als /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh 4 -rwx------ 1 root root 2273 20 sept. 15:51 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]#
Sauvegarde
Vérification du script de sauvegarde
On vérifie le fonctionnement de notre script de sauvegarde en simulant ce que fera
cron
.
[root@tchana ~]# /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh Active: active (running) since ven. 2019-09-20 15:40:27 EDT; 12min ago flectra-server est en cours d'execution... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3604k 0 3603k 100 357 2222k 220 0:00:01 0:00:01 --:--:-- 2221k La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump [root@tchana ~]#
On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie.
[root@tchana ~]# ls -ls /var/lib/pgsql/sauvegarde/Flectra.dump 3604 -rwx------ 1 root root 3690361 20 sept. 15:40 /var/lib/pgsql/sauvegarde/Flectra.dump [root@tchana ~]#
Comme on le voit, seul root pourra manipuler le fichier de sauvegarde.
Journal du Serveur NethServer
... Sep 20 15:40:27 tchana root: ******************** flectra-server ******************** Sep 20 15:40:27 tchana root: flectra-server est en cours d'execution... Sep 20 15:40:30 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump Sep 20 15:40:30 tchana root: ******************** flectra-server ******************** ...
Si flectra-server n'est pas en exécution (arrêté)
Il en sera exactement de même si flectra-server n'est pas en exécution. Le début du script relancera Flectra mais à la fin, il ne l'arrêtera pas.
Vérification
On affiche le status de Flectra.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: active (running) since ven. 2019-09-20 15:40:27 EDT; 17min ago Main PID: 3591 (scl) CGroup: /system.slice/flectra.service ├─3591 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python... ├─3595 /bin/bash /var/tmp/sclDTcOXb └─3601 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ... sept. 20 15:40:27 tchana.micronator-dev.org systemd[1]: Started Flectra. [root@tchana ~]#
On arrête Flectra.
[root@tchana ~]# systemctl stop flectra [root@tchana ~]#
On vérifie.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: inactive (dead) since ven. 2019-09-20 15:58:57 EDT; 7s ago Process: 3591 ExecStart=/usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin -c /etc/flectra-server.conf (code=killed, signal=TERM) Main PID: 3591 (code=killed, signal=TERM) sept. 20 15:40:27 tchana.micronator-dev.org systemd[1]: Started Flectra. sept. 20 15:58:56 tchana.micronator-dev.org systemd[1]: Stopping Flectra... sept. 20 15:58:57 tchana.micronator-dev.org systemd[1]: Stopped Flectra. [root@tchana ~]#
On relance le script de sauvegarde.
[root@tchana ~]# /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh flectra-server N'EST PAS en cours d'execution... flectra-server est relancé Pause de 10 secondes pour le démarrage de Flectra flectra-server est en cours d'execution... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3604k 0 3603k 100 357 1272k 126 0:00:02 0:00:02 --:--:-- 1272k La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump [root@tchana ~]#
On vérifie le statut de Flectra.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: active (running) since ven. 2019-09-20 15:59:42 EDT; 1min 12s ago Main PID: 4867 (scl) CGroup: /system.slice/flectra.service ├─4867 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python... ├─4869 /bin/bash /var/tmp/scl3aRQYz └─4876 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ... sept. 20 15:59:42 tchana.micronator-dev.org systemd[1]: Started Flectra. [root@tchana ~]#
Le script a bien démarré Flectra.
On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie.
[root@tchana ~]# ls -ls /var/lib/pgsql/sauvegarde/Flectra.dump 3604 -rwx------ 1 root root 3690361 20 sept. 15:59 /var/lib/pgsql/sauvegarde/Flectra.dump [root@tchana ~]#
Inclusion du répertoire dans la sauvegarde de NethServer
On vérifie si le nom du répertoire /var/lib/pgsql/sauvegarde/
est déjà inséré dans le fichier d'inclusion de la sauvegarde des données: /etc/backup-data.d/custom.include
, sinon on l'insère.
Prendre tout le contenu de l'encadré pour la commande.
NouvelleInclusion="/var/lib/pgsql/sauvegarde/" if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n" else # L'entrée n'a pas été trouvée dans custom.include echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n" fi
Le répertoire inclut le script
sauvegarde-postgres.sh
et le fichier Flectra.dump
de la sauvegarde PostgreSQL.
On vérifie.
[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /var/lib/pgsql/sauvegarde/ /var/lib/pgsql/sauvegarde/ [root@tchana ~]#
Ci-dessus, il n'y a pas de ligne vide avant /var/lib/pgsql/sauvegarde/. Nous en avons insérée une afin de faciliter la copie de la commande.
Tâche cron
On crée une tâche cron qui s'exécutera quotidiennement à 02h00 (0 2 * * *), car la sauvegarde régulière des données du Serveur NethServer est programmée pour rouler à 03h00 et nous voulons y inclure la sauvegarde de PostgreSQL.
Répertoire pour un gabarit personnalisé
Création du répertoire.
Prendre tout le contenu de l'encadré pour la commande.
DIR="/etc/e-smith/templates-custom/etc/crontab" for NAME in $DIR do if [ ! -d $NAME ]; then mkdir -p $NAME chown flectra.flectra $NAME chmod 770 $NAME fi done
On vérifie.
[root@tchana ~]# ls -alsd /etc/e-smith/templates-custom/etc/crontab 0 drwxrwx--- 2 flectra flectra 6 20 sept. 16:04 /etc/e-smith/templates-custom/etc/crontab [root@tchana ~]#
Création de la tâche cron
On crée le fichier de la tâche cron et on y insère son contenu. Elle s'exécutera quotidiennement à 02h00.
Prendre tout le contenu de l'encadré pour la commande.
cat > /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql <<'EOT' SHELL=/bin/bash MAILTO=root # # Tâche cron qui lance /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh afin # de sauvegarder la BD de Flectra. Cette tâche cron roulera quotidiennement à 02h30. # Michel-André, 2018-06-18_11h27 # ┌───────────── min (0 - 59) # │ ┌────────────── heure (0 - 23) # │ │ ┌─────────────── jour du mois (1 - 31) # │ │ │ ┌──────────────── mois (1 - 12) # │ │ │ │ ┌───────────────── jour de la semaine (0 - 6) (0 à 6 sont de dimanche à samedi, # │ │ │ │ │ 7 est dimanche, même que 0) # │ │ │ │ │ # * * * * * [utilisateur] commande à exécuter # 0 2 * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh EOT
L'heure peut être choisie à votre entière discrétion.
On vérifie le contenu du fichier de la tâche.
[root@tchana ~]# cat /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql SHELL=/bin/bash MAILTO=root # # Tâche cron qui lance /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh afin # de sauvegarder la BD de Flectra. Cette tâche cron roulera quotidiennement à 02h30. # Michel-André, 2018-06-18_11h27 # ┌───────────── min (0 - 59) # │ ┌────────────── heure (0 - 23) # │ │ ┌─────────────── jour du mois (1 - 31) # │ │ │ ┌──────────────── mois (1 - 12) # │ │ │ │ ┌───────────────── jour de la semaine (0 - 6) (0 à 6 sont de dimanche à samedi, # │ │ │ │ │ 7 est dimanche, même que 0) # │ │ │ │ │ # * * * * * [utilisateur] commande à exécuter # 0 2 * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]#
Il n'y a pas de ligne vide avant la ligne SHELL=/bin/bash. Ci-dessus, nous en avons insérée une pour faciliter la copie de la commande.
On sécurise le fichier.
[root@tchana ~]# chmod 700 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]#
On vérifie
[root@tchana ~]# ls -ls /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql 4 -rwx------ 1 root root 860 20 sept. 16:05 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]#
On développe le gabarit personnalisé.
[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab [root@tchana ~]#
On redémarre le démon crond
.
[root@tchana ~]# systemctl restart crond [root@tchana ~]#
Vérification de la tâche cron
On modifie l'heure de la tâche cron pour qu'elle soit lancée à toutes les minutes afin de vérifier son exécution.
On change l'heure de la tâche.
[root@tchana ~]# sed -i 's/^0 2/\* \*/' /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]#
On vérifie.
[root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql # * * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]#
On développe le gabarit personnalisé.
[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab [root@tchana ~]#
On redémarre le démon crond
.
[root@tchana ~]# systemctl restart crond [root@tchana ~]#
Suivi
On lance la commande ci-dessous pour suivre toutes les tâches cron et on filtre avec grep
celles qui contiendront sauvegarde.
[root@tchana ~]# tail -F /var/log/messages | grep sauvegarde
À toutes les minutes, on voit notre tâche s'afficher.
... Sep 20 16:08:02 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump Sep 20 16:09:04 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump Sep 20 16:10:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump ...
On arrête la commande tail avec [CTL] + [c].
... Sep 20 16:10:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump ^C [root@tchana ~]#
Vérification lorsque Flectra est arrêté
On arrête Flectra.
[root@tchana ~]# systemctl stop flectra [root@tchana ~]#
On relance la commande tail
.
[root@tchana ~]# tail -F /var/log/messages | grep sauvegarde
À toutes les minutes, on voit notre tâche s'afficher.
... May 20 17:24:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump ...
On arrête la commande tail avec [CTL] + [c].
... May 20 17:24:03 tchana root: La sauvegarde de la BD Flectra est dans: /var/lib/pgsql/sauvegarde/Flectra.dump ^C [root@tchana ~]#
On remet l'heure de la tâche cron à 02h00.
[root@tchana ~]# sed -i 's/\* \* \* \* \* root/0 2 \* \* \* root/' \ /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]#
On vérifie.
[root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql # * 2 * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]#
On développe le gabarit personnalisé.
[root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab [root@tchana ~]#
On redémarre le démon crond
.
[root@tchana ~]# systemctl restart crond [root@tchana ~]#
Courriel de notification
L'utilisateur root (admin) recevra un courriel, semblable à celui ci-dessous, à la fin de la tâche cron.
On se rend à l'URL: https://www.micronator-dev.org/webmail . On se logue avec l'utilisateur root et son mot de passe.
Inclusion du script dans la sauvegarde de NethServer
On vérifie si le nom du répertoire /etc/e-smith/templates-custom/etc/crontab/
est déjà inséré dans le fichier d'inclusion de la sauvegarde des données: /etc/backup-data.d/custom.include
, sinon on l'insère.
Prendre tout le contenu de l'encadré pour la commande.
NouvelleInclusion="/etc/e-smith/templates-custom/etc/crontab/" if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n" else # L'entrée n'a pas été trouvée dans custom.include echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n" fi
On vérifie.
[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep crontab /etc/e-smith/templates-custom/etc/crontab/ [root@tchana ~]#
Notre tâche cron pour la sauvegarde automatique de PostgreSQL fonctionne parfaitement.
Suppression du logo
Pour s'assurer que la restauration fonctionne correctement. on supprime notre logo que la restauration remettra en place.
- 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.
[root@tchana ~]# /sbin/e-smith/backup-data-list -b backup-data | grep Flectra.dump Fri Sep 20 16:12:14 2019 var/lib/pgsql/sauvegarde/Flectra.dump [root@tchana ~]#
Le fichier Flectra.dump
est présent dans la dernière sauvegarde NethServer, mais on peut le choisir de n'importe quelle sauvegarde.
Configuration → Restaurer les données.
Backup file → On choisit la sauvegarde désirée.
⦿ Restaurer les fichiers dans le chemin original
On peut choisir la destination de la récupération.
Sélectionner un ou plusieurs dossiers ou fichiers à restaurer
On sélectionne le répertoire: /var/lib/pgsql/sauvegarde/
.
Dossiers ou fichiers à restaurer affiche notre sélection.
RESTAURER.
Le répertoire a été trouvé et restauré à sa position initiale.
On vérifie.
[root@tchana ~]# ls -als /var/lib/pgsql/sauvegarde/Flectra.dump 3604 -rwx------ 1 root root 3690361 20 sept. 15:59 /var/lib/pgsql/sauvegarde/Flectra.dump [root@tchana ~]#
Le fichier est bien celui de la sauvegarde que nous avons lancée manuellement le 20 septembre.
On pourrait aussi bien avoir choisi le fichier depuis n'importe quelle sauvegarde NethServer.
Suppression de la base de données actuelle
On vérifie si le service Flectra est en cours d'exécution.
[root@tchana ~]# systemctl status flectra ● flectra.service - Flectra Loaded: loaded (/etc/systemd/system/flectra.service; enabled; vendor preset: disabled) Active: active (running) since sam. 2019-09-21 16:19:05 EDT; 1h 6min ago Main PID: 5802 (scl) CGroup: /system.slice/flectra.service ├─5802 /usr/bin/scl enable rh-python36 -- /opt/flectra/flectra-venv/bin/python... ├─5807 /bin/bash /var/tmp/scl780LML └─5813 /opt/flectra/flectra-venv/bin/python3 /opt/flectra/flectra/flectra-bin ... sept. 20 16:12:01 tchana.micronator-dev.org systemd[1]: Started Flectra. [root@tchana ~]#
Arrêt de Flectra
[root@tchana ~]# systemctl stop flectra [root@tchana ~]#
On vérifie.
[root@tchana ~]# systemctl status flectra | grep Active Active: inactive (dead) since sam. 2019-09-21 17:26:26 EDT; 8s ago [root@tchana ~]#
Suppression de la BD actuelle
On se substitue à l'utilisateur postgres.
root@tchana ~]# su - postgres Dernière connexion : jeudi 19 septembre 2019 à 20:46:08 EDT sur pts/0 -bash-4.2$
On entre dans la console PostgreSQL.
-bash-4.2$ psql psql (11.5) Saisissez « help » pour l'aide. postgres=#
On affiche les BD présentes.
postgres=# \list Liste des bases de données Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès -----------+--------------+----------+-----------------+--------------+---------------------- Flectra | flectra | UTF8 | C | fr_FR.utf8 | postgres | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | template0 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (4 lignes) postgres=#
La BD Flectra est présente.
On quitte la console PostgreSQL.
postgres=# \q -bash-4.2$
On supprime la BD Flectra.
-bash-4.2$ dropdb 'Flectra' -bash-4.2$
On retourne dans la console PostgreSQL pour vérifier la suppression de la BD.
-bash-4.2$ psql psql (11.5) Saisissez « help » pour l'aide. postgres=#
On affiche les BD présentes.
postgres=# \list Liste des bases de données Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès -----------+--------------+----------+-----------------+--------------+---------------------- postgres | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | template0 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (4 lignes) postgres=#
La base de données Flectra n'est plus présente, elle a bien été supprimée.
On quitte la console PostgreSQL.
postgres=# \q -bash-4.2$
On revient à l'utilisateur root.
-bash-4.2$ exit déconnexion root@tchana ~]#
Propriétaire du fichier de sauvegarde
L'utilisateur root se rend dans le répertoire des sauvegardes.
[root@tchana ~]# cd /var/lib/pgsql/sauvegarde/ [root@tchana sauvegarde]#
On affiche le contenu du répertoire.
[root@tchana sauvegarde]# ls -als total 3608 0 drwx------ 2 postgres postgres 56 21 sept. 21:17 . 0 drwx------ 4 postgres postgres 97 7 août 18:20 .. 3604 -rwx------ 1 root root 3690361 20 sept. 15:59 Flectra.dump 4 -rwx------ 1 root root 2277 21 sept. 20:37 sauvegarde-postgres.sh [root@tchana sauvegarde]#
On change le propriétaire du fichier de sauvegarde afin que l'utilisateur postgres puisse le lire.
[root@tchana sauvegarde]# chown postgres Flectra.dump [root@tchana sauvegarde]#
On vérifie.
[root@tchana sauvegarde]# ls -ls Flectra.dump 3604 -rwx------ 1 postgres root 3690361 20 sept. 15:59 Flectra.dump [root@tchana sauvegarde]#
Restauration de la BD
On se substitue à l'utilisateur postgres.
root@tchana ~]# su - postgres Dernière connexion : jeudi 19 septembre 2019 à 20:56:08 EDT sur pts/0 -bash-4.2$
L'utilisateur postgres se rend dans le répertoire des sauvegardes.
-bash-4.2$ cd /var/lib/pgsql/sauvegarde/ -bash-4.2$
On vérifie le fichier de sauvegarde.
-bash-4.2$ ls -ls total 3608 3604 -rwx------ 1 postgres root 3690361 20 sept. 15:59 Flectra.dump 4 -rwx------ 1 root root 2277 21 sept. 20:37 sauvegarde-postgres.sh -bash-4.2$
On restaure la sauvegarde.
-bash-4.2$ psql -f Flectra.dump SET SET ... SET COMMENT-bash-4.2$
Vérification
On entre dans la console PostgreSQL.
-bash-4.2$ psql psql (11.5) Saisissez « help » pour l'aide. postgres=#
On affiche les BD présentes.
postgres=# \list Liste des bases de données Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès -----------+--------------+----------+-----------------+--------------+---------------------- Flectra | flectra | UTF8 | C | fr_FR.utf8 | postgres | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | template0 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (4 lignes) postgres=#
La BD Flectra a été créée et restaurée.
On quitte la console PostgreSQL et on retourne à l'usager postgres.
postgres=# \q -bash-4.2$
On revient à l'utilisateur root.
-bash-4.2$ exit déconnexion root@tchana ~]#
Vérification
On se logue à Flectra et on vérifie si tout est tel qu'avant la sauvegarde: https://www.flectra.micronator-dev.org/.
Si on rencontre des difficultés à accéder, on vidange le cache DNS du poste de travail de même que l'historique du navigateur Internet.
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.
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.
Restauration d'une configuration
On peut récupérer une ancienne sauvegarde stockée sur le poste de travail afin de la restaurer.
La sauvegarde récupérée apparaît dans la liste et on peut la restaurer en cliquant Restaurer.
- 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.
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 (défaut) - http://duplicity.nongnu.org/
- Restic - https://restic.net/
- rsync - https://rsync.samba.org/
Duplicity
Duplicity est le moteur par défaut pour NethServer. Il dispose d'un bon algorithme de compression qui réduira le stockage sur la destination. Duplicity nécessite une sauvegarde complète une fois par semaine. Lorsque le jeu de données est très volumineux, le processus peut prendre plus de 24 heures.
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.
- On retourne au dossier Sauvegarde.
- Clac sur le nom du répertoire → Partager avec → Partage Avancé.
- 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.
Config de la Sauvegardes (données)
Notification
⦿ Notifier
On préfère Toujours être notifié lorsqu'une sauvegarde est effectuée.
⦿ Adresse email personnalisée
Pour recevoir les courriels, on entre l'adresse courriel de l'administrateur de tous les serveurs de notre site.
Adresse de l'expéditeur
On spécifie l'adresse courriel de l'admin du serveur d'où provient la notification.
→ SOUMETTRE.
Vérifications à la ligne de commande
Sauvegarde (configuration)
On affiche les propriétés de la configuration Sauvegarde (configuration).
[root@tchana ~]# config show backup-config backup-config=configuration HistoryLength=31 status=enabled [root@tchana ~]#
HistoryLength: la valeur donnée au paramètre Configuration → Sauvegarde (Configuration) → Automatic backups to keep à la section Config de la Sauvegarde de la configuration.
status: propriété qui active ou désactive la sauvegarde automatique, peut être activée (enabled) ou désactivée (disabled). La valeur par défaut est activée.
Indépendamment de cette propriété, la sauvegarde est toujours exécutée si elle est démarrée manuellement.
Sauvegarde (données)
On affiche les propriétés de la configuration Sauvegarde (données).
[root@tchana ~]# config show backup-data backup-data=configuration IncludeLogs=enabled [root@tchana ~]#
IncludeLogs: nous avons coché Configuration → Sauvegarde (données) → onglet Général → Advanced options → Include system logs à la section Config de la Sauvegardes (données) .
On affiche les propriétés Sauvegarde (données).
[root@tchana ~]# db backups show backup-data=duplicity BackupTime=0 3 * * * CleanupOlderThan=56D FullDay=0 NFSHost= NFSShare= Notify=always NotifyFrom=admin@micronator-dev.org NotifyTo=michelandre@micronator.org SMBHost=10.10.10.81 SMBLogin=michelandre SMBPassword=mot-de-passe SMBShare=Sauvegarde Type=incremental USBLabel= VFSType=cifs VolSize=250 WebDAVLogin= WebDAVPassword= WebDAVUrl= status=enabled [root@tchana ~]#
On vérifie la propriété FullDay (dimanche=0, lundi-1, mardi=2…)
Personnalisation
Inclusion de fichiers/répertoires
On peut inclure des fichiers/répertoires supplémentaires en les spécifiant dans le fichier d'inclusion: /etc/backup-data.d/custom.include
.
Grandeur des fichiers de sauvegarde
Comme on le voit avec la commande db backups show
à la section
Sauvegarde (données)
, la propriété VolSize=250 donnera des fichiers de sauvegarde de 250 Mo. Pour une sauvegarde de plusieurs Go, ce paramètre segmentera la sauvegarde en de très nombreux fichiers.
Nous ajustons la grandeur des fichiers à 2 Go (2048 Mo) et ainsi facilitons l'examen du répertoire Sauvegarde
.
[root@tchana ~]# db backups setprop backup-data VolSize 2048 [root@tchana ~]#
On signale le changement.
[root@tchana ~]# signal-event nethserver-backup-data-update [root@tchana ~]#
On vérifie.
[root@tchana ~]# db backups show -> grep VolSize VolSize=2048 [root@tchana ~]#
Lancement forcé de la sauvegarde
Première sauvegarde
On peut forcer le lancement d'une sauvegarde en exécutant la commande ci-dessous.
[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:28:03 Pre backup scripts status: SUCCESS --------------[ Backup Statistics ]-------------- StartTime 1549650495.78 (Fri Feb 8 13:28:15 2019) EndTime 1549650497.91 (Fri Feb 8 13:28:17 2019) ElapsedTime 2.13 (2.13 seconds) SourceFiles 419 SourceFileSize 24495192 (23.4 MB) NewFiles 419 NewFileSize 24495192 (23.4 MB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 419 RawDeltaSize 24467434 (23.3 MB) TotalDestinationSizeChange 1963840 (1.87 MB) Errors 0 ------------------------------------------------- Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:28:19 Time elapsed: 0 hours, 0 minutes, 16 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.67 GB 132.16 GB 85.6% [root@tchana ~]#
Cette sauvegarde (1 918 Ko) est complète.
On vérifie la date.
[root@tchana ~]# date ven février 8 13:32:59 EDT 2019 [root@tchana ~]#
Même si nous sommes vendredi et que nous avons paramétré les sauvegardes complètes pour les dimanches seulement, cette sauvegarde est complète, car c'est la première à ce jour.
Deuxième sauvegarde
On peut forcer une autre sauvegarde pour générer une incrémentielle.
[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:35:07 Pre backup scripts status: SUCCESS --------------[ Backup Statistics ]-------------- StartTime 1549650912.53 (Fri Feb 8 13:35:12 2019) EndTime 1549650912.95 (Fri Feb 8 13:35:12 2019) ElapsedTime 0.42 (0.42 seconds) SourceFiles 422 SourceFileSize 24526628 (23.4 MB) NewFiles 9 NewFileSize 23980 (23.4 KB) DeletedFiles 0 ChangedFiles 70 ChangedFileSize 14856835 (14.2 MB) ChangedDeltaSize 0 (0 bytes) DeltaEntries 79 RawDeltaSize 457642 (447 KB) TotalDestinationSizeChange 76371 (74.6 KB) Errors 0 ------------------------------------------------- Les métadonnées locales et distantes sont déjà synchronisées. Aucune synchronisation nécessaire. Date de la dernière sauvegarde complète : Fri Feb 08 13:28:03 2019 Aucun ancien jeu de sauvegarde n’a été trouvé, rien n’a été supprimé. Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:35:14 Time elapsed: 0 hours, 0 minutes, 7 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.68 GB 132.15 GB 85.6% [root@tchana ~]#
La deuxième sauvegarde n'est que de (75 Ko) et est une incrémentielle, car ce n'est pas la première à ce jour et nous ne sommes pas dimanche.
Troisième sauvegarde
Nous changeons la journée des sauvegardes complètes pour qu'elles aient lieu les vendredis au lieu des dimanches → SOUMETTRE.
On force une troisième sauvegarde.
[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:44:43 Pre backup scripts status: SUCCESS --------------[ Backup Statistics ]-------------- StartTime 1549651488.35 (Fri Feb 8 13:44:48 2019) EndTime 1549651489.30 (Fri Feb 8 13:44:49 2019) ElapsedTime 0.95 (0.95 seconds) SourceFiles 422 SourceFileSize 24547401 (23.4 MB) NewFiles 422 NewFileSize 24547401 (23.4 MB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 422 RawDeltaSize 24519532 (23.4 MB) TotalDestinationSizeChange 1996425 (1.90 MB) Errors 0 ------------------------------------------------- Les métadonnées locales et distantes sont déjà synchronisées. Aucune synchronisation nécessaire. Date de la dernière sauvegarde complète : Fri Feb 08 13:28:03 2019 Aucun ancien jeu de sauvegarde n’a été trouvé, rien n’a été supprimé. Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:44:51 Time elapsed: 0 hours, 0 minutes, 8 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.68 GB 132.15 GB 85.6% [root@tchana ~]#
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.
Exclusion de fichiers/répertoire
On peut exclure des fichiers/répertoires en les spécifiant dans le fichier d'exclusion: /etc/backup-data.d/custom.exclude
.
Restauration des données
1) Nous créons un fichier dans le répertoire personnel de root.
2) Nous lançons une sauvegarde.
3) Nous supprimons le fichier créé avant la sauvegarde, celui de l' étape 1.
4) Nous récupérons ce fichier contenu dans la dernière sauvegarde.
5) On vérifie la récupération.
1) On crée le fichier
[root@tchana ~]# touch toto [root@tchana ~]#
On vérifie.
[root@tchana ~]# ls -ls toto 0 -rw-r--r-- 1 root root 0 Feb 8 13:55 toto [root@tchana ~]#
2) On lance une sauvegarde.
[root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:56:09 Pre backup scripts status: SUCCESS ... Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:56:17 Time elapsed: 0 hours, 0 minutes, 8 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.68 GB 132.15 GB 85.6% [root@tchana ~]#
3) Nous supprimons le fichier créé avant la sauvegarde, celui de la première étape.
[root@tchana ~]# rm toto rm : supprimer fichier vide « toto » ? y [root@tchana ~]#
On vérifie.
[root@tchana ~]# ls -ls toto ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type [root@tchana ~]#
Restauration
4) On récupère le fichier.
Configuration → Restaurer les données.
Backup file
On choisit la dernière sauvegarde.
Mode de restauration
⦿ Restaurer les fichiers dans le chemin original.
Sélectionner un ou plusieurs dossiers ou fichiers à restaurer
On entre toto.
- Dans l'arborescence, on choisit /root, le répertoire contenant le fichier à restaurer.
/root apparaît dans: Dossiers ou fichiers à restaurer.
→ RESTAURER.
Le message sur fond vert, Restauré à la position initiale indique que le fichier a été trouvé et restauré.
Si nous n'avions rien spécifié sous Sélectionner un ou plusieurs dossiers ou fichiers à restaurer, c'est tout l'arborescence /root qui aurait été alors restaurée.
Vérification
5) On vérifie.
[root@tchana ~]# ls -ls toto 0 -rw-r--r-- 1 root root 0 Feb 8 13:55 toto [root@tchana ~]#
Le fichier a été restauré.
Recherche de fichiers dans les sauvegardes
On peut rechercher un fichier dans les sauvegardes (peut prendre un certain temps).
[root@tchana ~]# /sbin/e-smith/backup-data-list -b backup-data | grep toto Ven février 8 13:55:22 2019 root/toto [root@tchana ~]#
La sauvegarde/restauration NethServer est fonctionnelle.
Instantané VirtualBox
À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
NethServer & BackupPC
Référence: NethServer-101, Cahier-11: NethServer & BackupPC.
Cette section décrit la marche à suivre pour créer une sauvegarde d'un Serveur NethServer (dorgee.micronator-101.org, notre serveur physique principal) vers une station distante.
La sauvegarde se fait en utilisant le protocol CIFS (Common Internet File System) vers le répertoire partagé D:\Sauvegarde
sur la station de travail Win-81.
Toutes les sauvegardes/restaurations des Serveurs NethServer fonctionnent exactement de la même façon.
BackupPC, installé sur un Serveur NethServer dédié aux sauvegardes, peut sauvegarder tout Serveur NethServer et il sera alors possible de le restaurer/migrer sans qu'il ne soit nécessaire de réinstaller les Modules présents ou les autres logiciels installés sur le serveur; ils seront tous restaurés, car inclus dans la sauvegarde BackupPC.
Description du cahier
Le Cahier-11: NethServer & BackupPC du “Cours NethServer-101” décrit la marche à suivre pour: l’installation de BackupPC-3.3.1 et sa mise à jour vers BackupPC-4.3.0, les prises de sauvegardes de l’hôte de BackupPC et du serveur SOURCE et enfin la restauration de la sauvegarde de SOURCE sur DESTINATION pour que ce dernier devienne un clone du premier.
Ce cahier est basé sur les pages Web suivantes:
https://wiki.nethserver.org/doku.php?id=module:backuppc
https://www.veritech.net/centos-7-backuppc-installation-guide/
https://srbu.se/index.php?option=com_content&view=article&id=201:upgrading-backuppc-to-v4-2-1&catid=8&Itemid=121&lang=en
Page officielle de BackupPC: https://backuppc.github.io/backuppc/.
Référence: https://fr.wikipedia.org/wiki/BackupPC.
BackupPC est un logiciel LIBRE, publié sous licence GPL, pour la sauvegarde de systèmes de fichiers.
Il est utilisé pour sauvegarder sur disque un ensemble de postes clients et de serveurs, sous: Unix, Linux, Windows ou Mac OS X. Les protocoles utilisables pour les transferts sont: SMB, tar over SSH/rsh/nfs et rsync. Il ne nécessite l'installation d'aucun logiciel client sur les machines à sauvegarder. Il possède une interface Web pour lancer des sauvegardes ou restaurer des fichiers. Il est également possible de sauvegarder des bases de données via un script shell lancé avant la sauvegarde.
But du Cahier-101-11
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.
Mises à jour
Flectra
Nous avons utilisé git
pour l'installation de Flectra; il peut donc aussi servir pour la mise à jour du coeur de Flectra et de ses extensions; ensuite on mettra à jour la base de données PostgreSQL afin qu'elle utilise le code le plus récent.
Pour le nom de la BD, voir la section
Création d'une nouvelle base de données
.
S'assurer d'avoir une sauvegarde de la base de donnée PostgreSQL avant de réaliser la mise à jour. Voir la section
Sauvegarde
.
Flectra et ses extensions
Adaptation de la page: https://www.cier.tech/fr_FR/blog/notre-blog-1/post/how-to-update-odoo-from-github-25.
On arrête Flectra.
[root@tchana ~]# systemctl stop flectra [root@tchana ~]#
On vérifie l'arrêt.
[root@tchana ~]# systemctl status flectra | grep -i Active: Active: inactive (dead) since ven. 2019-09-20 19:45:50 EDT; 14s ago [root@tchana ~]#
Notez que vous devez faire la mise à jour en tant qu'utilisateur flectra.
On se substitue à l'utilisateur flectra.
[root@tchana ~]# su - flectra Dernière connexion : jeudi 19 septembre 2019 à 20:32:10 EDT sur pts/0 [flectra@tchana ~]$
On vérifie.
[flectra@tchana ~]$ whoami flectra [flectra@tchana ~]$
On se rend dans le répertoire /opt/flectra/flectra
.
[flectra@tchana ~]$ cd /opt/flectra/flectra [flectra@tchana flectra]$
On vérifie.
[flectra@tchana flectra]$ pwd /opt/flectra/flectra [flectra@tchana flectra]$
Récupération des mises à jour
On récupère les mises à jour avec git
.
[flectra@tchana flectra]$ git fetch origin master --depth=1 remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 From https://github.com/flectra-hq/flectra * branch master -> FETCH_HEAD [flectra@tchana flectra]$
Application des mises à jour
S'il existait des mise à jour, nous les aurions récupérées et nous devrions demander au système de les appliquer. À ce stade, le système saurait quelles sont les modifications qui devraient être effectuées, mais nous ne les avons pas encore appliquées; nous pourrions le faire avec git reset
.
La commande
git reset –hard
appliquera toutes les modifications, peu importe ce qui pourrait survenir.
Si vous avez ajouté du code personnalisé dans des modules déjà existants (donc dans le code source et non dans un module autonome), vous ne devez pas l'utiliser cette commande, car votre code personnalisé sera écrasé! Ajouté du code personnalisé dans des modules originaux est contraire à toutes les règles. Si vous devez ajouter du code, commencez par créer vos propres modules au lieu de modifier le code source.
On applique les mises à jour.
[flectra@tchana flectra]$ git reset --hard master HEAD is now at 4dd1e69 Merge branch 'master' into 'master' [flectra@tchana flectra]$
S'il existait des mises à jour causées par de bogues, le mot résolu
[FIX]
apparaîtrait à côté de ceux-ci.
Avec ce reset
, le code Flectra serait maintenant à jour et aurait été synchronisé avec les derniers changements apportés.
Base de donnée PostgreSQL
On met à jour la base de données PostgreSQL afin qu'elle prenne note de toutes les modifications et qu'elle se les applique à elle-même.
[flectra@tchana flectra]$ /usr/bin/scl enable rh-python36 \ -- /opt/flectra/flectra-venv/bin/python3 \ /opt/flectra/flectra/flectra-bin \ -c /etc/flectra-server.conf \ -u all -d Flectra
- /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 commandepython3
de l'environnement 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.
[flectra@tchana flectra]# top -d1 | grep python3 6336 flectra 20 0 467988 69156 10192 R 72,3 1,8 0:07.48 python3 6336 flectra 20 0 467988 69156 10192 R 74,0 1,8 0:08.22 python3 6336 flectra 20 0 467988 69156 10192 R 71,3 1,8 0:08.94 python3 ... 6336 flectra 20 0 482740 74744 10240 R 75,0 1,9 0:22.28 python3 6336 flectra 20 0 482740 74744 10240 R 73,0 1,9 0:23.01 python3 6336 flectra 20 0 630204 76980 10408 S 58,3 2,0 0:23.61 python3 6336 flectra 20 0 630204 76980 10408 S 1,0 2,0 0:23.62 python3 6336 flectra 20 0 630204 76980 10408 S 1,0 2,0 0:23.63 python3 ... [flectra@tchana flectra]#
C'est la commande python3
, de l'environnement virtuel flectra-venv, qui fait tout le travail de la mise à jour de la BD. Pour ce faire, elle utilise une forte proportion du temp CPU.
Lorsque le temp CPU utilisé par
python3
redevient normal (1,0), la mise à jour de la BD est terminée.
On peut fermer cette deuxième session PuTTY.
Arrêt de la commande de mise à jour et redémarrage du service Flectra
On revient à la sessions original de PuTTY.
Les paramètres de la mise à jour de la base de données (-u all -d Flectra) faisaient partie de la commande du lancement de Flectra.
[flectra@tchana flectra]$ /usr/bin/scl enable rh-python36 \ -- /opt/flectra/flectra-venv/bin/python3 \ /opt/flectra/flectra/flectra-bin \ -c /etc/flectra-server.conf \ -u all -d Flectra
La mise à jour de la base de données est terminée, mais la commande du lancement de Flectra continue de rouler.
Vu que nous n'avons pas utiliser systemctl
pour lancer Flectra, ce dernier roule donc en tant que commande et non en tant que service. Si nous fermons la fenêtre de cette session PuTTY, Flectra s'arrêtera car la fermeture d'une fenêtre termine toutes les commandes courantes lancées par cette session.
On avorte la commande avec un [CTL] + [c].
[flectra@tchana flectra]$ /usr/bin/scl enable rh-python36 \ -- /opt/flectra/flectra-venv/bin/python3 \ /opt/flectra/flectra/flectra-bin \ -c /etc/flectra-server.conf \ -u all -d Flectra ^C [flectra@tchana flectra]$
On quitte la substitution d'utilisateur pour retourner à root.
[flectra@tchana flectra]$ exit déconnexion [root@tchana ~]#
On vérifie.
[root@tchana ~]# whoami root [root@tchana ~]#
On redémarre le service Flectra en utilisant systemctl
.
Contrairement à une commande, un service ne s'arrête pas si on ferme la session qui l'a lancée.
[root@tchana ~]# systemctl start flectra [root@tchana ~]#
On vérifie.
[root@tchana ~]# systemctl status flectra | grep Active: Active: active (running) since ven. 2019-09-20 20:17:15 EDT; 32s ago [root@tchana ~]#
Vérification du site Flectra
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Flectra et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour: https://www.flectra.micronator-dev.org.
PHP
Mise à jour de la Collection PHP.
[root@tchana ~]# yum update -y nethserver-php-scl --enablerepo=stephdl ... Résumé de la transaction ============================================================================================ Installation ( 3 Paquets en dépendance) Mettre à jour 1 Paquet (+52 Paquets en dépendance) Taille totale des téléchargements : 22 M ... Running transaction Mise à jour : php71-php-json-7.1.32-1.el7.remi.x86_64 1/109 ... Nettoyage : php71-php-common-7.1.29-1.el7.remi.x86_64 109/109 ... Mis à jour : nethserver-php-scl.x86_64 0:1.2.6-1.ns7.sdl ... Dépendances mises à jour : php71-php-bcmath.x86_64 0:7.1.32-1.el7.remi ... php73-php-xml.x86_64 0:7.3.9-1.el7.remi Terminé ! [root@tchana ~]#
On redémarre le service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
PostgreSQL
On procède à la mise à jour de PostgreSQL-11.
[root@tchana ~]# yum update -y --disablerepo=* --enablerepo=pgdg11 \ postgresql11 postgresql11-libs \ postgresql11-server postgresql11-contrib \ postgresql11-devel postgresql11-docs \ postgresql11-test ... Résumé de la transaction ============================================================================================ Mettre à jour 7 Paquets Taille totale des téléchargements : 22 M ... Mise à jour : postgresql11-libs-11.5-1PGDG.rhel7.x86_64 1/14 ... Nettoyage : postgresql11-docs-11.3-1PGDG.rhel7.x86_64 14/14 ... Mis à jour : postgresql11.x86_64 0:11.5-1PGDG.rhel7 postgresql11-contrib.x86_64 0:11.5-1PGDG.rhel7 postgresql11-devel.x86_64 0:11.5-1PGDG.rhel7 postgresql11-docs.x86_64 0:11.5-1PGDG.rhel7 postgresql11-libs.x86_64 0:11.5-1PGDG.rhel7 postgresql11-server.x86_64 0:11.5-1PGDG.rhel7 postgresql11-test.x86_64 0:11.5-1PGDG.rhel7 Terminé ! [root@tchana ~]#
Il faut redémarrer PostgreSQL et Flectra.
On redémarre le service PostgreSQL.
[root@tchana ~]# systemctl restart postgresql-11 [root@tchana ~]#
On redémarre le service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
Vérification du site Flectra
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se rend à notre site et on s'assure que tout fonctionne correctement: https://www.flectra.micronator-dev.org.
RH-Python36
Mise à jour de la Collection RH-Python36.
[root@tchana ~]# yum update -y --enablerepo=centos-sclo-rh rh-python36* ... Résumé de la transaction ============================================================================================ Mettre à jour 8 Paquets Taille totale des téléchargements : 19 M ... Mise à jour : rh-python36-python-3.6.3-7.el7.x86_64 1/16 ... Nettoyage : rh-python36-python-3.6.3-3.el7.x86_64 16/16 ... Mis à jour : rh-python36-python.x86_64 0:3.6.3-7.el7 rh-python36-python-debug.x86_64 0:3.6.3-7.el7 rh-python36-python-devel.x86_64 0:3.6.3-7.el7 rh-python36-python-jinja2.noarch 0:2.9.6-3.el7 rh-python36-python-libs.x86_64 0:3.6.3-7.el7 rh-python36-python-test.x86_64 0:3.6.3-7.el7 rh-python36-python-tkinter.x86_64 0:3.6.3-7.el7 rh-python36-python-tools.x86_64 0:3.6.3-7.el7 Terminé ! [root@tchana ~]#
On doit redémarrer le service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
Vérification du site Flectra
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Flectra et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour de PostgreSQL: https://www.flectra.micronator-dev.org/.
npm/node
Référence: https://fr.wikipedia.org/wiki/Npm.
L'utilitaire npm
est le gestionnaire officiel des paquets de Node.js. Depuis la version 0.6.3 de Node.js:
- 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.
[root@tchana ~]# npm --version 6.4.1 [root@tchana ~]#
Mise à jour
Mise à jour de npm/node.
[root@tchana ~]# npm install -g npm /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js /usr/bin/npx -> /usr/lib/node_modules/npm/bin/npx-cli.js + npm@6.11.3 added 61 packages from 18 contributors, removed 18 packages and updated 69 packages in 12.179s [root@tchana ~]#
Une mise à jour a été effectuée.
Vu qu'il y a eu une mise à jour, on doit redémarrer le service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
Vérification du site Flectra
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Flectra et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour de npm: https://www.flectra.micronator-dev.org/.
Retour à la version originalement installée
Au cas où la nouvelle version occasionnerait des problèmes, on peut retourner à la version originalement installée.
[root@tchana ~]# npm install -g npm@6.4.1 /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js /usr/bin/npx -> /usr/lib/node_modules/npm/bin/npx-cli.js + npm@6.4.1 added 15 packages from 11 contributors, removed 54 packages and updated 47 packages in 8.626s [root@tchana ~]#
On vérifie.
[root@tchana ~]# npm --version 6.4.1 [root@tchana ~]#
Redémarrage du service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Flectra et on vérifie que tout fonctionne correctement tel qu'avec la version de npm originalement installée: https://www.flectra.micronator-dev.org/.
less et less-plugin-clean-css
On vérifie la version actuelle de less
.
[root@tchana ~]# less --version less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less [root@tchana ~]#
On vérifie la version actuelle de lessc
.
[root@tchana ~]# lessc --version lessc 3.9.0 (Less Compiler) [JavaScript] [root@tchana ~]#
Pour éviter les erreurs de certificats SSL et de téléchargement.
[root@tchana ~]# npm config set strict-ssl false [root@tchana ~]#
Mise à jour de less
et de less-plugin-clean-css
.
[root@tchana ~]# npm install -g less less-plugin-clean-css /usr/bin/lessc -> /usr/lib/node_modules/less/bin/lessc + less-plugin-clean-css@1.5.1 + less@3.10.3 updated 7 packages in 4.233s [root@tchana ~]#
Sept paquets ont été mis à jour, on devra redémarrer le service Flectra après la vérification de
less
et lessc
.
On vérifie la version actuelle de less
.
[root@tchana ~]# less --version less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less [root@tchana ~]#
Il n'y a pas eu de mises à jour de less
. S'il y en avait eues, elles auraient été installées.
On vérifie la version actuelle de lessc
.
[root@tchana ~]# lessc --version lessc 3.10.3 (Less Compiler) [JavaScript] [root@tchana ~]#
Il y a eu une mise à jour de lessc
.
Redémarrage du service Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
Vérification du site Flectra
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Flectra et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour des deux paquets: https://www.flectra.micronator-dev.org/.
wkhtmltox
Dépendances pour wkhtmltopdf
Mise à jour des dépendances.
[root@tchana ~]# yum update -y fontconfig libpng libX11 libXext libXrender \ xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi Modules complémentaires chargés : changelog, fastestmirror, nethserver_events, protectbase Configuration du processus de mise à jour Loading mirror speeds from cached hostfile * base: centos.mirror.ca.planethoster.net ... No packages marked for update [root@tchana ~]#
wkhtmltox
Pour trouver la dernière version de wkhtmltopdf
on se rend à l'URL: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/.
La dernière version disponible est la même que celle qu'on a installée à la section wkhtmltox .
S'il y avait eu une nouvelle version, nous aurions pu l'installer de la même manière que celle que nous avons déjà installée.
Si des mises à jour ont été installées, il nous faut redémarrer Flectra.
[root@tchana ~]# systemctl restart flectra [root@tchana ~]#
Vérification du site Flectra
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Flectra et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour: https://www.flectra.micronator-dev.org/.
Serveur NethServer
De temps à autre, il faut mettre à jour le Serveur NethServer pour diverses raisons: suite à des mises à jour des logiciels qui composent NethServer, failles de sécurité découvertes par des utilisateurs ou des développeurs, etc.
La mise à jour du Serveur NethServer s'occupe aussi de celle de la Collection PHP.
Vérification du site Flectra
On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Flectra et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour NethServer: https://www.flectra.micronator-dev.org/.
Instantané VirtualBox
À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
Appendices
Les exemples de ce chapitre proviennent de la section
Appendices
du Cahier-04: DokuWiki du “Cours NethServer-201”.
Écran conventionnel de démarrage
Si nous voulons voir l'écran conventionnel de démarrage tel que ci-contre, il suffit de supprimer un seul paramètre dans le fichier de configuration de grub:
/etc/default/grub
Suppression du paramètre rhgb
Ligne originale dans le fichier /etc/default/grub
.
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap nodmraid rhgb quiet"
Après avoir enlevé le paramètre rhgb.
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap nodmraid quiet"
On signale le changement en régénérant le fichier de configuration.
[root@tchana ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-957.5.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-957.5.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-8ee070fd1a7a4e8daf17a7dae9f85ac1 Found initrd image: /boot/initramfs-0-rescue-8ee070fd1a7a4e8daf17a7dae9f85ac1.img done [root@tchana ~]#
Au prochain réamorçage, le nouveau fichier
grub
sera effectif.
Nom du serveur dans l'écran de connexion à Webmail
À l'écran de connexion à Webmail, dans le champ Serveur, le nom du domaine principal du serveur apparaît.
On peut supprimer complètement l'affichage de cette ligne. Utile surtout si nous avons plusieurs domaines hébergés sur le Serveur NethServer, car peu importe le domaine auquel nous nous connectons, c'est toujours le nom du domaine principal qui est affiché.
Pour supprimer l'affichage de cette ligne, il nous faut modifier le fichier de configuration de PHP:
/etc/roundcubemail/config.inc.php
et y ajouter la ligne suivante: config['default_host'] = '127.0.0.1';
.
Par contre, si nous modifions directement ce fichier, le prochain ré-amorçage écrasera la modification lorsque le serveur assemblera les gabarits de configuration du système.
Il nous faut donc créer un gabarit personnalisé et y insérer la nouvelle ligne de configuration. Ainsi, lors de l'assemblage des gabarits, le serveur incorporera le gabarit personnalisé au gabarit standard de configuration de PHP.
Création du répertoire pour le gabarit personnalisé.
[root@tchana ~]# mkdir -p /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php [root@tchana ~]#
On crée le fichier 91CacherNomDuServeur
et on y insère la ligne de configuration.
Prendre tout le contenu de l'encadré pour la commande.
cat > /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur <<'EOT' $config['default_host'] = '127.0.0.1'; EOT
On vérifie.
[root@tchana ~]# cat /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur $config['default_host'] = '127.0.0.1'; [root@tchana ~]#
Il n'y a pas de ligne vide avant $config… Nous en avons inséré une pour faciliter la copie de la commande.
On signale le changement.
[root@tchana ~]# expand-template /etc/roundcubemail/config.inc.php [root@tchana ~]#
On redémarre le démon httpd
.
[root@tchana ~]# systemctl restart httpd [root@tchana ~]#
On se rend à l'URL de connexion à Webmail: https://www.micronator-dev.org/webmail/. Le domaine du serveur ne s'affiche plus.
Sauvegarde
On vérifie si le nom du répertoire /etc/e-smith/templates-custom/etc/roundcubemail/
est déjà présent dans le fichier d'inclusion de la sauvegarde des données: /etc/backup-data.d/custom.include
, sinon on l'insère.
Prendre tout le contenu de l'encadré pour la commande.
NouvelleInclusion="/etc/e-smith/templates-custom/etc/roundcubemail/" if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n" else # L'entrée n'a pas été trouvée dans custom.include echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n" fi
On vérifie.
[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep roundcube /etc/e-smith/templates-custom/etc/roundcubemail/ [root@tchana ~]#
Ci-dessus, il n'y a pas de ligne vide avant /etc/e-smith/templates-custom/etc/roundcubemail/. Nous en avons inséré une afin de faciliter la copie de la commande.
Langue à la console du serveur
On affiche les langues offertes à la console du serveur.
[root@tchana ~]# localectl list-locales | grep fr_ fr_BE fr_BE.iso88591 fr_BE.iso885915@euro fr_BE.utf8 fr_BE@euro fr_CA fr_CA.iso88591 fr_CA.utf8 fr_CH fr_CH.iso88591 fr_CH.utf8 fr_FR fr_FR.iso88591 fr_FR.iso885915@euro fr_FR.utf8 fr_FR@euro fr_LU fr_LU.iso88591 fr_LU.iso885915@euro fr_LU.utf8 fr_LU@euro [root@tchana ~]#
On ajuste la langue désirée pour l'affichage. On choisit fr_FR.utf8
, car ce choix affectera aussi celui de la traduction pour l'interface Web. Pour l'instant, la traduction fr_FR
est plus avancé que celle de fr_CA
.
[root@tchana ~]# localectl set-locale LANG=fr_FR.utf8 [root@tchana ~]#
Dorénavant, la page de connexion offrira Français (France) comme langue par défaut au lieu de English (United States) si nous avons installé le module Langue Française.
On pourra vérifier, après le prochain redémarrage, en lançant la commande ci-dessous.
[root@tchana ~]# ls -als toto ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type [root@tchana ~]#
Langue de l'interface Web
On change la langue de l'interface.
Table de mappe de clavier
On affiche les différentes mappes de clavier8) “ca” disponibles.
[root@tchana ~]# localectl list-keymaps | grep ca ca ca-eng ca-fr-dvorak ca-fr-legacy ca-multi ca-multix dvorak-ca-fr es-cat ph-capewell-dvorak ph-capewell-qwerf2k6 [root@tchana ~]#
On active le clavier ca-multi.
[root@tchana ~]# localectl set-keymap ca-multi [root@tchana ~]#
On vérifie.
[root@tchana ~]# localectl System Locale: LANG=fr_FR.UTF-8 VC Keymap: ca-multi X11 Layout: us [root@tchana ~]#
Fermeture automatique de session (session timeout)
Référence: http://docs.nethserver.org/en/v7/access.html#session-timeouts.
Par défaut (à partir de NethServer 7.5.1804), une session de gestion du serveur se termine après 60 minutes d'inactivité (délai d'inactivité) et expire 8 heures après la connexion (durée de vie de la session).
La commande ci-dessous définit 2 heures de délai d'inactivité et 16 heures de durée de vie de la session maximale. Le temps est exprimé en secondes.
[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime 7200 MaxSessionLifeTime 57600 [root@tchana ~]#
Désactivation des délais.
[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime '' MaxSessionLifeTime '' [root@tchana ~]#
Les nouvelles valeurs de délais affecteront les nouvelles sessions. Ils ne changent aucune session active.
Fuseau horaire
Pour le fuseau horaire, il existe un fichier pour Montréal.
[root@tchana ~]# ls -ls /usr/share/zoneinfo/America/ -> grep Montreal 4 -rw-r--r-- 3 root root 3477 1 avril 08:27 Montreal [root@tchana ~]#
Changement du fuseau horaire
On affiche le fuseau horaire actuel.
[root@tchana ~]# ls -l /etc/localtime lrwxrwxrwx 1 root root 37 19 mai 23:48 /etc/localtime -> ../usr/share/zoneinfo/America/Toronto [root@tchana ~]#
On change le fuseau horaire pour celui de Montréal.
[root@tchana ~]# timedatectl set-timezone America/Montreal [root@tchana ~]#
On vérifie.
[root@tchana ~]# ls -l /etc/localtime lrwxrwxrwx 1 root root 38 22 mai 14:02 /etc/localtime -> ../usr/share/zoneinfo/America/Montreal [root@tchana ~]#
Voilà! Le fuseau horaire Montréal est récupéré…
Certificat Let's Encrypt
Description
Un certificat émis par l'autorité de certification Let's Encrypt vous permettra de chiffrer les connexions de votre serveur avec une clé TLS/SSL reconnue mondialement. Les utilisateurs pourront utiliser https.
Référence: https://fr.wikipedia.org/wiki/Let's_Encrypt.
Let's Encrypt est une autorité de certification (CA) lancée le 3 décembre 2015 (Bêta Version Publique). Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique TLS au moyen d'un mécanisme automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l'installation et le renouvellement des certificats pour la sécurisation des sites Internet.
Examen du certificat
On examine le certificat émis par Let's Encrypt pour notre serveur dorgee.micronator-101.org qui est directement branché à l'Internet.
Si la demande de certificat a fonctionnée sans erreur, essayez de vous connecter à la page de l'interface Web du Serveur NethServer. Le certificat devrait incorporer tous les noms d'hôtes que vous avez inclus et être valide pour les quatre-vingt-dix prochains jours.
On se connecte à l'interface Web: https://www.micronator-101.org:980.
- 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.
- 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.
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.
Martian source
Si dans le fichier journal /var/log/messages
, vous voyez plusieurs lignes telles que ci-dessous, c'est que l'IP de la passerelle du réseau vert de la carte enp0s3 ou les Serveurs DNS ne sont corrects.
...IPv4: martian source 192.168.1.1... ...IPv4: martian source 192.168.1.1... ...IPv4: martian source 192.168.1.1...
Passerelle du réseau de la carte enp0s3
On trouve notre passerelle en lançant un traceroute
vers google.com.
[root@dorgee ~]# traceroute google.com traceroute to google.com (172.217.165.14), 30 hops max, 60 byte packets 1 lo0-0-lns03-tor.teksavvy.com (206.248.155.139) 10.367 ms 11.449 ms 11.487 ms 2 ae0-2150-bdr01-tor.teksavvy.com (69.196.136.172) 11.523 ms 11.793 ms 11.826 ms 3 72.14.212.134 (72.14.212.134) 11.868 ms 12.430 ms 12.306 ms 4 74.125.244.161 (74.125.244.161) 12.736 ms 74.125.244.145 (74.125.244.145) 14.002 ms 74.125.244.161 (74.125.244.161) 13.174 ms 5 216.239.40.255 (216.239.40.255) 13.577 ms 13.923 ms 216.239.41.175 (216.239.41.175) 13.923 ms 6 yyz12s06-in-f14.1e100.net (172.217.165.14) 13.020 ms 12.009 ms 11.291 ms [root@dorgee ~]#
L'adresse IP de la ligne #1 est 206.248.155.139 et elle est donc la passerelle utilisée par notre connexion.
Configuration → Réseau → Périphérique enp0s3 → Éditer.
On change l'IP de la passerelle pour l'IP du rôle LAN (vert) / enp0s3 → 206.248.155.139.
SOUMETTRE.
Serveurs DNS
Référence: https://korben.info/1-1-1-1-ou-9-9-9-9-ou-8-8-8-8-quel-dns-choisir.html.
… Le DNS de Cloudflare est un excellent DNS, car il est le plus rapide, mais aussi parce qu'ils ont pris les devants et s'engagent à ne pas revendre les données, et ne conservent pas les logs au-delà de 24h…
Le principal avantage bien sûr, c'est que contrairement au DNS de Google qui permet de mieux vous profiler pour vous balancer de la pub, on sait que Cloudflare ne trempe pas là dedans. Cela reste une boîte américaine, donc c'est évidemment à prendre avec toutes les précautions d'usage…
Référence: pour 8.8.8.8 - https://www.dnsperf.com/dns-resolver/google.
Autre référence: comparaison mondiale des performances de différents DNS: https://medium.com/@nykolas.z/dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5.
Référence: pour ci-dessous 1.1.1.1 - https://www.dnsperf.com/#!dns-resolvers.
Configuration → Réseau → Serveurs DNS.
On ajuste les DNS Primaire et Secondaire.
Le serveur DNS primaire 1.1.1.1 est le plus rapide et le plus utilisée de tout l'Internet.
Le serveur DNS secondaire 206.248.182.3 est le défaut de notre FAI.
Soumettre.
Si votre FAI filtre l'adresse 1.1.1.1, prendre 8.8.8.8 ou une de celles citées dans la référence https://medium.com/@nykolas.z/dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5.
Serveur de production
Une fois que vous maîtrisez tous les aspects de: Flectra, Let's Encrypt, Fail2ban, ClamAV et de BackupPC, vous pouvez créer un réseau de Production incluant un serveur Flectra, un serveur de sauvegardes et un serveur de développement; ce qui est le but ultime que nous vous souhaitons.
Introduction à l'éditeur vi
Référence: http://www.iro.umontreal.ca/~dift3830/vi.html. (Dernière consultation, le 30 mai 2016. Novembre 2018, ce lien n'est plus fonctionnel.)
vi
est un éditeur de texte très puissant. Sa convivialité par contre lui fait défaut. Ceci dit, il est toujours utile d'en connaître les rudiments, car son omniprésence est presque garantie sur les systèmes modernes.
La documentation de vi
étant très abondante, on se limitera pour cette démo aux commandes les plus usuelles.
Tout d'abord l'invocation. On peut invoquer vi
à partir du shell de plusieurs façons dont en voici quelques-unes:
- vi
: → ouvre vi
avec un contenu vide.
- vi nom_de_fichier
: → ouvre un fichier et l'affiche à l'écran.
- vi +nom_de_fichier
: → ouvre un fichier et positionne le curseur à la fin de celui-ci.
Dès son invocation, vi
se met en mode commande, dans ce mode il est possible d'entrer les commandes qui seront vues plus bas. Si on tape une commande susceptible de modifier un texte (insertion d'un caractère par exemple), vi
bascule en mode édition; dans ce mode tout caractère tapé sera considéré comme faisant partie du texte, tandis que les caractères saisis en mode commande, seront eux interprétés comme étant des commandes et ne seront jamais rajoutés au texte.
Afin de basculer du mode édition au mode commande il suffit de presser la touche [Échap].
Nous allons commencer par invoquer vi
à partir du shell en tapant:
vi
Ce qui devrait donner l'affichage ci-contre:
vi
est déjà en mode commande, pour le faire passer en mode édition, on tape la commande i
(insert) qui nous permet d'insérer du texte.
i
Après avoir tapé le texte suivant:
vi est un éditeur de texte très utile pour la communauté des administrateurs.
On obtient l'affichage ci-contre.
Après cela, on pourrait passer en mode commande par simple pression sur la touche [Échap].
Une fois en mode commande, on voudrait par exemple, éliminer la ligne blanche qui se trouve juste après la première. Pour ce faire, on positionne le curseur a la hauteur de la 2e ligne et on tape dd
.
Ceci aura pour effet de supprimer la ligne.
Si on est satisfait, il ne nous reste plus qu'à sauvegarder le document sous le nom texte1.txt
à l'aide de la commande suivante:
:w texte1.txt
(Pour les sauvegardes ultérieures, il n'est pas nécessaire d'ajouter le nom du fichier).
Afin de quitter vi
il suffit de taper la commande:
:q texte1.txt
Les commandes abondent dans vi
, on n'en citera que quelques-unes.
|
|
---|---|
Commande | Effets |
i (insert) | Insère un texte sur le curseur |
I | Insère au début de la ligne |
a (append) | Insère après le curseur |
A | Insère à la fin de la ligne |
Les flèches | pour les déplacements |
Ctrl-F (forward) | Défiler d'un écran vers le bas |
Ctrl-B (backward) | Défiler d'un écran vers le haut |
nG (goto) | va à la nième ligne dans le texte |
G | Va à la fin du texte |
x | Effacer le caractère courant |
dd | Effacer la ligne courante |
D | Effacer depuis la position du curseur jusqu'à la fin de la ligne |
db (DeleteBegining) | Effacer depuis la position courante jusqu'au début de la ligne |
/chaîne | rechercher la chaîne 'chaîne' dans le texte, on peut taper 'n' pour voir les autres occurrences |
:w fichier | copie le texte courant sur le disque sous le nom fichier |
:wq (write & quit) | écrit le fichier sur le disque et quitte vi. |
:q! | Quitter sans sauvegarder. |
:set nu | Affiche le numérotage des lignes. |
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:
Version | Date | Commentaire | Auteur |
---|---|---|---|
0.0.1 | 2019-09-18 | Début. | Michel-André |
12345678901 | 12345678901 |
<html><hr style=“width:50%; margin: 0 auto;”></html>
AVIS DE NON-RESPONSABILITÉ
Ce document est uniquement destiné à informer. Les informations, ainsi que les contenus et fonctionnalités de ce document 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 directs 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 ordinateur 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.
Référence: https://fr.wikipedia.org/wiki/Fully_qualified_domain_name.
Référence: http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8351231.
Référence: man systemctl (1).
systemd
est rechargée (d'une manière équivalente à daemon-reload) pour garantir que les modifications sont prises en compte immédiatement. Référence: http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=18050861#eng.