Outils pour utilisateurs

Outils du site


nethserver_201_cahier_02_odoo_12

Table des matières



Description générale

Introduction

Le logiciel Odoo

Référence: http://fr.wikipedia.org/wiki/Odoo

Odoo, anciennement OpenERP et Tiny ERP, est initialement un progiciel open-source de gestion intégrée comprenant de très nombreux modules permettant de simplifier la gestion d'une société dans son ensemble. Le logiciel est utilisé par plus de deux millions d’utilisateurs pour gérer leur entreprise à travers le monde. Odoo est le système ERP open-source le plus populaire.

Il existe une version Communautaire gratuite, sous licence LGPLv3, et une version Entreprise sous licence propriétaire Odoo Enterprise EditionLicense v1.0.

À l’origine un ERP, le logiciel s’est vu étendre ses fonctionnalités à des applications de front office (CMS, e-commerce, blogs, forums, nouvelles, événements, chat en direct, offre d'emplois…).

L’aspect LIBRE du logiciel a permis le développement de nombreux modules tiers créés par sa communauté de développeurs. Ces applications sont pour certaines officiellement validées par l’éditeur tandis que d’autres ne sont destinées qu’à des versions spécifiques.

Le logiciel compte 260 modules officiels et 7300 modules communautaires.

En décembre 2012, la version 7.0 d'OpenERP est lancée et peut être testée en ligne, téléchargée ou vue en version de démonstration.

Mai 2014: OpenERP change de nom et devient Odoo.

La société éditrice OpenERP SA

OpenERP S.A. est également le nom de l’entreprise qui édite le logiciel. Dans ce document, on utilise le terme Odoo pour désigner le logiciel et OpenERP SA pour désigner l’entreprise de façon univoque.

Étapes

  1. Préparation de l'environnement de travail incluant l'installation de la Collection PHP.
  2. Installation du serveur de bases de données PostgreSQL-11.
  3. Installation de la Collection RH-Python36, pour ne pas interférer avec la version de Python fournie par défaut avec le Serveur NethServer.
  4. Installation des prérequis pour Odoo-12.
  5. Depuis GitHuB, téléchargement du code Odoo de la branche 12 et installation.
  6. Redirection sécurisée.
  7. Post-scriptum Odoo.
  8. Sauvegarde de la base de données PostgreSQL.
  9. Programmer un script de sauvegarde de la base de données PostgreSQL et créer une tâche cron qui l'activera quotidiennement. Ainsi, la sauvegarde PostgreSQL sera intégrée à la sauvegarde régulière du Serveur NethServer.
  10. Sauvegarde quotidienne NethServer.
  11. Mises à jour de: Odoo, PostgreSQL, RH-Python36, npm/node, less et less-plugin-clean-css, wkhtmltox, et du Serveur NethServer.

Ce tutoriel assume que vous avez réalisé une installation d'un Serveur NethServer-7.6.1810 sur votre réseau LOCAL et dédié à Odoo seulement. Il est aussi assumé que vous allez rouler Odoo-12 et PostgreSQL-11 sur le même serveur.

But de ce cahier

Installer et configurer Odoo-12 sur un Serveur NethServer-7.6.1810 virtuel sur le réseau LOCAL. Les procédures sont exactement les mêmes pour un Serveur NethServer physique directement branché ou non à l'Internet.


Cours NethServer-101

Le Cours NethServer-101, se voulant une base solide pour la création d'un site de Commerce en ligne, comprend plusieurs cahiers:

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

Cours NethServer-201

Le Cours NethServer-201 décrit l'installation et la configuration d'applications sur un serveur NethServer.

  1. Cahier-201-01: → Dolibarr.
  2. Cahier-201-02: → Odoo-12.
  3. Cahier-201-03: → MediaWiki.
  4. Cahier-201-04: → DokuWiki.
  5. Cahier-201-05: → Moodle.
  6. Cahier-201-06: → Proxmox.
  7. Cahier-201-07: → Flectra.

Logiciels

Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence GPL; ils ne coûtent pas un sou. Le seul achat nécessaire est l'obtention d'un nom de domaine au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD.

But final

Après avoir suivi le Cours NethServer-101, vous posséderez un site de Commerce en ligne fiable et hautement sécuritaire. De plus, vous pourrez utiliser un clone de votre site, sur un Serveur NethServer virtuel roulant sur votre poste de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de votre site en ligne.

Particularités de ce document

Notes au lecteur

* Les captures d'écrans ne sont que des références.
** Les informations écrites ont préséance sur celles retrouvées dans les captures d'écrans. Veillez vous référer aux différents tableaux lorsque ceux-ci sont présents.
*** Une capture d'écran avec une accentuation en magenta indique qu'il faut remplacer cette distinction par vos propres paramètres ou implique un choix laissé à votre appréciation.

Conventions

Manipulation, truc ou ruse pour se tirer d'embarras.
Une recommandation ou astuce.
Une note.
Une étape, note ou procédure à surveiller.
Paragraphe non complété ou non vérifié.
Danger pour la sécurité du système.

Toutes les commandes à la console ou à travers PuTTY sont précédées d'une invite qui est toujours présente.

[root@dorgee ~]# ping 10.10.10.75 -c1

PING 10.10.10.75 (10.10.10.75) 56(84) bytes of data.
64 bytes from 10.10.10.75: icmp_seq=1 ttl=64 time=1.63 ms

--- 10.10.10.75 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.639/1.639/1.639/0.000 ms
[root@dorgee ~]#
Commande à exécuter si ce n'est déjà fait.
Commande indiquée à titre d'information seulement.


À savoir

Diagramme réseau


Serveur NethServer-7.6.1810

Le Serveur NethServer-7.6.1810 est un dérivé de la distribution Linux CentOS et est équivalent à CentOS-7.6.1810.

dorgee.micronator.org

Serveur passerelle pour les connexions à l'Internet.
Serveur DHCP pour tout le réseau LOCAL.

tchana.micronator-dev.org

Serveur virtuel LOCAL sous VirtualBox Version 6.0.4 r128413 (Qt5.6.2).

Répertoire d'installation

Nous installerons Odoo dans le répertoire /opt/odoo/odoo12.

Poste de travail

Windows-8.1, on utilisera ce poste de travail pour tous 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-1010” pour l'installation et la configuration de cet éditeur.

Description

Référence: https://notepad-plus-plus.org/fr/.
Notepad++ est un éditeur de code source qui prend en charge plusieurs langages. Ce logiciel, codé en C++ avec STL et win32 api, a pour vocation de fournir un éditeur de code source de taille réduite mais très performant. En optimisant de nombreuses fonctions, tout en conservant une facilité d’utilisation et une certaine convivialité, Notepad++ contribue à la limitation des émissions de dioxyde de carbone dans le monde; en effet, en réduisant l’utilisation du CPU, la consommation d’énergie des ordinateurs chute considérablement, en conséquence de quoi, la terre est plus verte.

Site de téléchargement: https://notepad-plus-plus.org/fr/.

Documentation

Connexion sécuritaire

Ce document décrit aussi la marche à suivre pour une connexion sécuritaire (https) vers Odoo.

HTTPS (Hyper Text Transfer Protocol Secure) apparaît dans l'URL lorsqu'un site Web est sécurisé par un certificat SSL/TLS. Les détails du certificat, y compris l'autorité émettrice et la dénomination sociale du propriétaire du site Web, peuvent être consultés en cliquant sur l'icône du cadenas sur la barre du navigateur.

Préparation de l'environnement de travail

Configuration du poste de travail

Voir la section À savoir du 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 Odoo. 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 le mot de passe donné au cours du processus d’installation. Entrez ce justificatif et cliquez sur Login afin d’être amené à l'interface Web Nethserver. L’écran du gestionnaire s’affiche.

Le cadenas n'est pas vert, car nous n'avons pas encore de certificat émis par une autorité de certification reconnue. Plus loin, nous réglerons cet inconvénient

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

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

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


Fournisseur des comptes

Configuration → Fournisseur des comptes.

LDAP local est notre fournisseur de comptes.


FQDN du serveur

Configuration → DNS onglet Hôtes.

Le FQDN du serveur: micronator-dev.org est bien ce qu'il devrait être; micronator-101.ddns.net provient du Cahier-03: Création d'un Serveur NethServer virtuel, on peut le supprimer pour ce document.

Nom du serveur

Configuration → Nom du serveur.


Paramètres d'accès à distance

Sécurité → SSH.


FTP

Configuration → FTP onglet Configurer.

Le FTP ne doit pas être activé, Odoo 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 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 est 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 est 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.

* Collection PHP

Le but de la Collection PHP est d'installer PHP-5.6, PHP-7.0, PHP-7.1, PHP-7.2 et PHP-7.3 parallèlement à la version installée par défaut avec NethServer-7.6.1810, sans devoir supprimer ou modifier cette dernière. Cette Collection utilise les RPM du référentiel remi qui sont en fait, les mêmes que ceux sur le site Web officiel, mais ils ont l'avantage de fournir plus de choix. Cette Collection nécessite d'installer le référentiel stephdl.

Prérequis pour l'installation de la Collection PHP

Référence: https://wiki.nethserver.org/doku.php?id=php-scl.
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.

[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

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

Vérification

[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 (+127 Paquets en dépendance)

Taille totale des téléchargements : 47 M
Taille d'installation : 134 M
...
  Installation : scl-utils-20130529-19.el7.x86_64                                     1/128
...
  Installation : nethserver-php-scl-1.2.4-1.ns7.sdl.x86_64                          128/128
  Vérification : 1:enchant-1.6.0-8.el7.x86_64                                         1/128
...
  Vérification : php72-php-tidy-7.2.18-1.el7.remi.x86_64                            128/128

Installé :
  nethserver-php-scl.x86_64 0:1.2.4-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: stephd arobas de-labrusse point fr.

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

  1. À la page Gestion → Hôtes virtuels.

Là, après avoir créé un hôte virtuel, vous pouvez choisir la version que vous utiliserez pour l'Ibay/virtualhost (par défaut, la version PHP d’Apache).
- Vu que NethServer utilise un script CGI pour gérer la version de PHP, vous ne pourrez pas ajuster les paramètres PHP avec le module nethserver-phpsettings; vous devez régler les paramètres à l'aide du fichier php.ini correspondant. Stéphane de Labrusse voulait coder quelque chose de “cool” afin que tous les paramètres ne soient pas basés uniquement sur des commandes de BD… Il a alors crée une page de configuration.

  1. À la page Configuration → Paramètres PHP.
    Là, vous pouvez choisir la version PHP que vous souhaitez utiliser pour l’ensemble du serveur.
    - Lorsqu'Apache est le gestionnaire de PHP, vous pouvez alors définir les paramètres PHP avec le module nethserver-phpsettings. En d'autres termes, si vous souhaitez utiliser le module nethserver-phpsettings et que vous avez besoin d'une version spécifique de PHP, vous devez utiliser cette version pour tout le serveur. Bien sûr, vous pouvez revenir à la version par défaut en cas de problème avec une ancienne application Web. Dans d’autres parties de cette page, 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.

[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 May 10 17:06 remi
0 drwxr-xr-x  2 root root  6 Oct 30  2018 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 16 mai   13:03 php56
0 dr-xr-xr-x 3 root root 32 16 mai   13:03 php70
0 dr-xr-xr-x 3 root root 32 16 mai   13:03 php71
0 dr-xr-xr-x 3 root root 32 16 mai   13:03 php72
0 dr-xr-xr-x 3 root root 32 16 mai   13:03 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 à la 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 16 mai   13:11 /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-

centos-release-scl-rh-2-3.el7.centos.noarch
centos-release-scl-2-3.el7.centos.noarch
nethserver-php-scl-1.2.4-1.ns7.sdl.x86_64
scl-utils-20130529-19.el7.x86_64
[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.18 (cli) (built: Apr 30 2019 14:41:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
[root@tchana ~]#

Notre fichier activer-php72.sh fonctionne correctement.

Sauvegarde

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:

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

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

Certains ajouts doivent 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.


Version PHP par défaut

On définit la version PHP par défaut pour Apache.

Configuration → Paramètres PHP → onglet Version PHP Apache → cliquer Php72 SCL Version → SOUMETTRE.


Ajustements des paramètres de la version PHP-7.2

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

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


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

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

Vérifications à la ligne de commande

MemoryLimit

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

memory_limit                           = 250M
[root@tchana ~]#

PostMaxSize

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

post_max_size                          = 100M
[root@tchana ~]#

UploadMaxFilesize

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

upload_max_filesize                    = 75M

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

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.

Les prérequis pour le Serveur NethServer sont tous remplis.


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 rends 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 (clic droit) sur CentOS 7 - x86 64 et on copie l'a­dres­se du lien.

Le lien du référentiel PostgreSQL pour notre serveur est:
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Installation du référentiel

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

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

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

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

[root@tchana ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Modules complémentaires chargés : changelog, fastestmirror, nethserver_events
pgdg-redhat-repo-latest.noarch.rpm                                   | 5.6 kB  00:00:00
Examen de /var/tmp/yum-root-DVkWkS/pgdg-redhat-repo-latest.noarch.rpm : pgdg-redhat-repo-42.0-4.noarch
Sélection de /var/tmp/yum-root-DVkWkS/pgdg-redhat-repo-latest.noarch.rpm pour installation
Résolution des dépendances
--> Lancement de la transaction de test
---> Le paquet pgdg-redhat-repo.noarch 0:42.0-4 sera installé
--> Résolution des dépendances terminée

Dépendances résolues

============================================================================================
 Package               Architecture
                                   Version       Dépôt                                Taille
============================================================================================
Installation :
 pgdg-redhat-repo      noarch      42.0-4        /pgdg-redhat-repo-latest.noarch      6.8 k

Résumé de la transaction
============================================================================================
Installation   1 Paquet

Taille totale  : 6.8 k
Taille d'installation : 6.8 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installation : pgdg-redhat-repo-42.0-4.noarch                                         1/1
  Vérification : pgdg-redhat-repo-42.0-4.noarch                                         1/1

Installé :
  pgdg-redhat-repo.noarch 0:42.0-4

Terminé !
[root@tchana ~]#

Le référentiel PostgreSQL est installé.

Installation

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

[root@tchana ~]# yum install -y --enablerepo=pgdg11                          \
                                postgresql11         postgresql11-libs       \
                                postgresql11-server  postgresql11-contrib    \
                                postgresql11-devel   postgresql11-docs       \
                                postgresql11-test

...
Install  7 Packages (+1 Dependent package)

Total download size: 23 M
Installed size: 89 M

...
Installed:
  postgresql11.x86_64 0:11.3-1PGDG.rhel7
  postgresql11-contrib.x86_64 0:11.3-1PGDG.rhel7
  postgresql11-devel.x86_64 0:11.3-1PGDG.rhel7
  postgresql11-docs.x86_64 0:11.3-1PGDG.rhel7
  postgresql11-libs.x86_64 0:11.3-1PGDG.rhel7
  postgresql11-server.x86_64 0:11.3-1PGDG.rhel7
  postgresql11-test.x86_64 0:11.3-1PGDG.rhel7

Dependency Installed:
  libicu-devel.x86_64 0:50.1.2-17.el7

Complete!
[root@tchana ~]#

On vérifie l'installation.

[root@tchana ~]# rpm -qi postgresql11-server

Name        : postgresql11-server
Version     : 11.3
Release     : 1PGDG.rhel7
Architecture: x86_64
Install Date: jeu. 16 mai 2019 17:27:20 EDT
Group       : Applications/Databases
Size        : 19562871
License     : PostgreSQL
Signature   : DSA/SHA1, mer. 08 mai 2019 05:41:15 EDT, Key ID 1f16d2e1442df0f8
Source RPM  : postgresql11-11.3-1PGDG.rhel7.src.rpm
Build Date  : mer. 08 mai 2019 05:37:39 EDT
Build Host  : koji-centos7-x86-64-pgbuild
Relocations : (not relocatable)
Vendor      : PostgreSQL Global Development Group
URL         : https://www.postgresql.org/
Summary     : The programs needed to create and run a PostgreSQL server
Description :
PostgreSQL is an advanced Object-Relational database management system (DBMS).
The postgresql11-server package contains the programs needed to create
and run a PostgreSQL server, which will in turn allow you to create
and maintain PostgreSQL databases.
[root@tchana ~]#

Protection du référentiel

Références: http://lxsoft106.cern.ch/cern/centos/7.6.1810/updates/x86_64/repoview/yum-plugin-protectbase.html
Références: https://www.cyberciti.biz/faq/rhel-centos-fedora-yum-protect-packages-from-certain-repositories/.

Nous voulons protéger le référentiel [pgdg11] afin que ses paquets ne soient pas mis à jour par aucun autre référentiel.

On installe le paquet yum-plugin-protectbase.

[root@tchana ~]# yum install -y yum-plugin-protectbase

...
Résumé de la transaction
============================================================================================
Installation   1 Paquet

Taille totale des téléchargements : 27 k
Taille d'installation : 22 k
...
Installé :
  yum-plugin-protectbase.noarch 0:1.1.31-50.el7

Terminé !
[root@tchana ~]#

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

[root@tchana ~]# rpm -qi yum-plugin-protectbase

Name        : yum-plugin-protectbase
Version     : 1.1.31
Release     : 50.el7
Architecture: noarch
Install Date: jeu. 16 mai 2019 23:15:00 EDT
Group       : System Environment/Base
Size        : 22696
License     : GPLv2+
Signature   : RSA/SHA256, lun. 12 nov. 2018 10:27:29 EST, Key ID 24c6a8a7f4a80eb5
Source RPM  : yum-utils-1.1.31-50.el7.src.rpm
Build Date  : mar. 30 oct. 2018 18:58:13 EDT
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://yum.baseurl.org/download/yum-utils/
Summary     : Yum plugin to protect packages from certain repositories.
Description :
This plugin allows certain repositories to be protected. Packages in the
protected repositories can't be overridden by packages in non-protected
repositories even if the non-protected repo has a later version.
[root@tchana ~]#

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

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

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

Protection de pgdg11

On protège le référentiel [pgdg11] en éditant le fichier: /etc/yum.repos.d/pgdg-redhat-all.repo et en ajoutant la ligne protect = 1 à la fin de la section définissant le référentiel [pgdg11].

...
[pgdg11]
name=PostgreSQL 11 $releasever - $basearch
baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
protect = 1

...

Tous les paquets du référentiel [pgdg11] sont maintenant protégés contre toutes mises à jour provenant de tous autres référentiels.

On vérifie.

[root@tchana ~]# cat /etc/yum.repos.d/pgdg-redhat-all.repo | grep protect  -n6

10-[pgdg11]
11-name=PostgreSQL 11 $releasever - $basearch
12-baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch
13-enabled=1
14-gpgcheck=1
15-gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
16:protect = 1
17-
18-[pgdg10]
19-name=PostgreSQL 10 $releasever - $basearch
20-baseurl=https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-$releasever-$basearch
21-enabled=1
22-gpgcheck=1
[root@tchana ~]#

Initialisation de la BD

On initialise la BD.

Peut prendre un certain temps.

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

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

Activation du service PostgreSQL

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

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

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service.
[root@tchana ~]#

On démarre le service PostgreSQL.

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

[root@tchana ~]#

On examine le statut du service PostgreSQL.

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

● postgresql-11.service - PostgreSQL 11 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled)
   Active: active (running) since jeu. 2019-05-16 17:36:27 EDT; 12s ago
     Docs: https://www.postgresql.org/docs/11/static/
  Process: 5709 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 5715 (postmaster)
   CGroup: /system.slice/postgresql-11.service
           ├─5715 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
           ├─5717 postgres: logger
           ├─5719 postgres: checkpointer
           ├─5720 postgres: background writer
           ├─5721 postgres: walwriter
           ├─5722 postgres: autovacuum launcher
           ├─5723 postgres: stats collector
           └─5724 postgres: logical replication launcher

mai 16 17:36:27 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database se....
mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.840 EDT …432
mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.845 EDT …2 »
mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.850 EDT …2 »
mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.864 EDT …ces
mai 16 17:36:27 tchana.micronator-dev.org postmaster[5715]: 2019-05-16 17:36:27.864 EDT … ».
mai 16 17:36:27 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@tchana ~]#

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

PostgreSQL-11 - Premiers pas

Cette section est inspirée de l'article suivant: https://wiki.postgresql.org/wiki/First_steps et sert à démontrer quelques commandes à la console psql.

Connexion

On se connecte au Serveur NethServer en tant que root puis on change d'utilisateur pour devenir le super-utilisateur postgres.

[root@tchana ~]# su - postgres

-bash-4.2$

On vérifie.

-bash-4.2$ whoami

postgres
-bash-4.2$

On lance la console PostgreSQL.

-bash-4.2$ psql

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

postgres=#

On vérifie que l'aide fonctionne correctement.

postgres=# HELP

Vous utilisez psql, l'interface en ligne de commande de PostgreSQL.
Saisissez:
    \copyright pour les termes de distribution
    \h pour l'aide-mémoire des commandes SQL
    \? pour l'aide-mémoire des commandes psql
    \g ou point-virgule en fin d'instruction pour exécuter la requête
    \q pour quitter
postgres=#

SCHEMA

Une base de données contient un ou plusieurs schémas, qui eux, contiennent des tables. Les schémas con­tien­nent aussi d'autres types d'objets y compris des types de données, fonctions et opérateurs. Seul le nom d'objet peut être utilisé sans conflit c.-à-d. schema1 et mon_schema t peuvent tous les deux contenir des tables mytable. Contrairement aux bases de données; les schémas ne sont pas séparés de manière rigide; un utilisateur peut accéder aux objets de n'importe lequel des schémas de la base de données auxquels il se connecte s'il a les privilèges pour le faire.

On crée un schéma qu'on appellera test dans la base de données par défaut appelée postgres.

postgres=# CREATE SCHEMA test;

CREATE SCHEMA
postgres=#

RÔLE

Un rôle est une entité qui peut posséder des objets de la base de données et avoir des droits sur celle-ci. Il peut être considéré comme un “utilisateur”, un “groupe” ou les deux suivant la façon dont il est utilisé.

On crée un rôle (utilisateur) et on lui octroie un mot de passe.

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

postgres=# CREATE USER toto PASSWORD 'fghtbgh';

CREATE ROLE
postgres=#

GRANT

La commande GRANT a deux variantes: la première donne des droits sur un objet de la base de données (table, vue, séquence, base de données, fonction, langage de procédure, schéma ou espace logique), la seconde gère les appartenances à un rôle.

On donne au nouveau rôle tous les droits (tel que la possibilité de créer des tables) sur le nouveau schéma.

postgres=# GRANT ALL ON SCHEMA test TO toto;

GRANT
postgres=#

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

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

GRANT
postgres=#

Sortie de la console PostgreSQL

On quitte la console PostgreSQL.

postgres=# \q

-bash-4.2$

On retourne à l'utilisateur root.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

Utilisateur standard Linux (toto) et PostgreSQL

On crée un utilisateur standard Linux.

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

[root@tchana ~]#


On vérifie.

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

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

On lui octroie un mot de passe.

[root@tchana ~]# passwd toto

Changement de mot de passe pour l'utilisateur toto.
Nouveau mot de passe : mot-de-passe-pour-toto
Retapez le nouveau mot de passe : mot-de-passe-pour-toto
passwd : mise à jour réussie de tous les jetons d'authentification.
[root@tchana ~]#

On se substitue à l'utilisateur toto.

[root@tchana ~]# su - toto

toto@tchana ~]$

Si nous ne sommes pas root et que nous changeons d'utilisateur, il faudra entrer le mot de passe demandé qui est alors celui de l'utilisateur auquel on veut se substituer.

-bash-4.2$ su - toto

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

Connexion à la BD avec un utilisateur standard

Par défaut, le mode d'authentification pour se loguer dans PostgreSQL est “ident” qui signifie qu'un utilisateur xxx de Linux ne peut se connecter qu'en tant qu'utilisateur PostgreSQL xxx.

On se logue, en tant qu'utilisateur ordinaire (toto qui a été créé précédemment dans PostgreSQL par le super-utilisateur postgres) à la base de données par défaut c'est-à-dire la BD postgres.

-bash-4.2$ psql -d postgres

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

postgres=>

HELP

On essaie l'aide.

postgres=> HELP

Vous utilisez psql, l'interface en ligne de commande de PostgreSQL.
Saisissez:
    \copyright pour les termes de distribution
    \h pour l'aide-mémoire des commandes SQL
    \? pour l'aide-mémoire des commandes psql
    \g ou point-virgule en fin d'instruction pour exécuter la requête
    \q pour quitter
postgres=>

CREATE

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

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

CREATE TABLE
postgres=>

INSERT

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

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

INSERT 0 1
postgres=>

SELECT

Sélection depuis une table.

postgres=> SELECT * from test.test;

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

postgres=>

Tout fonctionne correctement.

Déconnexion

L'utilisateur toto quitte la console PostgreSQL.

postgres=> \q

-bash-4.2$

On vérifie qui on est.

-bash-4.2$ whoami

toto
-bash-4.2$

On retourne à l'utilisateur root.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

Suppression de l'utilisateur standard toto

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

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

[root@tchana ~]#

On vérifie.

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

[root@tchana ~]#

Nettoyage de PostgreSQL

Suppression du SCHEMA test

On se substitue au super-utilisateur postgres.

[root@tchana ~]# su - postgres

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

On vérifie.

-bash-4.2$ whoami

postgres
-bash-4.2$

On lance la console PostgreSQL.

-bash-4.2$ psql

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

On affiche les SCHEMA.

postgres=# \dn

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

postgres=#

On supprime le SCHEMA test.

postgres=# DROP SCHEMA test CASCADE;

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

On vérifie la suppression.

postgres=# \dn

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

postgres=#

Suppression de l'utilisateur PostgreSQL toto

postgres=# DROP USER toto;

DROP ROLE
postgres=#

On vérifie la suppression.

postgres=# \du

                                              Liste des rôles
 Nom du rôle |                                    Attributs                                    | Membre de
-------------+---------------------------------------------------------------------------------+-----------
 postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {}

postgres=#

On quitte la console PostgreSQL.

postgres=# \q

-bash-4.2$

On quitte la substitution d'utilisateur.

-bash-4.2$ exit

déconnexion
[root@tchana ~]#

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

[root@tchana ~]# whoami

root
[root@tchana ~]#

PostgreSQL-11 fonctionne correctement.


PostgreSQL-11 - Configuration finale

MD5

Maintenant, il nous faut configurer PostgreSQL pour qu'il accepte les connexions avec mots de passe chiffrés MD5 pour être ainsi compatible avec les modules Python.

On vérifie qu'on est bien root.

[root@tchana ~]# whoami

root
[root@tchana ~]#

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

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

[root@tchana ~]#

On vérifie.

[root@tchana ~]# cat /var/lib/pgsql/11/data/pg_hba.conf | grep md5

# METHOD can be "trust", "reject", "md5", "password", "scram-sha-256",
# Note that "password" sends passwords in clear text; "md5" or
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
[root@tchana ~]#

Création de l'utilisateur Linux odoo

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 odoo sera le répertoire /opt/odoo, ainsi tout le contenu de ce répertoire aura comme propriétaire:groupe odoo:odoo.

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

[root@tchana ~]#

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

[root@tchana ~]# passwd odoo

Changement de mot de passe pour l'utilisateur odoo.
Nouveau mot de passe : mot-de-passe-robuste-pour-odoo
MOT DE PASSE INCORRECT : Le mot de passe comporte moins de 8 caractères
Retapez le nouveau mot de passe : mot-de-passe-robuste-pour-odoo
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 odoo"

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 odoo a été créé dans PostgreSQL par le super-utilisateur postgres et non dans le Serveur NethServer.

Sécurité

Sécurité de base

Pour commencer, gardez à l'esprit que la sécurisation d'un système d'information est un processus continu et non pas une opération ponctuelle. A tout moment, vous ne serez pas plus sécurisé que le maillon le plus faible de votre environnement.

Alors, s'il vous plaît, ne prenez pas cette section comme la liste ultime des mesures qui préviendront tous les problèmes de sécurité. Elle est seulement conçue comme un résumé des premières mesures importantes que vous devriez être certain d'inclure dans votre plan d'action de sécurité. Le reste proviendra des meilleures pratiques de sécurité pour votre système d'exploitation/distribution de même que des meilleures pratiques en termes d'utilisateurs, mot de passe, gestion du contrôle d'accès, etc.

Lors du déploiement d'un serveur connecté à l'Internet, veillez à prendre en compte les sujets suivants relatifs à la sécurité:

  1. 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é. Voir la prochaine section: Sécurité du gestionnaire des bases de données.


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


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


  1. Une fois que vos paramètres db_name et db_filter sont configurés et ne correspondent qu'à une seule base de données par nom d'hôte, vous devez définir l'option de configuration list_db à False pour empêcher l'affichage complet des bases de données et bloquer l'accès aux écrans de gestion de BD. (Ce paramètre est également présenté comme option de ligne de commande: –no-database-list.)


  1. Assurez-vous que l'utilisateur –db_user n'est pas un super-utilisateur et que vos bases de données appartiennent à un utilisateur différent. Par exemple, elles pourraient être la propriété du super-utilisateur postgres si vous utilisez un utilisateur db_user non privilégié.


  1. 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 de https://www.odoo.com/page/download ou de http://nightly.odoo.com.


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


  1. Exécutez Odoo 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”.


  1. 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. Voir HTTPS server sur la page de référence.


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


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

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


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


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


Odoo-12 - Prérequis

Odoo-12 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 compiler avant leur installation.
Comme la présence de gcc sur un serveur est un bris majeur de sécurité, une fois l'installation d'Odoo terminée, on le désinstallera et on fera de même de sa dépendance cpp. Voir le paragraphe 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 Odoo.

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 référentiel [npm].
On installe Node.js-v10.15.3 qui installera npm.

Les versions disponibles se trouvent à l'URL: https://nodejs.org/download/release/.

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

Référence: https://wiki.contribs.org/Odoo.
Les wkhtmltox disponibles à partir de CentOS ou du référentiel EPEL sont d'une version inférieure à celle requise par Odoo. 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 pas de 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]#

Installation de 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 (clic droit) sur le fichier:
wkhtmltox-0.12.5-1.centos7.x86_64.rpm

Copier l'a­dresse 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, 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 Odoo-12 sont remplis, on est prêt pour l'installation.


Odoo-12 - Installation

Pare-feu

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

[root@tchana ~]# config set fw_odoo service status enabled TCPPort 8069 access green

[root@tchana ~]#

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

[root@tchana ~]# config set fw_odoo service status enabled TCPPort 8069 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 8069

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

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

On affiche la configuration du port ouvert pour Odoo.

[root@tchana ~]# config show fw_odoo

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

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

git clone Odoo-12

On se substitue à l'utilisateur odoo.
Remarquez le changement de l'invite.

[root@tchana ~]# su - odoo

[odoo@tchana ~]$

On vérifie quel utilisateur nous sommes.

[odoo@tchana ~]$ whoami

odoo
[odoo@tchana ~]$

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

[odoo@tchana ~]$ pwd

/var/lib/nethserver/vhost/odoo/odoo
[odoo@tchana ~]$

On emploie l'utilitaire git pour télécharger la branche 12.0 d'Odoo dans le répertoire /opt/odoo/odoo12.

[odoo@tchana ~]$ git clone https://github.com/odoo/odoo.git --branch 12.0 --depth=1 /opt/odoo/odoo12

Cloning into '/opt/odoo/odoo12'...
remote: Enumerating objects: 24260, done.
remote: Counting objects: 100% (24260/24260), done.
remote: Compressing objects: 100% (18984/18984), done.
remote: Total 24260 (delta 7229), reused 15015 (delta 4465), pack-reused 0
Receiving objects: 100% (24260/24260), 100.42 MiB | 326.00 KiB/s, done.
Resolving deltas: 100% (7229/7229), done.
Checking out files: 100% (21766/21766), done.
[odoo@tchana ~]$

Environnement virtuel pour l'utilisateur odoo

On active Python-36.

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

[odoo@tchana ~]$

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

[odoo@tchana ~]$ python3 -m venv odoo12-venv

[odoo@tchana ~]$

On active l'environnement virtuel.

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

(odoo12-venv) [odoo@tchana ~]

requirements.txt

C'est ici que gcc est utilisé pour la compilation des exigences d'Odoo.

On installe toutes les exigences contenues dans le fichier requirements.txt.

(odoo12-venv) [odoo@tchana ~]$ pip3 install -r /opt/odoo/odoo12/requirements.txt

Ignoring gevent: markers 'sys_platform != "win32" and python_version >= "3.7"' don't match your environment
...
Collecting Babel==2.3.4 (from -r /opt/odoo/odoo12/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/b4/ec/acd307eac2e23f9cab1c8bdbe29b3b1d43215e31c32f8aa91b3a97925b5b/Babel-2.3.4-py2.py3-none-any.whl (7.1MB)
    100% |████████████████████████████████| 7.1MB 152kB/s
...
Building wheels for collected packages: ebaysdk, feedparser, gevent, greenlet, html2text, lxml, Mako, MarkupSafe, ofxparse, psutil, pydot, pyldap, PyPDF2, pyusb, reportlab, suds-jurko, vatnumber, vobject, olefile
...
Successfully built ebaysdk feedparser gevent greenlet html2text lxml Mako MarkupSafe ofxparse psutil pydot pyldap PyPDF2 pyusb reportlab suds-jurko vatnumber vobject olefile
Installing collected packages: pytz, Babel, chardet, decorator, docutils, lxml, urllib3, certifi, idna, requests, ebaysdk, feedparser, greenlet, gevent, html2text, MarkupSafe, Jinja2, libsass, Mako, pbr, mock, num2words, soupsieve, beautifulsoup4, ofxparse, passlib, olefile, Pillow, psutil, psycopg2, pyparsing, pydot, pyldap, PyPDF2, pyserial, python-dateutil, pyusb, qrcode, reportlab, suds-jurko, python-stdnum, vatnumber, vobject, Werkzeug, XlsxWriter, xlwt, xlrd
...
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 Werkzeug-0.11.15 XlsxWriter-0.9.3 beautifulsoup4-4.7.1 certifi-2019.3.9 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 libsass-0.12.3 lxml-3.7.1 mock-2.0.0 num2words-0.5.6 ofxparse-0.16 olefile-0.46 passlib-1.6.5 pbr-5.2.0 psutil-4.3.1 psycopg2-2.7.3.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 soupsieve-1.9.1 suds-jurko-0.6 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.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(odoo12-venv) [odoo@tchana ~]$

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

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

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

exit
[odoo@tchana ~]$

On quitte la substitution d'utilisateur.

[odoo@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/odoo"
for NAME in $DIR
do
if [ ! -d $NAME ]; then
   mkdir $NAME
   chown odoo.odoo $NAME
   chmod 700 $NAME
fi
done

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

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

4 drwx------ 2 odoo odoo 6 17 mai   12:02 /var/log/odoo
[root@tchana ~]#

logrotation

Nous autorisons la rotation du journal odoo-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/odoo-server << EOF
/var/log/odoo/odoo-server.log {

# Fichier de logrotate pour /var/log/odoo/odoo-server.log
# Michel-André 2018-06-1_22h00  Modification: 2019-05-17 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 odoo odoo
}
EOF

On vérifie la création du fichier.

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

4 -rw-r--r-- 1 root root 776 17 mai  12:05 /etc/logrotate.d/odoo-server
[root@tchana ~]#

On vérifie son contenu.

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

/var/log/odoo/odoo-server.log {

# Fichier de logrotate pour /var/log/odoo/odoo-server.log
# Michel-André 2018-06-1_22h00  Modification: 2019-05-17 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 odoo odoo
}
[root@tchana ~]#

Il n'y a pas de ligne vide avant /var/log/odoo/odoo-server.log {. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.

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

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

Sauvegarde

On vérifie si le nom du fichier /etc/logrotate.d/odoo-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/odoo-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/odoo-server

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

Ci-dessus, il n'y a pas de ligne vide avant /etc/logrotate.d/odoo-server. Nous en avons inséré une afin de faciliter la copie de la commande.

Fichier de configuration: /etc/odoo-server.conf

Pour débuter, nous activons log_handler = :DEBUG pour voir tous les messages d'Odoo 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/odoo-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_user = odoo
db_password = fghtbgh
; PARAMÈTRES DIVERS
addons_path = /opt/odoo/odoo12/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/odoo/odoo-server.log
; MAR - Ceci est le défault
;log_handler = werkzeug:WARNING
; MAR - Pour voir tous les messageS d'Odoo, on active à :DEBUG
log_handler = :DEBUG
;log_level = warn
no-logrotate = True
EOT

On vérifie.

[root@tchana odoo]# cat /etc/odoo-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_user = odoo
db_password = fghtbgh
; PARAMÈTRES DIVERS
addons_path = /opt/odoo/odoo12/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/odoo/odoo-server.log
; MAR - Ceci est le défault
;log_handler = werkzeug:WARNING
; MAR - Pour voir tous les messageS d'Odoo, on active à :DEBUG
log_handler = :DEBUG
;log_level = warn
no-logrotate = True
[root@tchana html]#

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/odoo-server.conf

4 -rw-r--r-- 1 root root 639 17 mai   12:06 /etc/odoo-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/odoo-server.conf

[root@dorgee ~]#

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

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

[root@dorgee ~]#

On vérifie.

[root@dorgee ~]# ls -ls /etc/odoo-server.conf

4 -r-xr-x--- 1 odoo odoo 639 17 mai   12:06 /etc/odoo-server.conf
[root@dorgee ~]#

Départ/Arrêt automatique

On veut qu'Odoo-12 se lance automatiquement à tous les amorçages du Serveur NethServer. Pour ce faire, on crée le fichier /etc/systemd/system/odoo12.service.

Fichier /etc/systemd/system/odoo12.service

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

cat > /etc/systemd/system/odoo12.service <<'EOT'
[Unit]
Description=Odoo12
Requires=postgresql-11.service
After=network.target postgresql-11.service

[Service]
Type=simple
SyslogIdentifier=odoo12
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/usr/bin/scl enable rh-python36 -- /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/odoo-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/odoo12.service

4 -rw-r--r-- 1 root root 394 17 mai   12:09 /etc/systemd/system/odoo12.service
[root@tchana ~]#

On vérifie son contenu.

[root@tchana ~]# cat /etc/systemd/system/odoo12.service

[Unit]
Description=Odoo12
Requires=postgresql-11.service
After=network.target postgresql-11.service

[Service]
Type=simple
SyslogIdentifier=odoo12
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/usr/bin/scl enable rh-python36 -- /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/odoo-server.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

[root@tchana ~]#

Premier démarrage d'Odoo12

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

[root@tchana ~]# systemctl daemon-reload

[root@tchana ~]#

La première fois qu'on lance Odoo, on utilise les paramètre enable et –now.

[root@tchana ~]# systemctl enable odoo12 --now

Created symlink from /etc/systemd/system/multi-user.target.wants/odoo12.service to /etc/systemd/system/odoo12.service.
[root@tchana ~]#

Vérification

Peut prendre quelques secondes avant qu'Odoo soit complètement démarré.

[root@tchana ~]# systemctl status odoo12

● odoo12.service - Odoo12
   Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled)
   Active: active (running) since ven. 2019-05-17 12:11:23 EDT; 15s ago
 Main PID: 25491 (scl)
   CGroup: /system.slice/odoo12.service
           ├─25491 /usr/bin/scl enable rh-python36 -- /opt/odoo/odoo12-venv/bin/python3 /...
           ├─25492 /bin/bash /var/tmp/sclETpjVl
           └─25495 /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/od...

mai 17 12:11:23 tchana.micronator-dev.org systemd[1]: Started Odoo12.
[root@tchana ~]#

Finalisation de l'installation

Accès à Odoo

Autoriser les témoins et activer JavaScript du fureteur Internet.
● On se rend à la page de notre site Odoo en spécifiant le port :8069. http://www.micronator-dev.org:8069 ou http://10.10.10.75:8069.

* 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/odoo-server.conf à la ligne db_password = fghtbgh, voir la section Fichier de configuration: /etc/odoo-server.conf.

Database name:
Le nom de la base de données que créera l'installation: Odoo-12.

Email:
Notre adresse courriel. On utilisera cette adresse pour se loguer en tant qu'administrateur d'Odoo.

Password:
Le mot de passe pour l'administrateur.

Language:
On choisit, dans le menu déroulant, la langue par défaut pour notre site.

Phone number:
Le numéro de téléphone de notre société.

Country:
Choisir le pays pour notre site.

Démo data:
Cocher pour installer des données fictives pour l'évaluation d'Odoo. (Ne pas cocher pour un site en Production.)

On clic 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!

Victoire!

Nous sommes prêt à utiliser Odoo.


Paramètre du journal Odoo

Maintenant que tout fonctionne correctement, dans le fichier de configuration /etc/odoo-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.

On utilise vi ou Notepad++ à travers WinSCP pour éditer le fichier.

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

...
; LOG SETTINGS
logfile = /var/log/odoo/odoo-server.log
; MAR - Ceci est le défault
log_handler = werkzeug:WARNING
; MAR - Pour voir tous les message d'Odoo, on active à :DEBUG
;log_handler = :DEBUG
;log_level = warn
no-logrotate = True
...

À 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! [w] + [!].

vi /etc/odoo-server.conf

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

[root@tchana ~]# cat /etc/odoo-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 “odoo” afin qu'il recharge son fichier de configuration.

[root@tchana ~]# systemctl restart odoo12

[root@tchana ~]#

Rotation du journal Odoo

Le journal d'Odoo est très volumineux, car il contient toutes les entrées pour le débogage.

[odoo@tchana ~]$ ls -als /var/log/odoo/odoo-server.log

16684 -rw-r--r-- 1 odoo odoo 17082687 17 mai   13:21 /var/log/odoo/odoo-server.log
[odoo@tchana ~]$

On force la rotation de ce journal.

[odoo@tchana ~]$ logrotate -vf /etc/logrotate.d/odoo-server

reading config file /etc/logrotate.d/odoo-server
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/odoo/odoo-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/odoo/odoo-server.log
  log needs rotating
rotating log /var/log/odoo/odoo-server.log, log->rotateCount is 5
dateext suffix '-20190517'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/odoo/odoo-server.log.5 to /var/log/odoo/odoo-server.log.6 (rotatecount 5, logstart 1, i 5),
old log /var/log/odoo/odoo-server.log.5 does not exist
renaming /var/log/odoo/odoo-server.log.4 to /var/log/odoo/odoo-server.log.5 (rotatecount 5, logstart 1, i 4),
old log /var/log/odoo/odoo-server.log.4 does not exist
renaming /var/log/odoo/odoo-server.log.3 to /var/log/odoo/odoo-server.log.4 (rotatecount 5, logstart 1, i 3),
old log /var/log/odoo/odoo-server.log.3 does not exist
renaming /var/log/odoo/odoo-server.log.2 to /var/log/odoo/odoo-server.log.3 (rotatecount 5, logstart 1, i 2),
old log /var/log/odoo/odoo-server.log.2 does not exist
renaming /var/log/odoo/odoo-server.log.1 to /var/log/odoo/odoo-server.log.2 (rotatecount 5, logstart 1, i 1),
old log /var/log/odoo/odoo-server.log.1 does not exist
renaming /var/log/odoo/odoo-server.log.0 to /var/log/odoo/odoo-server.log.1 (rotatecount 5, logstart 1, i 0),
old log /var/log/odoo/odoo-server.log.0 does not exist
log /var/log/odoo/odoo-server.log.6 doesn't exist -- won't try to dispose of it
renaming /var/log/odoo/odoo-server.log to /var/log/odoo/odoo-server.log.1
creating new /var/log/odoo/odoo-server.log mode = 0640 uid = 985 gid = 980
[odoo@tchana ~]$

On vérifie.

[root@tchana ~]# ls -als /var/log/odoo/

total 16688
    0 drwx------   2 odoo odoo       54 17 mai   13:31 .
    4 drwxr-xr-x. 22 root root     4096 17 mai   12:02 ..
    0 -rw-r-----   1 odoo odoo        0 17 mai   13:31 odoo-server.log
16684 -rw-r--r--   1 odoo odoo 17082687 17 mai   13:31 odoo-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.


Odoo-12 -Redirection sécurisée

Description

Un grand merci à Markus Neuberger, ambassadeur de NethServer. https://community.nethserver.org/t/howto-install-odoo-11/10345

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 8069, 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 odoo, www.odoo, et mail.odoo chez https://www.cloudflare.com/.


On vérifie le résultat.


Création d'une entrée DNS pour Odoo

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


- On entre le informations demandées.
- SOUMETTRE


On vérifie le résultat.


Demande d'un certificat de test

On force –force la demande d'un certificat de TEST –test pour notre domaine micronator-dev.org et six de ses CNAME.

Le certificat sera “émis pour” le premier domaine de la liste, c.-à-d. micronator-dev.org. Voir Émis pour plus bas dans ce document sous la section Demande 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 odoo.micronator-dev.org                                    \
                      -d www.odoo.micronator-dev.org                                \
                      -d mail.odoo.micronator-dev.org                               \
                      --cert-file /etc/pki/tls/certs/cert.pem                       \
                      --ca-file /etc/pki/tls/certs/chain.pem                        \
                      --key-file /etc/pki/tls/private/privkey.pem                   \
                      --reloadcmd "/sbin/e-smith/signal-event certificate-update"   \
                      --force                                                       \
                      --test

...
[sam. mai 18 11:35:55 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem
[sam. mai 18 11:35:55 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem
[sam. mai 18 11:35:55 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update
[sam. mai 18 11:35:59 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 odoo.micronator-dev.org                                    \
                      -d www.odoo.micronator-dev.org                                \
                      -d mail.odoo.micronator-dev.org                               \
                      --cert-file /etc/pki/tls/certs/cert.pem                       \
                      --ca-file /etc/pki/tls/certs/chain.pem                        \
                      --key-file /etc/pki/tls/private/privkey.pem                   \
                      --reloadcmd "/sbin/e-smith/signal-event certificate-update"   \
                      --force

...
[sam. mai 18 11:40:01 EDT 2019] Installing cert to:/etc/pki/tls/certs/cert.pem
[sam. mai 18 11:40:01 EDT 2019] Installing CA to:/etc/pki/tls/certs/chain.pem
[sam. mai 18 11:40:01 EDT 2019] Installing key to:/etc/pki/tls/private/privkey.pem
[sam. mai 18 11:40:01 EDT 2019] Run reload cmd: /sbin/e-smith/signal-event certificate-update
[sam. mai 18 11:40:03 EDT 2019] Reload success
[root@tchana ~]#

La demande d'un certificat officiel a été couronné de succès.

Vérification du certificat Let's Encrypt à l'aide de Firefox en se rendant à https://www.micronator-dev.org.

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


Plus d'informations.

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

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

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


Nous sommes sur un réseau LOCAL et vu que nous n'avons pas de serveur DNS pour ce réseau, on ajoute des entrées pour Odoo dans le fichier:

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

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

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 “odoo” 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 à Odoo vers le bon endroit.

Installation

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



APPLIQUER LES CHAN­GE­MENTS.


Recharger la page.

Le nouveau menu Proxy inverse est disponible.

Configuration en mandataire inversé

On configure le Serveur NethServer en tant que mandataire inversé pour www.odoo.micronator-dev.org//. Passerelle → Proxy inverse → onglet Hôtes virtuels → CRÉER NOUVEAU. On entre les informations demandées. → SOUMETTRE. </WRAP>


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.odoo.micronator-dev.org, on ajoute une exception pour le nouveau certificat. Si on utilise seulement le protocole http://..., il sera transformé en https://..., car lors de la configuration à l'onglet Hôtes virtuels, nous avons coché: ☑ Nécessite une connexion SSL chiffrée.

- Le cadenas est vert.
- On se connecte.


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

Le cadenas est toujours vert, car le certificat a été émis par Let's Encrypt qui est une autorité de certification reconnue et la connexion est sécurisée par un chiffrement TLS/SSL.
===== Messagerie électronique ===== On configure la messagerie électronique pour le domaine
odoo.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,
https://mail.odoo.micronator-dev.org/webmail/.

Le nom du serveur n'apparaît pas dans l'écran au-dessus de Connexion car nous l'avons enlevé. Pour plus de détails, voir dans le Cahier-03 du “Cours NethServer-101, la section:

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


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.


====== Odoo-12 - Post-scriptum ====== ===== Vérification du démarrages des services ===== ==== PostgreSQL ==== On vérifie son statut. <file> [root@tchana ~]# systemctl status postgresql-11 ● postgresql-11.service - PostgreSQL 11 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled) Active: active (running) since sam. 2019-05-18 11:16:10 EDT; 5h 31min ago Docs: https://www.postgresql.org/docs/11/static/ Main PID: 3391 (postmaster) CGroup: /system.slice/postgresql-11.service ├─ 3391 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/ ├─ 3882 postgres: logger ├─ 4688 postgres: checkpointer ├─ 4689 postgres: background writer ├─ 4690 postgres: walwriter ├─ 4691 postgres: autovacuum launcher ├─ 4692 postgres: stats collector ├─ 4693 postgres: logical replication launcher ├─11376 postgres: odoo Odoo-12 127.0.0.1(52196) idle ├─11385 postgres: odoo Odoo-12 127.0.0.1(52208) idle ├─11388 postgres: odoo Odoo-12 127.0.0.1(52214) idle └─11389 postgres: odoo Odoo-12 127.0.0.1(52216) idle mai 18 11:15:31 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database se…. mai 18 11:15:43 tchana.micronator-dev.org postmaster[3391]: 2019-05-18 11:15:43.272 EDT …432 mai 18 11:15:43 tchana.micronator-dev.org postmaster[3391]: 2019-05-18 11:15:43.764 EDT …2 » mai 18 11:15:45 tchana.micronator-dev.org postmaster[3391]: 2019-05-18 11:15:45.430 EDT …2 » mai 18 11:15:46 tchana.micronator-dev.org postmaster[3391]: 2019-05-18 11:15:46.892 EDT …ces mai 18 11:15:46 tchana.micronator-dev.org postmaster[3391]: 2019-05-18 11:15:46.892 EDT … ». mai 18 11:16:10 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database server. Hint: Some lines were ellipsized, use -l to show in full. [root@tchana ~]# </file> ==== Odoo ==== On vérifie son statut. <file> [root@tchana ~]# systemctl status odoo12 ● odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled) Active: active (running) since sam. 2019-05-18 11:16:10 EDT; 5h 33min ago Main PID: 4694 (scl) CGroup: /system.slice/odoo12.service ├─4694 /usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 /o… ├─4697 /bin/bash /var/tmp/sclX2bC8i └─4700 /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/odo… mai 18 11:16:10 tchana.micronator-dev.org systemd[1]: Started Odoo12. [root@tchana ~]# </file> ===== Administration d'Odoo ===== Pour administrer Odoo, il suffit de se connecter avec le justificatif choisi lors de la Finalisation de l'installation.
● On se rend à: https://www.odoo.micronator-dev.org.
● On peut aussi utiliser http://www.odoo.micronator-dev.org qui sera transformé en https

- Le cadenas est vert.
- On se connecte.


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

===== Fichiers journaux ===== ==== PostgreSQL ==== Le fichier du journal de PostgreSQL se trouve dans le répertoire /var/lib/pgsql/11/data/log/. ==== Odoo ==== Afin de vous assurer que tout ait démarré correctement, on consulte les journaux. ● À l'aide de l'interface Web: Administration → Logs → /var/log/odoo/odoo-server.log.
● Directement dans les fichiers /var/log/messages et /var/log/odoo/odoo-server.log. ==== Fichier /var/log/odoo/odoo-server.log ==== On peut aussi utiliser la console du serveur pour vérifier le journal d'Odoo afin de s'assurer qu'il n'existe pas de modules manquants. <file> [root@tchana ~]# cat /var/log/odoo/odoo-server.log | grep “module is not available” 2019-05-29 17:04:13,742 4077 INFO Odoo-12 odoo.addons.sms.wizard.send_sms: The `phonenumbers` Python module is not available. Phone number validation will be skipped. Try `pip3 install phonenumbers` to install it. [root@tchana ~]# </file> On voit que le module
phonenumbers n'est pas disponible. === Installation du module manquant === On se substitue à l'utilisateur odoo. <file> [root@tchana ~]# su - odoo Dernière connexion : mercredi 22 mai 2019 à 00:12:34 EDT sur pts/1 [odoo@tchana ~]$ </file> On active Python36. <file> [odoo@tchana ~]$ scl enable rh-python36 bash [odoo@tchana ~]$ </file> On s'assure que nous sommes dans le répertoire personnel de l'utilisateur odoo. <file> [odoo@tchana ~]$ pwd /opt/odoo [odoo@tchana ~]$ </file> On active l'environnement virtuel odoo12-venv. <file> [odoo@tchana ~]$ source odoo12-venv/bin/activate (odoo12-venv) [odoo@tchana ~]$ </file> On installe le module phonenumbers. <file> (odoo12-venv) [odoo@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. (odoo12-venv) [odoo@tchana ~]$ </file> On désactive l'environnement virtuel et on quitte. <file> (odoo12-venv) [odoo@tchana ~]$ deactivate && exit exit [odoo@tchana ~]$ </file> On vérifie qui nous sommes. <file> [odoo@tchana ~]$ whoami odoo [odoo@tchana ~]$ </file> On quitte la substitution d'utilisateur. <file> [odoo@tchana ~]$ exit déconnexion [root@tchana ~]# </file> On vérifie qui nous sommes. <file> [root@tchana ~]# whoami root [root@tchana ~]# </file> Le module manquant a été installé. On redémarre Odoo. <file> [root@tchana ~]# systemctl restart odoo12 [root@tchana ~]# </file> On vérifie le journal. <file> [root@tchana ~]# cat /var/log/odoo/odoo-server.log | grep “module is not available” 2019-05-29 17:04:13,742 4077 INFO Odoo-12 odoo.addons.sms.wizard.send_sms: The `phonenumbers` Python module is not available. Phone number validation will be skipped. Try `pip3 install phonenumbers` to install it. [root@tchana ~]# </file> Il n'existe aucune nouvelle entrée indiquant un module manquant. On vérifie pour des erreurs. <file> [root@tchana ~]# cat /var/log/odoo/odoo-server.log | grep -i error [root@tchana ~]# </file> On vérifie pour des avertissements. <file> [root@tchana ~]# cat /var/log/odoo/odoo-server.log | grep -i warning 2019-05-29 16:35:20,393 4055 WARNING Odoo-12 odoo.http: CSRF validation failed on path '/web/login' 2019-05-29 16:35:36,662 4055 WARNING Odoo-12 odoo.http: CSRF validation failed on path '/web/login' 2019-05-29 16:35:58,848 4055 WARNING Odoo-12 odoo.http: CSRF validation failed on path '/web/login' 2019-05-29 16:36:10,038 4055 WARNING Odoo-12 odoo.http: CSRF validation failed on path '/web/login' [root@tchana ~]# </file> 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, recharger la page.

===== Changements de mots de passe ===== ==== Utilisateur odoo de PostgreSQL ==== Vous pouvez trouver le mot de passe de l'utilisateur odoo de PostgreSQL
(l'utilisateur qui gère votre base de données Odoo-12) dans le fichier de configuration /etc/odoo-server.conf. <file> [root@tchana ~]# cat /etc/odoo-server.conf | grep db_password db_password = fghtbgh [root@tchana ~]# </file> Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe de l'utilisateur odoo de PostgreSQL: * à la console du Serveur NethServer,
* à la console de PostgreSQL et * dans le fichier /etc/odoo-server.conf. ==== À la console du Serveur NethServer ==== On change le mot de passe Linux de l'utilisateur odoo. <file> [root@tchana ~]# passwd odoo Changement de mot de passe pour l'utilisateur odoo. Nouveau mot de passe : nouveau-mot-de-passe-pour-odoo 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-odoo passwd : mise à jour réussie de tous les jetons d'authentification. [root@tchana ~]# </file> 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.
À la console du serveur, NethServer exige seulement une longueur minimum de 8 caractères pour le mot de passe. Dans l'interface Web, il 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 odoo de PostgreSQL. À la console du serveur, on se substitue à l'utilisateur postgres. <file> [root@tchana ~]# su - postgres -bash-4.2$ </file> On vérifie. <file> -bash-4.2$ whoami postgres -bash-4.2$ </file> L'utilisateur postgres entre dans la console PostgreSQL. <file> -bash-4.2$ psql psql (11.3)) Saisissez « help » pour l'aide. postgres=# </file> On change le mot de passe de l'utilisateur odoo de PostgreSQL. <file> postgres=# ALTER ROLE odoo WITH PASSWORD 'nouveau-mot-de-passe'; ALTER ROLE postgres=# </file> On quitte la console PostgreSQL. <file> postgres=# \q -bash-4.2$ </file> On retourne à l'utilisateur root. <file> -bash-4.2$ exit déconnexion [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# whoami root [root@tchana ~]# </file> ==== Dans le fichier /etc/odoo-server.conf ==== IMPORTANT. Le changement de mot de passe de l'utilisateur odoo dans PostgreSQL ne modifie pas celui dans le fichier /etc/odoo-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/odoo-server.conf et on change le mot de passe de l'utilisateur odoo de PostgreSQL. On vérifie. <file> [root@tchana ~]# cat /etc/odoo-server.conf | grep db_password db_password = fghtbgh [root@tchana ~]# </file> ==== Redémarrage de PostgreSQL ==== On redémarre le service PostgreSQL. <file> [root@tchana ~]# systemctl restart postgresql-11 [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status postgresql-11 ● postgresql-11.service - PostgreSQL 11 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled) Active: active (running) since dim. 2019-05-19 13:16:36 EDT; 49s ago Docs: https://www.postgresql.org/docs/11/static/ Process: 7994 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 8000 (postmaster) CGroup: /system.slice/postgresql-11.service ├─8000 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/ ├─8002 postgres: logger ├─8004 postgres: checkpointer ├─8005 postgres: background writer ├─8006 postgres: walwriter ├─8007 postgres: autovacuum launcher ├─8008 postgres: stats collector └─8009 postgres: logical replication launcher mai 19 13:16:36 tchana.micronator-dev.org systemd[1]: Stopped PostgreSQL 11 database server. mai 19 13:16:36 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database se…. mai 19 13:16:36 tchana.micronator-dev.org postmaster[8000]: 2019-05-19 13:16:36.472 EDT …432 mai 19 13:16:36 tchana.micronator-dev.org postmaster[8000]: 2019-05-19 13:16:36.475 EDT …2 » mai 19 13:16:36 tchana.micronator-dev.org postmaster[8000]: 2019-05-19 13:16:36.480 EDT …2 » mai 19 13:16:36 tchana.micronator-dev.org postmaster[8000]: 2019-05-19 13:16:36.495 EDT …ces mai 19 13:16:36 tchana.micronator-dev.org postmaster[8000]: 2019-05-19 13:16:36.495 EDT … ». mai 19 13:16:36 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database server. Hint: Some lines were ellipsized, use -l to show in full. [root@tchana ~]# </file> ==== Redémarrage d'Odoo ==== On redémarre le service Odoo. <file> [root@tchana ~]# systemctl restart odoo12 [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status odoo12 ● odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled) Active: active (running) since dim. 2019-05-19 13:21:24 EDT; 41s ago Main PID: 8324 (scl) CGroup: /system.slice/odoo12.service ├─8324 /usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 /o… ├─8325 /bin/bash /var/tmp/sclaw6YFd └─8328 /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/odo… mai 19 13:21:24 tchana.micronator-dev.org systemd[1]: Stopped Odoo12. mai 19 13:21:24 tchana.micronator-dev.org systemd[1]: Started Odoo12. [root@tchana ~]# </file> Après un changement de mot de passe, on supprime l'historique du fureteur Internet, on se reconnecte à Odoo 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/odoo-server.conf. <file> [root@tchana ~]# cat /etc/odoo-server.conf | grep admin_passwd admin_passwd = fghtbgh [root@tchana ~]# </file> Si on veut changer le mot de passe du super utilisateur PostgreSQL postgres, il faut aussi le changer: - à la console du Serveur NethServer, - à la console de PostgreSQL, - dans le fichier /etc/odoo-server.conf et - dans le fichier /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh - pour ce dernier voir la section Script de sauvegarde PostgreSQL. ==== À la console du Serveur NethServer ==== On vérifie si nous sommes root. <file> root@tchana ~]# whoami root [root@tchana ~]# </file> On change le mot de passe Linux du super-utilisateur postgres. <file> [root@tchana ~]# passwd postgres Changement de mot de passe pour l'utilisateur postgres. Entrez le nouveau mot de passe UNIX : nouveau-mot-de-passe-pour-postgres Retapez le nouveau mot de passe UNIX : nouveau-mot-de-passe-pour-postgres passwd : mise à jour réussie de tous les jetons d'authentification. [root@tchana ~]# </file> ==== À la console de PostgreSQL ==== On se substitue au super-utilisateur postgres. <file> [root@tchana ~]# su - postgres Dernière connexion : dimanche 19 mai 2019 à 13:14:13 EDT sur pts/0 -bash-4.2$ </file> On ouvre la console PostgreSQL. <file> -bash-4.2$ psql psql (11.3) Saisissez « help » pour l'aide. postgres=# </file> On change le mot de passe du super-utilisateur postgres. <file> postgres=# \password Saisissez le nouveau mot de passe : nouveau-mot-de-passe-du-super-utilisateur Saisissez-le à nouveau : nouveau-mot-de-passe-du-super-utilisateur postgres=# </file> On sort de la console PostgreSQL. <file> postgres=# \q -bash-4.2$ </file> On retourne à l'utilisateur root. <file> -bash-4.2$ exit déconnexion [root@tchana ~]# </file> ==== Dans le fichier /etc/odoo-server.conf ==== On édite le fichier /etc/odoo-server.conf et on change le mot de passe du super-utilisateur de PostgreSQL. On vérifie. <file> [root@tchana ~]# cat /etc/odoo-server.conf | grep admin_passwd admin_passwd = fghtbgh [root@tchana ~]# </file> ==== Dans le fichier /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh ==== Il faut aussi changer le mot de passe du super-utilisateur postgres dans le script de sauvegarde/récupération de la base de données odoo. On édite le fichier /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh (voir le paragraphe Script de sauvegarde PostgreSQL) et on change le mot de passe PostgreSQL de l'utilisateur postgres. On vérifie. <file> [root@tchana ~]# cat /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh | grep MDP_SUPER_utilisateur= MDP_SUPER_utilisateur=fghtbgh [root@tchana ~]# </file> ==== Réamorçage de PostgreSQL ==== On réamorce PostgreSQL. <file> [root@tchana ~]# systemctl restart postgresql-11 [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status postgresql-11 ● postgresql-11.service - PostgreSQL 11 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled) Active: active (running) since dim. 2019-05-19 14:03:45 EDT; 58s ago Docs: https://www.postgresql.org/docs/11/static/ Process: 11052 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 11058 (postmaster) CGroup: /system.slice/postgresql-11.service ├─11058 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/ ├─11061 postgres: logger ├─11063 postgres: checkpointer ├─11064 postgres: background writer ├─11065 postgres: walwriter ├─11066 postgres: autovacuum launcher ├─11067 postgres: stats collector └─11068 postgres: logical replication launcher mai 19 14:03:45 tchana.micronator-dev.org systemd[1]: Stopped PostgreSQL 11 database server. mai 19 14:03:45 tchana.micronator-dev.org systemd[1]: Starting PostgreSQL 11 database se…. mai 19 14:03:45 tchana.micronator-dev.org postmaster[11058]: 2019-05-19 14:03:45.169 EDT…432 mai 19 14:03:45 tchana.micronator-dev.org postmaster[11058]: 2019-05-19 14:03:45.172 EDT…2 » mai 19 14:03:45 tchana.micronator-dev.org postmaster[11058]: 2019-05-19 14:03:45.178 EDT…2 » mai 19 14:03:45 tchana.micronator-dev.org postmaster[11058]: 2019-05-19 14:03:45.193 EDT…ces mai 19 14:03:45 tchana.micronator-dev.org postmaster[11058]: 2019-05-19 14:03:45.193 EDT… ». mai 19 14:03:45 tchana.micronator-dev.org systemd[1]: Started PostgreSQL 11 database server. Hint: Some lines were ellipsized, use -l to show in full. [root@tchana ~]# </file> ==== Réamorçage d'Odoo ==== On réamorce le service Odoo. <file> [root@tchana ~]# systemctl restart odoo12 [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status odoo12 ● odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled) Active: active (running) since dim. 2019-05-19 14:07:58 EDT; 7s ago Main PID: 11343 (scl) CGroup: /system.slice/odoo12.service ├─11343 /usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 /… ├─11344 /bin/bash /var/tmp/sclhTImIl └─11347 /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/od… mai 19 14:07:58 tchana.micronator-dev.org systemd[1]: Stopped Odoo12. mai 19 14:07:58 tchana.micronator-dev.org systemd[1]: Started Odoo12. [root@tchana ~]# </file> Après un changement de mot de passe, on supprime l'historique du fureteur Internet, on se reconnecte à Odoo et on vérifie quelques pages.
==== Administrateur Odoo ==== Si le mot de passe a été perdu ou piraté, on doit changer le mot de passe de l'administrateur d'Odoo 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 d'Odoo au paragraphe Création d'une nouvelle base de données.

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

Le nouveau mot de passe de l'administrateur d'Odoo est fonctionnel.

====== Sauvegarde de la BD - Interface Odoo ====== ===== Introduction ===== On peut faire une sauvegarde/restauration de PostgreSQL directement avec l'interface d'Odoo. ===== Sauvegarde =====



- On se déconnecte.
- On supprime l'historique du navigateur.
- https://www.odoo.micronator-dev.org/
- Manage Databases.






Backup.

- Le nom de la base de donnée Odoo-12 est déjà affichée.
- Mot de passe du super-utilisateur postgres.
- On sélectionne zip (include filestore)
- Backup.


Enregistrer le fichier → OK.

Enregistrer.


===== Récupération du fichier de la sauvegarde PostgreSQL ===== - Depuis le poste de travail tel que ci-dessus au paragraphe Sauvegarde. - Depuis la sauvegarde NethServer décrite à la section Odoo-12.zip depuis une sauvegarde NethServer. Après avoir avoir récupéré cette sauvegarde, on la télécharge sur le poste de travail pour qu'Odoo puisse y accéder pour la restauration avec son interface Web. ===== Restriction des connexions à Odoo ===== Avant de pouvoir restaurer une sauvegarde PostgreSQL, il faut supprimer la BD actuelle. Vu qu'il n'y aura plus de BD, Odoo présentera l'écran de création de la base de données lorsqu'un utilisateur accédera à l'interface Odoo. Pour remédier à cette situation, il est préférable de restreindre l'accès seulement au poste de travail que vous utilisez pour la récupération de la BD. Si vous êtes sur un poste de travail qui n'est pas sur le segment IP LOCAL du Serveur NethServer, il est alors préférable d'utiliser une connexion
TeamViewer vers une station qui est déjà branchée sur ce segment IP. Pour l'installation de TeamViewer sur un poste de travail, consultez la section TeamViewer du Cahier-02 : du “Cours NethServer-101” . Interface Web NethServer → Passerelle → Proxy inverse → onglet Hôtes virtuels → Éditer. Accéder depuis les réseaux CIDR
On entre l'adresse IP du poste de travail sous le format: xxx.xxx.xxx.xxx/32. Ce poste sera le seul à pouvoir accéder à Odoo.
Attention à ne pas vous peinturer dans un coin…
→ SOUMETTRE.


===== Restauration ===== Pour pouvoir restaurer une BD d'Odoo, il faut supprimer l'ancienne.


- On se déconnecte d'Odoo.
- On se rend à: https://www.odoo.micronator-dev.org/.
- Manage Databases.





Delete.

- On entre le mot de passe du super-utilisateur postgres.
- Le nom de la base de donnée Odoo-12 est déjà affichée.
- Delete.


- Au retour, vu qu'il n'y a plus de BD, Odoo présente l'écran de création de la base de données.
- On clique or restore a database.



On entre le mot de passe du super-utilisateur postgres → Parcourir…



On sélectionne la BD à restaurer → Ouvrir.


- On entre le nom de la BD → Continue.

- La BD est restaurée.

===== Vérification ===== ==== Interface Odoo ==== On se logue à Odoo et on vérifie si tout est tel qu'au moment de la sauvegarde.

==== Journal Odoo ==== On vérifie le journal d'Odoo. Interface Web NethServer → Administration → Logs. On clique /var/log/odoo/odoo-server.log.


On redémarre Odoo pour une vérification finale. <file> [root@tchana ~]# systemctl restart odoo12 [root@tchana ~]# </file> On réexamine le fichier journal pour vérifier le redémarrage. <file> [root@tchana ~]# tail -n8 /var/log/odoo/odoo-server.log 2019-05-20 03:00:13,394 5225 INFO ? odoo.service.server: Initiating shutdown 2019-05-20 03:00:13,395 5225 INFO ? odoo.service.server: Hit CTRL-C again or send a second signal to force the shutdown. 2019-05-20 03:00:14,802 6892 INFO ? odoo: Odoo version 12.0 2019-05-20 03:00:14,803 6892 INFO ? odoo: Using configuration file at /etc/odoo-server.conf 2019-05-20 03:00:14,803 6892 INFO ? odoo: addons paths: ['/opt/odoo/.local/share/Odoo/addons/12.0', '/opt/odoo/odoo12/addons', '/opt/odoo/odoo12/odoo/addons'] 2019-05-20 03:00:14,805 6892 INFO ? odoo: database: odoo@localhost:5432 2019-05-20 03:00:15,092 6892 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf 2019-05-20 03:00:15,458 6892 INFO ? odoo.service.server: HTTP service (werkzeug) running on tchana.micronator-dev.org:8069 [root@tchana ~]# </file>
===== Suppression de la restriction des connexions à Odoo ===== Interface Web NethServer → Passerelle → Proxy inverse → onglet Hôtes virtuels → Éditer.
Accéder depuis les réseaux CIDR
On supprime l'adresse entrée précédemment. → SOUMETTRE.


===== 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 avec l'interface d'Odoo
fonctionnent correctement.


====== Sauvegarde 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 ZIP de sauvegarde de la BD de PostgreSQL du site Odoo. 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
Odoo-12 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 * sera sécurisé par le script en changeant le propriétaire et le groupe pour root:root et en donnant des droits à root seulement. On crée le répertoire. <file> [root@tchana ~]# mkdir /var/lib/pgsql/sauvegarde [root@tchana ~]# </file> On change le propriétaire et le groupe. <file> [root@tchana ~]# chown postgres:postgres /var/lib/pgsql/sauvegarde [root@tchana ~]# </file> On ajuste tous les droits afin que seul l'utilisateur postgres puisse y accéder. <file> [root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# ls -alsd /var/lib/pgsql/sauvegarde 0 drwx—— 2 postgres postgres 6 19 mai 16:28 /var/lib/pgsql/sauvegarde [root@tchana ~]# </file> ===== Script de sauvegarde PostgreSQL ===== Prendre tout le contenu de l'encadré pour la commande. <file> cat > /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh «'EOT' #!/bin/sh # Script pour générer une sauvegarde de la BD PostgreSQL d'Odoo. # Michel-André 2018-09-17_11h16 # vars TEMPS_DE_PAUSE=10 REP_SAUVEGARDE=/var/lib/pgsql/sauvegarde NOM_BD_ODOO=Odoo-12 FORMAT_FICHIER=zip MDP_SUPER_utilisateur=fghtbgh PORT_ODOO=8069 # On vérifie qu'odoo-server est en cours d'exécution. if (!(/usr/bin/systemctl status odoo12 | grep “active (running)”)); then # Message au système et à la console /bin/logger “ odoo-server ” /bin/logger “odoo-server N'EST PAS en cours d'execution…” /bin/echo “odoo-server N'EST PAS en cours d'execution…” # On relance server-odoo pour la sauvegarde de la BD $NOM_BD_ODOO /usr/bin/systemctl start odoo12 /bin/logger “odoo-server est relancé” /bin/logger ” * odoo-server *“ /bin/echo “odoo-server est relancé” # Message au système et à la console /bin/logger “Pause de $TEMPS_DE_PAUSE secondes pour le démarrage d'Odoo” /bin/echo “Pause de $TEMPS_DE_PAUSE secondes pour le démarrage d'Odoo” # On fait une pause de $TEMPS_DE_PAUSE secondes pour le démarrage d'Odoo. /bin/sleep $TEMPS_DE_PAUSE fi /bin/logger “ odoo-server ” /bin/logger “odoo-server est en cours d'execution…” /bin/echo “odoo-server est en cours d'execution…” # On sauvegarde la BD dans $REP_SAUVEGARDE/$NOM_BD_ODOO.$FORMAT_FICHIER. # La sauvegarde du jour écrase la sauvegarde du jour précédent. curl -X POST \ -F master_pwd=$MDP_SUPER_utilisateur \ -F name=$NOM_BD_ODOO \ -F backup_format=$FORMAT_FICHIER \ -o $REP_SAUVEGARDE/$NOM_BD_ODOO.$FORMAT_FICHIER \ http://localhost:$PORT_ODOO/web/database/backup # On sécurise le fichier de $NOM_BD_ODOO.$FORMAT_FICHIER. /bin/chown root:root $REP_SAUVEGARDE/$NOM_BD_ODOO.$FORMAT_FICHIER > /dev/null 2>&1 /bin/chmod 700 $REP_SAUVEGARDE/$NOM_BD_ODOO.$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_ODOO est dans: $REP_SAUVEGARDE/$NOM_BD_ODOO.$FORMAT_FICHIER” /bin/logger “ odoo-server ” /bin/echo “La sauvegarde de la BD $NOM_BD_ODOO est dans: $REP_SAUVEGARDE/$NOM_BD_ODOO.$FORMAT_FICHIER” exit 1 EOT </file> On vérifie les sept premières lignes du fichier. <file> [root@tchana ~]# head -n7 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh #!/bin/sh # Script pour générer une sauvegarde de la BD PostgreSQL d'Odoo. # Michel-André 2018-09-17_11h16 # vars TEMPS_DE_PAUSE=10 [root@tchana ~]# </file> Il n'y a pas de ligne vide avant la ligne #!/bin/sh. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande. On sécurise le fichier en changeant le groupe et le propriétaire. <file> [root@tchana ~]# chown root:root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]# </file> On ajuste les droits pour rendre le fichier exécutable par l'utilisateur root uniquement. <file> [root@tchana ~]# chmod 700 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# ls -als /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh 4 -rwx—— 1 root root 2308 19 mai 16:37 /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]# </file> ===== Sauvegarde ===== ==== Vérification du script de sauvegarde ==== On vérifie le fonctionnement de notre script de sauvegarde en simulant ce que fera cron. <file> [root@tchana ~]# /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh Active: active (running) since dim. 2019-05-19 15:59:27 EDT; 40min ago odoo-server est en cours d'execution… % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2857k 0 2857k 100 357 821k 102 0:00:03 0:00:03 –:–:– 822k La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip [root@tchana ~]# </file> On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie. <file> [root@tchana ~]# ls -ls /var/lib/pgsql/sauvegarde/Odoo-12.zip 2860 -rwx—— 1 root root 2925903 19 mai 16:40 /var/lib/pgsql/sauvegarde/Odoo-12.zip [root@tchana ~]# </file> Comme on le voit, seul root pourra manipuler le fichier de sauvegarde.
==== Journal du Serveur NethServer ====

...
May 19 16:40:04 tchana root: ********************  odoo-server ********************
May 19 16:40:04 tchana root: odoo-server est en cours d'execution...
May 19 16:40:07 tchana root: La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip
May 19 16:40:07 tchana root: ********************  odoo-server ********************
...

==== Si odoo-server n'est pas en exécution (arrêté) ==== Il en sera exactement de même si odoo-server n'est pas en exécution. Le début du script relancera Odoo mais à la fin, il ne l'arrêtera pas. ==== Vérification ==== On affiche le status d'Odoo. <file> [root@tchana ~]# systemctl status odoo12 ● odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled) Active: active (running) since dim. 2019-05-19 15:59:27 EDT; 44min ago Main PID: 3996 (scl) CGroup: /system.slice/odoo12.service ├─3996 /usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 /o… ├─4037 /bin/bash /var/tmp/sclbZ8ob8 └─4052 /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/odo… mai 19 15:59:27 tchana.micronator-dev.org systemd[1]: Started Odoo12. [root@tchana ~]# </file> On arrête Odoo. <file> [root@tchana ~]# systemctl stop odoo12 [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status odoo12 ● odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled) Active: inactive (dead) since dim. 2019-05-19 16:44:08 EDT; 4s ago Process: 3996 ExecStart=/usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/odoo-server.conf (code=killed, signal=TERM) Main PID: 3996 (code=killed, signal=TERM) mai 19 15:59:27 tchana.micronator-dev.org systemd[1]: Started Odoo12. mai 19 16:44:07 tchana.micronator-dev.org systemd[1]: Stopping Odoo12… mai 19 16:44:08 tchana.micronator-dev.org systemd[1]: Stopped Odoo12. [root@tchana ~]# </file> On relance le script de sauvegarde. <file> [root@tchana ~]# /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh odoo-server N'EST PAS en cours d'execution… odoo-server est relancé Pause de 10 secondes pour le démarrage d'Odoo odoo-server est en cours d'execution… % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2857k 0 2857k 100 357 1169k 146 0:00:02 0:00:02 –:–:– 1169k La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip [root@tchana ~]# </file> On vérifie le statut d'Odoo. <file> [root@tchana ~]# systemctl status odoo12 ● odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled) Active: active (running) since dim. 2019-05-19 16:47:46 EDT; 1min 13s ago Main PID: 8269 (scl) CGroup: /system.slice/odoo12.service ├─8269 /usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 /o… ├─8271 /bin/bash /var/tmp/sclIPE437 └─8276 /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/odo… mai 19 16:47:46 tchana.micronator-dev.org systemd[1]: Started Odoo12. [root@tchana ~]# </file> Le script a bien démarré Odoo.
On vérifie le fichier de sauvegarde pour s'assurer que celle-ci ait réussie. <file> [root@tchana ~]# ls -ls /var/lib/pgsql/sauvegarde/Odoo-12.zip 2860 -rwx—— 1 root root 2925903 19 mai 16:47 /var/lib/pgsql/sauvegarde/Odoo-12.zip [root@tchana ~]# </file> ==== Inclusion du répertoire dans la sauvegarde de NethServer ==== Le répertoire inclut le script sauvegarde-postgres.sh et le fichier Odoo-12.zip de la sauvegarde PostgreSQL. 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. <file> NouvelleInclusion=”/var/lib/pgsql/sauvegarde/“ if grep -Fxq “$NouvelleInclusion” /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e “\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n” else # L'entrée n'a pas été trouvée dans custom.include echo -e “$NouvelleInclusion” » /etc/backup-data.d/custom.include echo -e “\nL'entrée: $NouvelleInclusion a été ajoutée\n” fi </file> On vérifie. <file> [root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /var/lib/pgsql/sauvegarde/ /var/lib/pgsql/sauvegarde/ [root@tchana ~]# </file> Ci-dessus, il n'y a pas de ligne vide avant /var/lib/pgsql/sauvegarde/. Nous en avons inséré 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. <file> DIR=”/etc/e-smith/templates-custom/etc/crontab“ for NAME in $DIR do if [ ! -d $NAME ]; then mkdir -p $NAME chown odoo.odoo $NAME chmod 770 $NAME fi done </file> On vérifie. <file> [root@tchana ~]# ls -alsd /etc/e-smith/templates-custom/etc/crontab 0 drwxrwx— 2 odoo odoo 6 19 mai 16:59 /etc/e-smith/templates-custom/etc/crontab [root@tchana ~]# </file> ==== Création de la tâche cron ==== On crée le fichier de la tâche
cron et on y insère son contenu. Elle s'exécutera quotidiennement à 02h00.
Prendre tout le contenu de l'encadré pour la commande. <file> cat > /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql «'EOT' SHELL=/bin/bash MAILTO=root # # Tâche cron qui lance /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh afin # de sauvegarder la BD d'Odoo-12. Cette tâche cron roulera quotidiennement à 02h30. # Michel-André, 2018-06-18_11h27 # ┌───────────── min (0 - 59) # │ ┌────────────── heure (0 - 23) # │ │ ┌─────────────── jour du mois (1 - 31) # │ │ │ ┌──────────────── mois (1 - 12) # │ │ │ │ ┌───────────────── jour de la semaine (0 - 6) (0 à 6 sont de dimanche à samedi, # │ │ │ │ │ 7 est dimanche, même que 0) # │ │ │ │ │ # * * * * * [utilisateur] commande à exécuter # 0 2 * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh EOT </file> L'heure peut être choisie à votre entière discrétion.
On vérifie le contenu du fichier de la tâche. <file> [root@tchana ~]# cat /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql SHELL=/bin/bash MAILTO=root # # Tâche cron qui lance /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh afin # de sauvegarder la BD d'Odoo-12. Cette tâche cron roulera quotidiennement à 02h30. # Michel-André, 2018-06-18_11h27 # ┌───────────── min (0 - 59) # │ ┌────────────── heure (0 - 23) # │ │ ┌─────────────── jour du mois (1 - 31) # │ │ │ ┌──────────────── mois (1 - 12) # │ │ │ │ ┌───────────────── jour de la semaine (0 - 6) (0 à 6 sont de dimanche à samedi, # │ │ │ │ │ 7 est dimanche, même que 0) # │ │ │ │ │ # * * * * * [utilisateur] commande à exécuter # 0 2 * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]# </file> Il n'y a pas de ligne vide avant la ligne SHELL=/bin/bash. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande. On sécurise le fichier. <file> [root@tchana ~]# chmod 700 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]# </file> On vérifie <file> [root@tchana ~]# ls -ls /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql 4 -rwx—— 1 root root 859 19 mai 17:14 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]# </file> On développe le gabarit personnalisé. <file> [root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab [root@tchana ~]# </file> On redémarre le démon
crond. <file> [root@tchana ~]# systemctl restart crond [root@tchana ~]# </file> ==== Vérification de la tâche cron ==== On modifie l'heure de la tâche cron pour qu'elle soit lancée à toutes les minutes afin de vérifier son exécution. On change l'heure de la tâche. <file> [root@tchana ~]# sed -i 's/^0 2/\* \*/' /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql # * * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]# </file> On développe le gabarit personnalisé. <file> [root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab [root@tchana ~]# </file> On redémarre le démon crond. <file> [root@tchana ~]# systemctl restart crond [root@tchana ~]# </file> ==== Suivi ==== On lance la commande ci-dessous pour suivre toutes les tâches cron et on filtre avec grep celles qui contiendront sauvegarde. <file> [root@tchana ~]# tail -F /var/log/messages | grep sauvegarde </file> À toutes les minutes, on voit notre tâche s'afficher.

...
May 19 17:19:03 tchana root: La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip
May 19 17:20:03 tchana root: La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip
May 19 17:21:03 tchana root: La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip
...

On arrête la commande tail avec [CTL] + [c]. <file> … May 19 17:21:03 tchana root: La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip ^C [root@tchana ~]# </file> ==== Vérification lorsqu'Odoo est arrêté ==== On arrête Odoo. <file> [root@tchana ~]# systemctl stop odoo12 [root@tchana ~]# </file> On relance la commande tail. <file> [root@tchana ~]# tail -F /var/log/messages | grep sauvegarde </file> À toutes les minutes, on voit notre tâche s'afficher. <file> … May 19 17:24:03 tchana root: La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip … </file> On arrête la commande tail avec [CTL] + [c]. <file> … May 19 17:24:03 tchana root: La sauvegarde de la BD Odoo-12 est dans: /var/lib/pgsql/sauvegarde/Odoo-12.zip ^C [root@tchana ~]# </file> On remet l'heure de la tâche cron à 02h00. <file> [root@tchana ~]# sed -i 's/\* \* \* \* \* root/0 2 \* \* \* root/' \ /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# tail -n3 /etc/e-smith/templates-custom/etc/crontab/sauvegarde_postgresql # * 2 * * * * root /var/lib/pgsql/sauvegarde/sauvegarde-postgres.sh [root@tchana ~]# </file> On développe le gabarit personnalisé. <file> [root@tchana ~]# /sbin/e-smith/expand-template /etc/crontab [root@tchana ~]# </file> On redémarre le démon crond. <file> [root@tchana ~]# systemctl restart crond [root@tchana ~]# </file> ==== Courriel de notification ==== L'utilisateur root (admin) recevra un courriel, semblable à celui ci-dessous, à la fin de la tâche cron. On se rend à l'URL: https://www.micronator-dev.org/webmail. On se logue avec l'utilisateur root et son mot de passe.

==== 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. <file> NouvelleInclusion=”/etc/e-smith/templates-custom/etc/crontab/“ if grep -Fxq “$NouvelleInclusion” /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e “\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n” else # L'entrée n'a pas été trouvée dans custom.include echo -e “$NouvelleInclusion” » /etc/backup-data.d/custom.include echo -e “\nL'entrée: $NouvelleInclusion a été ajoutée\n” fi </file> On vérifie. <file> [root@tchana ~]# cat /etc/backup-data.d/custom.include | grep crontab /etc/e-smith/templates-custom/etc/crontab/ [root@tchana ~]# </file>

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

===== Récupération du fichier de sauvegarde ===== On peut choisir le fichier de sauvegarde qu'on veut restaurer. - /var/lib/pgsql/sauvegarde/Odoo-12.zip - Odoo-12.zip depuis une une sauvegarde NethServer ==== /var/lib/pgsql/sauvegarde/Odoo-12.zip ==== La dernière sauvegarde PostgreSQL est présente dans le répertoire /var/lib/pgsql/sauvegarde/. ==== Odoo-12.zip depuis une sauvegarde NethServer ==== Si le fichier de sauvegarde stocké sur le poste de travail n'est pas assez récent, on peut récupérer le fichier de sauvegarde PostgreSQL depuis les sauvegardes NethServer . On s'assure que le fichier Odoo-12.zip est présent dans les sauvegardes NethServer. <file> [root@tchana ~]# /sbin/e-smith/backup-data-list -b backup-data | grep Odoo-12.zip Mon May 20 10:37:07 2019 var/lib/pgsql/sauvegarde/Odoo-12.zip [root@tchana ~]# </file> Le fichier Odoo-12.zip est présent dans la dernière sauvegarde NethServer, mais on peut le choisir de n'importe quelle sauvegarde. 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/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. <file> [root@tchana ~]# ls -als /var/lib/pgsql/sauvegarde/Odoo-12.zip 2860 -rwx—— 1 root root 2926469 20 mai 10:37 /var/lib/pgsql/sauvegarde/Odoo-12.zip [root@tchana ~]# </file> Le fichier est bien celui de la sauvegarde que nous avons lancée manuellement ce matin. On pourrait aussi bien avoir choisi le fichier depuis n'importe quelle sauvegarde NethServer. Si on veut restaurer la sauvegarde Odoo-12.zip récupérée de la sauvegarde NethServer, on peut la télécharger sur le poste de travail avant de la restaurer à l'aide de l'Interface Odoo.


===== Restriction des connexions ===== On restreint les connexions à Odoo selon la section Restriction des connexions à Odoo.
===== Suppression de la base de données actuelle ===== On vérifie si le service est en cours d'exécution. <file> [root@tchana ~]# systemctl status odoo12 ● odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; enabled; vendor preset: disabled) Active: active (running) since lun. 2019-05-20 09:03:22 EDT; 19s ago Main PID: 28231 (scl) CGroup: /system.slice/odoo12.service ├─28231 /usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 /… ├─28232 /bin/bash /var/tmp/sclqm2WW4 └─28235 /opt/odoo/odoo12-venv/bin/python3 /opt/odoo/odoo12/odoo-bin -c /etc/od… mai 20 16:03:22 tchana.micronator-dev.org systemd[1]: Started Odoo12. [root@tchana ~]# </file> On arrête Odoo. <file> [root@tchana ~]# systemctl stop odoo12 [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status odoo12 | grep Active Active: inactive (dead) since lun. 2019-05-20 16:05:48 EDT; 1min 31s ago [root@tchana ~]# </file> On se substitue à l'utilisateur postgres. <file> root@tchana ~]# su - postgres Dernière connexion : vendredi 17 mai 2019 à 00:12:36 EDT sur pts/0 -bash-4.2$ </file> On entre dans la console PostgreSQL. <file> -bash-4.2$ psql psql (11.3) Saisissez « help » pour l'aide. postgres=# </file> On affiche les BD présentes. <file> postgres=# \list Liste des bases de données Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès ———–+————–+———-+—————–+————–+———————- Odoo-12 | odoo | UTF8 | C | fr_FR.utf8 | postgres | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | template0 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (4 lignes) postgres=# </file> On supprime la BD actuelle d'Odoo
(ne pas oublié les apostrophes ' ). <file> -bash-4.2$ dropdb 'Odoo-12' -bash-4.2$ </file> On affiche les BD présentes. <file> postgres=# \list Liste des bases de données Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès ———–+————–+———-+—————–+————–+———————- postgres | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | template0 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (3 lignes) postgres=# </file> La base de données Odoo-12 n'est plus présente, elle a bien été supprimée. On quitte la console PostgreSQL. <file> postgres=# \q -bash-4.2$ </file> On revient à l'utilisateur root. <file> -bash-4.2$ exit déconnexion root@tchana ~]# </file> On relance Odoo pour pouvoir ré-insérer la bases de données originale. <file> root@tchana ~]# systemctl start odoo12 root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status odoo12 | grep Active Active: active (running) since lun. 2019-05-20 16:22:45 EDT; 51s ago [root@tchana ~]# </file>
===== Restauration manuelle =====
Référence: https://linuxize.com/post/how-to-setup-automatic-odoo-backup/. On lance la restauration. (Peut prendre quelques instants.) Faire attention au mot de passe s'il a été changé. <file> [root@tchana ~]# curl -F 'master_pwd=fghtbgh' \ -F backup_file=@/var/lib/pgsql/sauvegarde/Odoo-12.zip \ -F 'copy=true' \ -F 'name=Odoo-12' \ http://localhost:8069/web/database/restore <!DOCTYPE html> <html> <head> <meta http-equiv=“content-type” content=“text/html; charset=utf-8”> <title>Odoo</title> <link rel=“shortcut icon” href=”/web/static/src/img/favicon.ico“ type=“image/x-icon”> … [root@tchana ~]# </file> ==== Vérification ==== On se logue à Odoo et on vérifie si tout est tel qu'avant la sauvegarde: https://www.odoo.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.

** Tout est tel qu'auparavant. **

===== Suppression de la restriction des connexions ===== On supprime la restriction des connexions à Odoo selon la section Suppression de la restriction des connexions à Odoo.
===== Instantané VirtualBox ===== À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.

La sauvegarde et la restauration manuelle fonctionnent correctement.


====== Sauvegarde NethServer ====== ===== Description =====
Référence: http://docs.nethserver.org/en/v7/backup.html. La récupération d'une sauvegarde est le seul moyen de restaurer une machine en cas de sinistre. Le système gère deux types de sauvegardes: - Sauvegarde de la configuration
Ce type de sauvegarde ne contient que les fichiers de configuration du système. Son objectif est de restaurer rapidement une machine en cas de récupération après sinistre. - Sauvegarde des données
Ce type de sauvegarde est activée par l’installation du module “Sauvegarde” et contient, par défaut, toutes les données stockées dans le système
(répertoires des utilisateurs, dossiers partagés, courriels, etc). Cette sauvegarde s'exécute une fois par jour et peut être complète ou incrémentielle sur une base hebdomadaire (six incrémentielles et la septième complète). Elle contient également l'archive de la Sauvegarde de la configuration. Plusieurs sauvegardes peuvent être configurées pour enregistrer différentes données à des intervalles différents.
Lorsque la machine est fonctionnelle, une restauration complète des données peut être effectuée même si la machine est déjà en production.
===== Sauvegarde de la configuration =====
Référence: https://docs.nethserver.org/projects/nethserver-devel/en/latest/nethserver-backup-config.html. Depuis la page Configuration → Sauvegarde (configuration), la sauvegarde de la configuration du système (passwd, config databases, etc) peut être créée, envoyée ou configurée. En outre, une tâche automatisée s'exécute chaque nuit à 00h15 et crée une nouvelle archive, /var/lib/nethserver/backup/backup-config.tar.xz si un des fichiers à sauvegarder a été modifié au cours des dernières 24 heures. ==== Config de la sauvegarde de la configuration=== Configuration → Sauvegarde (configuration) → onglet Configurer, on spécifie le nombre de sauvegardes automatiques à conserver.

Ces sauvegardes n'ont que quelques Ko; on peut en conserver un assez grand nombre. Elles sont stockées dans le répertoire /var/lib/nethserver/backup/history et son numérotées de c00.tar.xz à cnn.tar.xz. La liste des modules installés est incluse dans l'archive de sauvegarde. La procédure de restauration peut télécharger et installer automatiquement les modules énumérés. ==== Personnalisation ==== === Inclusion === Dans la plupart des cas, il n'est pas nécessaire de modifier la Sauvegarde de la configuration, mais peut être utile par exemple si vous avez une configuration httpd personnalisée. Dans ce cas, vous pouvez ajouter /chemin/nom du fichier contenant la personnalisation à la liste des fichiers à sauvegarder. Si vous souhaitez ajouter un fichier à la Sauvegarde de la configuration, ajoutez une ligne au fichier /etc/backup-config.d/custom.include. === Exclusion === Si vous souhaitez exclure un fichier de la Sauvegarde de la configuration, ajoutez une ligne au fichier /etc/backup-config.d/custom.exclude. ==== Lancement de la Sauvegarde de la configuration ==== Configuration → Sauvegarde (configuration) → CRÉER UNE SAUVEGARDE.



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

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


La sauvegarde a été créée et on voit sa description, entrée ci-dessus lors de sa création. On peut télécharger la sauvegarde sur le poste de travail en cliquant Télécharger.



Enregistrer le fichier → OK.


Enregistrer.

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


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



Envoyer.



Parcourir…

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


- On entre une description.
- ENVOYER.


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




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

- Si l'option Télécharger les modules automatiquement est cochée, les modules nécessaires seront téléchargés et installés automatiquement.
- RESTAURER.





La restauration est en cours.


La restauration a réussie. Nous aurions pu récupérer directement
Première sauvegarde, car elle est dans la liste de celles qui sont encore stockée sur le Serveur NethServer.


===== Sauvegarde des données ===== Les sauvegardes sont conservées dans: /var/lib/nethserver/backup/duplicity/backup-data/. NethServer implémente 2 types de sauvegarde des données: - Sauvegarde unique
(primaire, par défaut, compatible avec les versions antérieures) - Sauvegardes multiples (multi-sauvegardes, multi-moteurs) La sauvegarde des données peut être effectuée à l'aide de différents moteurs: - Duplicity (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 dorsales5) prises en charge: - CIFS - NFS - USB - WebDAV (seulement en cas de sauvegarde unique) ==== Sauvegarde unique ==== Il s'agit de la sauvegarde système par défaut pouvant être configurée et restaurée à l'aide de l'interface Web. - Peut être planifiée une fois par jour. - Peut inclure les journaux du système. - Envoie des notifications à l'administrateur du système ou à une adresse courriel externe. ==== Répertoire partagé pour les sauvegardes ==== - Nos sauvegardes utiliseront le protocol CIFS (Common Internet File System). - Elles seront téléversées automatiquement dans un répertoire partagé sur le poste de travail. Il nous faut donc un répertoire partagé sur le poste de travail afin que le Serveur NethServer puisse y déposer les fichiers de la sauvegarde.

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



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




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


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


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




Onglet Partage → Partage avancé…


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



Ajouter…

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



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

Sélectionner michelandre → cocher toutes les Autorisations.

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


- OK.

- Le répertoire est partagé → OK.


Vérification

Dans l'Explorateur Windows, l'utilisateur michelandre entre l'adresse du poste de travail: \\10.10.10.81.

Il voit le répertoire de partage: Sauvegarde.

Tout est bien paramétré.


==== Installation du module Sauvegarde ==== Administration → Gestionnaire des logiciels → on coche Sauvegarde → AJOUTER.


APPLIQUER LES CHANGEMENTS.

Recharger la page pour afficher les nouveaux menus.


==== Sauvegardes (données) ====

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


On entre les informations demandées → SOUMETTRE.


Notification

⦿ Notifier
On préfère Toujours être notifié lorsqu'une sauvegarde est effectuée.

⦿ Adresse email personnalisée
Pour recevoir les courriels, on entre l'adresse courriel de l'administrateur de tous les serveurs de notre site.

Adresse de l'expéditeur
On spécifie l'adresse courriel de l'admin du serveur d'où provient la notification.

→ SOUMETTRE.

==== Vérifications à la ligne de commande ==== === Sauvegarde (configuration) === On affiche les propriétés de la configuration ”Sauvegarde (configuration)“. <file> [root@tchana ~]# config show backup-config backup-config=configuration HistoryLength=31 status=enabled [root@tchana ~]# </file> HistoryLength: la valeur donnée au paramètre Configuration → Sauvegarde (Configuration) → Automatic backups to keep à la section 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)“. <file> [root@tchana ~]# config show backup-data backup-data=configuration IncludeLogs=enabled [root@tchana ~]# </file> IncludeLogs: nous avons coché Configuration → Sauvegarde (données) → onglet Général → Advanced options → Include system logs à la section Sauvegarde (données). On affiche les propriétés Sauvegarde (données). <file> [root@tchana ~]# db backups show backup-data=duplicity BackupTime=0 3 * * * CleanupOlderThan=56D FullDay=0 NFSHost= NFSShare= Notify=always NotifyFrom=admin@micronator-dev.org NotifyTo=michelandre@micronator.org SMBHost=10.10.10.81 SMBLogin=michelandre SMBPassword=mot-de-passe SMBShare=Sauvegarde Type=incremental USBLabel= VFSType=cifs VolSize=250 WebDAVLogin= WebDAVPassword= WebDAVUrl= status=enabled [root@tchana ~]# </file> 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. <file> [root@tchana ~]# db backups setprop backup-data VolSize 2048 [root@tchana ~]# </file> On signale le changement. <file> [root@tchana ~]# signal-event nethserver-backup-data-update [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# db backups show → grep VolSize VolSize=2048 [root@tchana ~]# </file> ==== Lancement forcé de la sauvegarde ==== === Première sauvegarde === On peut forcer le lancement d'une sauvegarde en exécutant la commande ci-dessous. <file> [root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:28:03 Pre backup scripts status: SUCCESS ————–[ Backup Statistics ]————– StartTime 1549650495.78 (Fri Feb 8 13:28:15 2019) EndTime 1549650497.91 (Fri Feb 8 13:28:17 2019) ElapsedTime 2.13 (2.13 seconds) SourceFiles 419 SourceFileSize 24495192 (23.4 MB) NewFiles 419 NewFileSize 24495192 (23.4 MB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 419 RawDeltaSize 24467434 (23.3 MB) TotalDestinationSizeChange 1963840 (1.87 MB) Errors 0 ————————————————- Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:28:19 Time elapsed: 0 hours, 0 minutes, 16 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.67 GB 132.16 GB 85.6% [root@tchana ~]# </file> Cette sauvegarde (1 918 Ko) est complète.

On vérifie la date. <file> [root@tchana ~]# date ven février 8 13:32:59 EDT 2019 [root@tchana ~]# </file> Même si nous sommes vendredi et que nous avons paramétré les sauvegardes complètes pour les dimanches seulement, cette sauvegarde est complète, car c'est la première à ce jour. === Deuxième sauvegarde === On peut forcer une autre sauvegarde pour générer une incrémentielle. <file> [root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:35:07 Pre backup scripts status: SUCCESS ————–[ Backup Statistics ]————– StartTime 1549650912.53 (Fri Feb 8 13:35:12 2019) EndTime 1549650912.95 (Fri Feb 8 13:35:12 2019) ElapsedTime 0.42 (0.42 seconds) SourceFiles 422 SourceFileSize 24526628 (23.4 MB) NewFiles 9 NewFileSize 23980 (23.4 KB) DeletedFiles 0 ChangedFiles 70 ChangedFileSize 14856835 (14.2 MB) ChangedDeltaSize 0 (0 bytes) DeltaEntries 79 RawDeltaSize 457642 (447 KB) TotalDestinationSizeChange 76371 (74.6 KB) Errors 0 ————————————————- Les métadonnées locales et distantes sont déjà synchronisées. Aucune synchronisation nécessaire. Date de la dernière sauvegarde complète : Fri Feb 08 13:28:03 2019 Aucun ancien jeu de sauvegarde n’a été trouvé, rien n’a été supprimé. Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:35:14 Time elapsed: 0 hours, 0 minutes, 7 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.68 GB 132.15 GB 85.6% [root@tchana ~]# </file> 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. <file> [root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:44:43 Pre backup scripts status: SUCCESS ————–[ Backup Statistics ]————– StartTime 1549651488.35 (Fri Feb 8 13:44:48 2019) EndTime 1549651489.30 (Fri Feb 8 13:44:49 2019) ElapsedTime 0.95 (0.95 seconds) SourceFiles 422 SourceFileSize 24547401 (23.4 MB) NewFiles 422 NewFileSize 24547401 (23.4 MB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 422 RawDeltaSize 24519532 (23.4 MB) TotalDestinationSizeChange 1996425 (1.90 MB) Errors 0 ————————————————- Les métadonnées locales et distantes sont déjà synchronisées. Aucune synchronisation nécessaire. Date de la dernière sauvegarde complète : Fri Feb 08 13:28:03 2019 Aucun ancien jeu de sauvegarde n’a été trouvé, rien n’a été supprimé. Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:44:51 Time elapsed: 0 hours, 0 minutes, 8 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.68 GB 132.15 GB 85.6% [root@tchana ~]# </file> La troisième sauvegarde est complète car nous avons paramétré les complètes pour les
vendredis. Si nous lançons une quatrième sauvegarde, elle sera complète elle aussi, car nous sommes toujours vendredi. On remet le paramètre des sauvegardes complètes pour les dimanches.

=== Exemple de récupération du fichier de sauvegarde de la configuration === Pour une reprise après sinistre, on peut récupérer le fichier d'une sauvegarde de la configuration directement depuis le fichier backup-config.tar.xz dans le répertoire de stockage - Sauvegarde du poste de travail. On se rend dans le répertoire de stockage, on claque sur le fichier backup-config.tar.xz → 7-Zip → Ouvrir archive et on navigue jusqu'au répertoire \var/lib\nethserver\backup\history.

Les sauvegardes de la configuration du serveur sont incluses dans la sauvegarde des données, car nous avons fait ce choix lors de la configuration de la sauvegarde des données.

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


OK.

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

=== Exclusion de fichiers/répertoire === On peut exclure des fichiers/répertoires en les spécifiant dans le fichier d'exclusion: /etc/backup-data.d/custom.exclude.

===== Restauration des données ===== 1) Nous créons un fichier dans le répertoire personnel de root.
2) Nous lançons une sauvegarde.
3) Nous supprimons le fichier créé avant la sauvegarde, celui de l' étape 1.
4) Nous récupérons ce fichier contenu dans la dernière sauvegarde.
5) On vérifie la récupération. 1) On crée le fichier <file> [root@tchana ~]# touch toto [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# ls -ls toto 0 -rw-r–r– 1 root root 0 Feb 8 13:55 toto [root@tchana ~]# </file> 2) On lance une sauvegarde. <file> [root@tchana ~]# /sbin/e-smith/backup-data -b backup-data Backup: backup-data Backup started at 2019-02-08 13:56:09 Pre backup scripts status: SUCCESS … Action 'backup-data-duplicity backup-data': SUCCESS Post backup scripts status: SUCCESS Backup status: SUCCESS Backup ended at 2019-02-08 13:56:17 Time elapsed: 0 hours, 0 minutes, 8 seconds Disk Usage: Size Used Available Use% 917.83 GB 785.68 GB 132.15 GB 85.6% [root@tchana ~]# </file> 3) Nous supprimons le fichier créé avant la sauvegarde, celui de la première étape. <file> [root@tchana ~]# rm toto rm : supprimer fichier vide « toto » ? y [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# ls -ls toto ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type [root@tchana ~]# </file> ==== Restauration ==== 4) On récupère le fichier. 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. <file> [root@tchana ~]# ls -ls toto 0 -rw-r–r– 1 root root 0 Feb 8 13:55 toto [root@tchana ~]# </file> Le fichier a été restauré.
==== Recherche de fichiers dans les sauvegardes ==== On peut rechercher un fichier dans les sauvegardes
(peut prendre un certain temps). <file> [root@tchana ~]# /sbin/e-smith/backup-data-list -b backup-data | grep toto Ven février 8 13:55:22 2019 root/toto [root@tchana ~]# </file>

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 sur les 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: migrer le serveur SOURCE vers le serveur DESTINATION.



====== Activation du mode développeur d'Odoo ====== ===== Description =====
Référence: https://riptutorial.com/fr/odoo-8/topic/3311/comment-activer-le-mode-developpeur-openerp.
Le mode
développeur Odoo vous permet d'apporter des modifications substantielles à la base de données Odoo, 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 qu'Odoo 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 Odoo 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 Odoo. 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 dans l'URL, après le mot clé web, ?debug= et on appuie sur [Entrée]. La page sera rechargée et le mode développeur/débogage activé.


===== Commandes du mode développeur =====

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


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

À la page Configuration, on clique Technique, un menu se déroule et affiche plusieurs autres choix de commandes.


===== Activation par un clic de la souris ===== Sur la page Configuration, ci-contre dans le cadre
Partagez l'engouement, on peut activer le mode développeur avec ou sans éléments d'actif (assets) en cliquant sur un des liens suivants: - Activer le mode développeur. - Activer le mode développeur (avec les assets).



====== Mises à jour ====== ===== Odoo ===== Nous avons utilisé git pour l'installation d'Odoo-12; il peut donc aussi servir pour la mise à jour du coeur d'Odoo et de ses extensions; puis ensuite on met à 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 ou se rendre à la page:

https://www.odoo.micronator-dev.org/web/database/manager.

S'assurer d'avoir une sauvegarde de la base de donnée PostgreSQL avant de réaliser la mise à jour. Voir la section Sauvegarde.

==== Odoo et ses extensions ==== Référence: https://www.cier.tech/fr_FR/blog/notre-blog-1/post/how-to-update-odoo-from-github-25. On arrête Odoo. <file> [root@tchana ~]# systemctl stop odoo12 [root@tchana ~]# </file> On vérifie l'arrêt. <file> [root@tchana ~]# systemctl status odoo12 | grep -i Active: Active: inactive (dead) since mar. 2019-05-21 23:23:22 EDT; 44min ago [root@tchana ~]# </file> Notez que vous devez faire la mise à jour en tant qu'utilisateur odoo. On se substitue à l'utilisateur odoo. <file> [root@tchana ~]# su - odoo Dernière connexion : dimanche 19 mai 2019 à 21:23:18 EDT sur pts/0 [odoo@tchana ~]$ </file> On vérifie. <file> [odoo@tchana ~]$ whoami odoo [odoo@tchana ~]$ </file> On se rend dans le répertoire /opt/odoo/odoo12. <file> [odoo@tchana ~]$ cd /opt/odoo/odoo12 [odoo@tchana odoo12]$ </file> On vérifie. <file> [odoo@tchana odoo12]$ pwd /opt/odoo/odoo12 [odoo@tchana odoo12]$ </file> ==== Récupération des mises à jour ==== On récupère les mises à jour avec git. <file> [odoo@tchana odoo12]$ git fetch origin 12.0 –depth=1 remote: Enumerating objects: 2717, done. remote: Counting objects: 100% (2717/2717), done. remote: Compressing objects: 100% (926/926), done. remote: Total 1595 (delta 1226), reused 742 (delta 664), pack-reused 0 Receiving objects: 100% (1595/1595), 3.88 MiB | 1.44 MiB/s, done. Resolving deltas: 100% (1226/1226), completed with 1008 local objects. From https://github.com/odoo/odoo * branch 12.0 → FETCH_HEAD [odoo@tchana odoo12]$ </file> ==== Application des mises à jour ==== Nous avons récupérer toutes les mise à jour et nous devons demander au système de les appliquer. À ce stade, le système sait quelles sont les modifications qui doivent être effectuées, mais nous ne les avons pas encore appliquées; nous pouvons 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. <file> [odoo@tchana odoo12]$ git reset –hard origin/12.0 HEAD is now at c545783 [FIX] account: communication size [odoo@tchana odoo12]$ </file> On peut voir qu'un bogue a été résolu [FIX]. Le code Odoo est maintenant à jour et a été synchronisé avec les derniers changements apportés.
==== Base de donnée PostgreSQL ==== On met à jour la base de données PostgreSQL afin qu'elle prenne note de toutes les modifications et qu'elle se les applique à elle-même. <file> [odoo@tchana odoo12]$ /usr/bin/scl enable rh-python36 – /opt/odoo/odoo12-venv/bin/python3 \ /opt/odoo/odoo12/odoo-bin -c /etc/odoo-server.conf \ -u all -d Odoo-12 </file> ●
/usr/bin/scl enable rh-python36/opt/odoo/odoo12-venv/bin/python3 \
Indique au système d'activer la
Collection rh-python36 et d'utiliser la commande python3 de l'environ­nement virtuel odoo12-venv. La commande se poursuit sur la ligne suivante ”\“. ● /opt/odoo/odoo12/odoo-bin -c /etc/odoo-server.conf \
Lance Odoo en utilisant le fichier de configuration /etc/odoo-server.conf et la commande se poursuit sur la ligne suivante ”\“. ●
-u all -d Odoo-12
Indique de mettre à jour
(update) tous les modules (all) de la base de données (database) Odoo-12. Pour une explication des paramètres de la commande odoo-bin, voir: https://www.odoo.com/documentation/11.0/reference/cmdline.html
==== Surveillance de la mise à jour de la BD ==== On ouvre une deuxième session PuTTY, on se connecte en tant que root et on lance la commande suivante pour surveiller la mise à jour de la base de données. <file> [root@tchana ~]# top -d1 | grep python3 7779 odoo 20 0 340396 39236 8208 R 74,5 1,0 0:00.76 python3 7779 odoo 20 0 469568 65684 10528 S 81,0 1,7 0:01.57 python3 … 7779 odoo 20 0 489852 77196 11732 S 77,0 2,0 0:19.79 python3 7779 odoo 20 0 563584 77416 11732 S 41,2 2,0 0:20.33 python3 5926 odoo 20 0 637460 80352 11672 S 1,0 2,1 0:20.78 python3 5926 odoo 20 0 637460 80352 11672 S 1,0 2,1 0:20.79 python3 5926 odoo 20 0 637460 80352 11672 S 1,0 2,1 0:20.80 python3 [root@tchana ~]# </file> C'est la commande python3, de l'environnement virtuel odoo12-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 l'utilisation du 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 Odoo ==== On revient à l'écran original de la session PuTTY. Les paramètres de la mise à jour de la base de données
(-u all -d Odoo-12) faisaient partie de la commande du lancement d'Odoo.

[odoo@tchana odoo12]$ /usr/bin/scl enable rh-python36 -- /opt/odoo/odoo12-venv/bin/python3 \
                      /opt/odoo/odoo12/odoo-bin  -c /etc/odoo-server.conf                  \
                      -u all  -d Odoo-12

La mise à jour de la base de données est terminée, mais la commande du lancement d'Odoo continue de rouler. Vu que nous n'avons pas utiliser systemctl pour lancer Odoo, ce dernier roule donc en tant que commande et non en tant que service. Si nous fermons la fenêtre de cette session PuTTY, Odoo 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]. <file> ^C [odoo@tchana odoo12]$ </file> On quitte la substitution d'utilisateur pour retourner à root. <file> [odoo@tchana odoo12]$ exit déconnexion [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# whoami root [root@tchana ~]# </file> On redémarre le service Odoo en utilisant systemctl.
Contrairement à une commande, un service ne s'arrête pas si on ferme la session qui l'a lancée. <file> [root@tchana ~]# systemctl start odoo12 [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# systemctl status odoo12 | grep Active: Active: active (running) since mer. 2019-05-22 01:44:10 EDT; 1min 4s ago [root@tchana ~]# </file> ==== Vérification du site Odoo ==== On vidange l'historique de notre navigateur et on s'assure que
java script et les témoins soient activés.
On se connecte à Odoo et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour: https://www.odoo.micronator-dev.org.

===== PostgreSQL ===== On procède à la mise à jour de PostgreSQL-11. <file> [root@tchana ~]# yum update -y –disablerepo=* –enablerepo=pgdg11 \ postgresql11 postgresql11-libs \ postgresql11-server postgresql11-contrib \ postgresql11-devel postgresql11-docs \ postgresql11-test Modules complémentaires chargés : changelog, fastestmirror, nethserver_events, protectbase Loading mirror speeds from cached hostfile 0 packages excluded due to repository protections No packages marked for update [root@tchana ~]# </file> Si des mises à jour étaient disponibles, elles seraient installées et dans ce cas, il faudrait redémarrer PostgreSQL et Odoo. On redémarre le service PostgreSQL.

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

[root@tchana ~]#

On redémarre le service Odoo.

[root@tchana ~]# systemctl restart odoo12

[root@tchana ~]#

==== Vérification du site Odoo ==== 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.odoo.micronator-dev.org.

===== RH-Python36 ===== Mise à jour de la Collection RH-Python36. <file> [root@tchana ~]# yum update -y –enablerepo=centos-sclo-rh rh-python36* Modules complémentaires chargés : changelog, fastestmirror, nethserver_events, protectbase Loading mirror speeds from cached hostfile * ce-base: mirror.genesisadaptive.com * ce-extras: mirror.genesisadaptive.com * ce-sclo-rh: mirror.genesisadaptive.com * ce-sclo-sclo: mirror.genesisadaptive.com * ce-updates: mirror.genesisadaptive.com * centos-sclo-rh: mirror.csclub.uwaterloo.ca * epel: mirror.csclub.uwaterloo.ca * nethforge: mirror.nethserver.org * nethserver-base: mirror.nethserver.org * nethserver-updates: mirror.nethserver.org * remi-safe: mirror.team-cymru.com 1447 packages excluded due to repository protections No packages marked for update [root@tchana ~]# </file> S'il y a eu des mises à jour, on doit redémarrer le service Odoo.

[root@tchana ~]# systemctl restart odoo12

[root@tchana ~]#

==== Vérification du site Odoo ==== On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Odoo et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour de PostgreSQL: https://www.odoo.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 et nous l'avons installé comme prérequis d'Odoo. - npm fonctionne avec un terminal et gère les dépendances pour une application. - 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 d'Odoo-11, 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
...

Les développeurs d'Odoo ne sont pas renommés pour la compatibilité avec les versions des logiciels prérequis. Il est plus que fortement recommandé de toujours utiliser un système de développement pour vérifier les mises à jours du code Odoo 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-11 du “Cours “NethServer-101”. On vérifie la version actuelle. <file> [root@tchana ~]# npm –version 6.4.1 [root@tchana ~]# </file> ==== Mise à jour de npm/node ==== <file> [root@tchana ~]# npm install -g npm /usr/bin/npm → /usr/lib/node_modules/npm/bin/npm-cli.js /usr/bin/npx → /usr/lib/node_modules/npm/bin/npx-cli.js + npm@6.9.0 added 54 packages from 9 contributors, removed 15 packages and updated 47 packages in 11.323s [root@tchana ~]# </file> Une mise à jour a été effectuée (…updated 47 packages…). Vu qu'il y a eu une mise à jour, on doit redémarrer le service Odoo. <file> [root@tchana ~]# systemctl restart odoo12 [root@tchana ~]# </file> ==== Vérification du site Odoo ==== On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Odoo et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour de npm: https://www.odoo.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 Odoo.

[root@tchana ~]# systemctl restart odoo12

[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 à Odoo et on vérifie que tout fonctionne correctement tel qu'avec la version de npm originalement installée: https://www.odoo.micronator-dev.org.

===== less et less-plugin-clean-css ===== On vérifie la version actuelle de less. <file> [root@tchana ~]# less –version less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less [root@tchana ~]# </file> On vérifie la version actuelle de lessc. <file> [root@tchana ~]# lessc –version lessc 3.9.0 (Less Compiler) [JavaScript] [root@tchana ~]# </file> Pour éviter les erreurs de certificats SSL et de téléchargement. <file> [root@tchana ~]# npm configset strict-ssl false [root@tchana ~]# </file> Mise à jour de less et de less-plugin-clean-css. <file> [root@tchana ~]# npm install -g less less-plugin-clean-css /usr/bin/lessc → /usr/lib/node_modules/less/bin/lessc + less@3.9.0 + less-plugin-clean-css@1.5.1 updated 2 packages in 3.269s [root@tchana ~]# </file> Deux paquets ont été mis à jour, on devra redémarrer le service Odoo après la vérification de less et lessc. On vérifie la version actuelle de less. <file> [root@tchana ~]# less –version less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less [root@tchana ~]# </file> Il n'y a pas eu de mises à jour de less. S'il y en avait eues, elles auraient été installées. On vérifie la version actuelle de lessc. <file> [root@tchana ~]# lessc –version lessc 3.9.0 (Less Compiler) [JavaScript] [root@tchana ~]# </file> Il n'y a pas eu de mises à jour de lessc. S'il y en avait eues, elles auraient été installées. Par contre, il y a eu la mise à jour de deux paquets selon le résultat du paragraphe “Mise à jour de less et de less-plugin-clean-css”. Redémarrage du service Odoo. <file> [root@tchana ~]# systemctl restart odoo12 [root@tchana ~]# </file> ==== Vérification du site Odoo ==== On vidange l'historique de notre navigateur et on s'assure que
java script et les témoins soient activés.
On se connecte à Odoo et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour des deux paquets: https://www.odoo.micronator-dev.org.

===== wkhtmltox ===== ==== Dépendances pour wkhtmltopdf ==== Mise à jour des dépendances. <file> [root@tchana ~]# yum update -y fontconfig libpng libX11 libXext libXrender \ xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi Modules complémentaires chargés : changelog, fastestmirror, nethserver_events, protectbase Configuration du processus de mise à jour Loading mirror speeds from cached hostfile * base: centos.mirror.ca.planethoster.net … No packages marked for update [root@tchana ~]# </file> ==== wkhtmltox ==== Pour trouver la dernière version de wkhtmltopdf on se rend à l'URL ci-dessous: 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 Odoo.

[root@tchana ~]# systemctl restart odoo12

[root@tchana ~]#

==== Vérification du site Odoo ==== On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Odoo et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour: https://www.odoo.micronator-dev.org.

===== Serveur NethServer ===== De temps à autre, il faut mettre à jour le Serveur NethServer pour diverses raisons: suite à des mises à jour des logiciels qui composent NethServer, failles de sécurité découvertes par des utilisateurs ou des développeurs, etc.

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


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

La mise à jour du Serveur NethServer s'occupe aussi de celle de la Collection PHP. ==== Vérification du site Odoo ==== On vidange l'historique de notre navigateur et on s'assure que java script et les témoins soient activés.
On se connecte à Odoo et on vérifie que tout fonctionne correctement tel qu'avant la mise à jour NethServer: https://www.odoo.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 ====== ===== Fuseau horaire ===== Pour le fuseau horaire, il existe un fichier pour
Montréal. <file> [root@tchana ~]# ls -ls /usr/share/zoneinfo/America/ | grep Montreal 4 -rw-r–r– 3 root root 3477 1 avril 08:27 Montreal [root@tchana ~]# </file> ==== Changement du fuseau horaire ==== On affiche le fuseau horaire actuel. <file> [root@tchana ~]# ls -l /etc/localtime lrwxrwxrwx 1 root root 37 19 mai 23:48 /etc/localtime → ../usr/share/zoneinfo/America/Toronto [root@tchana ~]# </file> On change le fuseau horaire pour celui de Montréal. <file> [root@tchana ~]# timedatectl set-timezone America/Montreal [root@tchana ~]# </file> On vérifie. <file> [root@tchana ~]# ls -l /etc/localtime lrwxrwxrwx 1 root root 38 22 mai 14:02 /etc/localtime → ../usr/share/zoneinfo/America/Montreal [root@tchana ~]# </file> Voilà! Le fuseau horaire Montréal est récupéré…

===== Certificat Let's Encrypt ===== ==== Description ==== Un certificat émis par l'autorité de certification Let's Encrypt vous permettra de chiffrer les connexions de notre 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 ==== Si la demande d'un certificat a fonctionnée sans erreur, essayez de vous connecter à la page de l'interface Web 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 examine le certificat émis par Let's Encrypt pour un autre de nos serveurs: dorgee.micronator-101.org qui est directement branché à l'Internet. On se connecte à l'interface Web: https://www.micronator-101.org:980.

- Le cadenas est vert.
- On se logue.

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


Plus d'informations.



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

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



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


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

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


Hostname: → micronator-101.org → Submit.

- Overall Rating A.
- Certificate 100%.


==== Serveur de Production ==== Une fois que vous maîtrisez tous les aspects de:
Odoo, Let's Encrypt, Fail2ban et de BackupPC, vous pouvez créer un réseau de Production incluant un serveur Odoo, un serveur de sauvegardes et un serveur de développement; ce qui est le but ultime que nous vous souhaitons.


===== 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. <file> rd.break </file>
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. <file> switch_root:/# mount -o remount,rw /sysroot switch_root:/# </file>
Une fois le système de fichiers remonté, changez-le en une
prison chroot afin que le répertoire /sysroot soit utilisé comme racine du système de fichiers. Ceci est nécessaire pour que toutes les commandes que nous exécuterons se rapportent à /sysroot. La commande à lancer est chroot /sysroot. <file> switch_root:/# chroot /sysroot sh-4.2# </file>
À partir d'ici, le mot de passe de root peut être réinitialisé à l’aide de la commande passwd. <file> sh-4.2# passwd Changing password for user root. New password: Nouveau-mot-de-passe-de-root Retype new passwd: Nouveau-mot-de-passe-de-root passwd: all authentification tokens updated successfully. sh-4.2# </file>
Si vous n'utilisiez pas SELinux, vous pourriez redémarrer à ce stade et tout irait bien. Cependant, par défaut, CentOS/RHEL-7 active SELinux. Nous devons donc corriger le contexte du fichier /etc/shadow. En effet, lorsque la commande passwd est exécutée, elle crée un nouveau fichier /etc/shadow. SELinux n'étant pas en cours d'exécution dans ce mode, le fichier est créé sans aucun contexte SELinux, ce qui peut entraîner des problèmes lors du redémarrage. On crée le fichier /.autorelabel à l’aide de touch. <file> sh-4.2# touch /.autorelabel sh-4.2# </file> La création de ce fichier effectuera automatiquement un ré-étiquetage de tous les fichiers au prochain démarrage. Notez que cela peut prendre un certain temps en fonction de la quantité de fichiers que vous avez. Peut prendre environ 2 minutes pour un serveur CentOS-7 ordinaire. On quitte l'environnement “chroot”. <file> sh-4.2# exit exit sh-4.2# </file> On quitte le shell racine initramfs
(peut prendre un certain temps, être patient…). Le serveur s'amorce. <file> sh-4.2# exit logout … </file> ==== Vérification ==== À la console du serveur, vous devriez pouvoir vous connecter et utiliser le système avec le nouveau mot de passe que vous avez créé.

Victoire totale, hissons la bannière de la victoire.
—- ====== Crédits ====== © 2015-2018-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-02_Odoo-12_2019-08-13_18h50.odt. Historique des modifications: ^Version^Date^Commentaire^Auteur| |RC-1|2015-01-11|Début.|Michel-André| |0.0.1|2015-01-24|Début.|Michel-André| |0.0.2|2015-02-22|Petites modifications.|Michel-André| |0.0.3|2015-03-13|Correction orthographique.|Michel-André| |0.0.4|2015-04-05|Vérification complète. Changement des propriétés du document dans LibreOffice pour ajuster le titre.|Michel-André| |0.1.0|2018-05-28|Mise à jour vers SME-9.2, PostgreSQL-10.4, RH-PHP70, RH-Python36 et Odoo-12.|Michel-André| |0.2.0|2018-07-21|- Forcer le lien pour l'arrêt de PostgreSQL car le lien créé par l'ins­tal­la­tion n'est pas fonctionnel.
- Modifications du chapitre Mises à jour pour inclure: Odoo, PostgreSQL, RH-PHP70, RH-Python36 et le Serveur SME.|Michel-André| |0.3.0|2018-08-08|PostgreSQL, RH-Python36, nodejs et corrections pour la MAJ d'Odoo.|Michel-André| |0.3.1|2018-09-03|Correction de quelques coquilles.|Michel-André| |0.4.0|2018-09-16|Mise à jour complète.|Michel-André| |0.5.0|2019-05-09|Adaptation pour NethServer-7.6.1810.|Michel-André| |0.5.1|2019-08-10|Ajustements pour DokuWiki.|Michel-André| |012345678901| | |012345678901| <html><hr style=“width:50%; margin: 0 auto;”></html> ===== AVIS DE NON-RESPONSABILITÉ ===== Ce document est uniquement destiné à informer. Les informations, ainsi que les contenus et fonctionnalités de ce do­cument sont fournis sans engagement et peuvent être modifiés à tout moment. RF‑232 n'offre aucune garantie quant à l'actualité, la conformité, l'exhaustivité, la qualité et la durabilité des informations, contenus et fonctionnalités de ce document. L'accès et l'utilisation de ce document se font sous la seule responsabilité du lecteur ou de l'utilisateur. RF‑232 ne peut être tenu pour responsable de dommages de quelque nature que ce soit, y compris des dommages di­rects ou indirects, ainsi que des dommages consécutifs résultant de l'accès ou de l'utilisation de ce document ou de son contenu. Chaque internaute doit prendre toutes les mesures appropriées
(mettre à jour régulièrement son logiciel antivirus, ne pas ouvrir des documents suspects de source douteuse ou non connue) de façon à protéger le contenu de son ordina­teur de la contamination d'éventuels virus circulant sur la Toile. Toute reproduction interdite Vous reconnaissez et acceptez que tout le contenu de ce document, incluant mais sans s’y limiter, le texte et les images, sont protégés par le droit d’auteur, les marques de commerce, les marques de service, les brevets, les secrets industriels et les autres droits de propriété intellectuelle. Sauf autorisation expresse de RF-232, vous acceptez de ne pas vendre, délivrer une licence, louer, modifier, distribuer, copier, reproduire, transmettre, afficher publiquement, exécuter en public, publier, adapter, éditer ou créer d’oeuvres dérivées de ce document et de son contenu. ==== Avertissement==== Bien que nous utilisions ici un vocabulaire issu des techniques informatiques, nous ne prétendons nullement à la précision technique de tous nos propos dans ce domaine.

1)
FQDN: Dans le DNS, un Fully Qualified Domain Name (FQDN, ou nom de domaine complètement qualifié) est un nom de domaine qui révèle la position absolue d'un nœud dans l'arborescence DNS en indiquant tous les domaines de niveau supérieur jusqu'à la racine. On parle également de domaine absolu, par opposition aux domaines relatifs. Par convention, le FQDN est ponctué par un point final.
Référence: https://fr.wikipedia.org/wiki/Fully_qualified_domain_name.

2)
multiprocessus - relatif à un système capable d'exécuter plusieurs applications simultanément. Référence:http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8351231.

3)
systemctl: Peut être utilisé pour examiner et contrôler l'état du gestionnaire du système et des services “systemd”.
Référence: man systemctl(1).

4)
systemctl daemon-reload: Recharge la configuration du gestionnaire “systemd”. Ceci relance tous les “generators” (voir systemd.generator [7] ), recharge tous les fichiers de l'unité et recrée l'intégralité de l'arbre de dépendance. Pendant le rechargement du démon, tous les connecteurs logiciel (socket) de “systemd” resteront accessibles. Donc, c’est une recharge “soft”; essentiellement, daemon-reload lit les configurations modifiées et régénère les arbres de dépendance. Cette commande ne doit pas être confondue avec la commande reload.

5)
Applications dorsales: Programme qui, dans une architecture client-serveur, traite les commandes en provenance de l'application frontale. Référence: http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=26527120.

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