GNU/Linux >> Tutoriels Linux >  >> Cent OS

Installez Odoo 13 sur CentOS 8

Odoo est le logiciel professionnel tout-en-un le plus populaire au monde. Il offre une gamme d'applications commerciales, y compris CRM, site Web, commerce électronique, facturation, comptabilité, fabrication, entrepôt, gestion de projet, inventaire et bien plus encore, toutes intégrées de manière transparente.

Ce tutoriel explique comment installer Odoo13 à partir de la source dans un environnement virtuel Python sur une machine CentOS 8. Nous allons télécharger la source Odoo depuis Github et configurer Nginx en tant que proxy inverse.

Prérequis #

Vous devez être connecté en tant que root ou utilisateur avec des privilèges sudo pour terminer l'installation.

Installation des dépendances #

Installez Python 3, Git, pip et toutes les bibliothèques et tous les outils nécessaires pour créer Odoo à partir des sources :

sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel

Création d'un numéro d'utilisateur système

Créez un nouvel utilisateur système et un groupe avec le répertoire personnel /opt/odoo qui exécutera le service Odoo :

sudo useradd -m -U -r -d /opt/odoo13 -s /bin/bash odoo13

Vous pouvez nommer l'utilisateur comme vous le souhaitez, assurez-vous simplement de créer un utilisateur PostgreSQL avec le même nom.

Installation et configuration de PostgreSQL #

Nous allons installer PostgreSQL10 à partir des référentiels CentOS 8 standard :

sudo dnf install @postgresql:10

Une fois l'installation terminée, créez un nouveau cluster de base de données PostgreSQL :

sudo postgresql-setup initdb

Activez et démarrez le service PostgreSQL :

sudo systemctl enable --now postgresql

Créez un utilisateur PostgreSQL avec le même nom que l'utilisateur système créé précédemment, dans notre cas c'est "odoo13":

sudo su - postgres -c "createuser -s odoo13"

Installation de Wkhtmltopdf #

Le wkhtmltox Le package fournit un ensemble d'outils de ligne de commande open source capables de restituer HTML en PDF et en divers formats d'image. Pour imprimer des rapports PDF, vous aurez besoin du wkhtmltopdf outil. La version recommandée pour Odoo est 0.12.5 , qui n'est pas disponible dans les dépôts officiels CentOS 8.

Installez le rpm packagedepuis Github en tapant :

sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm

Installer et configurer Odoo 13 #

Avant de commencer le processus d'installation, passez à l'utilisateur "odoo13":

sudo su - odoo13

Commencez par cloner le code source d'Odoo 13 depuis le dépôt Odoo GitHub :

git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo

Accédez au /opt/odoo13 répertoire et créez un nouvel environnement virtuel Python pour l'installation d'Odoo :

cd /opt/odoo13python3 -m venv venv

Activer l'environnement en utilisant le source commande :

source venv/bin/activate

Installez les modules Python requis :

pip3 install -r odoo/requirements.txt
Si vous rencontrez des erreurs de compilation lors de l'installation, assurez-vous d'avoir installé toutes les dépendances requises répertoriées dans la section Installing Dependencies section.

Une fois l'installation terminée, désactivez l'environnement :

deactivate

Créez un nouveau répertoire pour les addons personnalisés :

mkdir /opt/odoo13/odoo-custom-addons

Revenez à votre utilisateur sudo :

exit

Ensuite, ouvrez votre éditeur de texte et créez le fichier de configuration suivant :

sudo nano /etc/odoo13.conf
/etc/odoo13.conf
[options]
; This is the password that allows database operations:
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo13
db_password = False
addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons

Enregistrez et fermez le fichier.

N'oubliez pas de changer le superadmin_passwd à quelque chose de plus sûr.

Création du fichier d'unité Systemd #

Ouvrez votre éditeur de texte et créez un fichier nommé odoo13.service dans le /etc/systemd/system/ répertoire :

sudo nano /etc/systemd/system/odoo13.service

Collez le contenu suivant :

/etc/systemd/system/odoo13.service
[Unit]
Description=Odoo13
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo13
PermissionsStartOnly=true
User=odoo13
Group=odoo13
ExecStart=/opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Enregistrez le fichier et fermez l'éditeur.

Avertissez Systemd qu'un nouveau fichier d'unité existe :

sudo systemctl daemon-reload

Démarrez et activez le service Odoo en exécutant :

sudo systemctl enable --now odoo13

Vous pouvez vérifier l'état du service avec la commande suivante :

sudo systemctl status odoo13
● odoo13.service - Odoo13
   Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago
 Main PID: 28539 (python3)
    Tasks: 4 (limit: 11524)
   Memory: 94.6M
   CGroup: /system.slice/odoo13.service
           └─28539 /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf

Pour voir les messages enregistrés par le service Odoo, utilisez la commande suivante :

sudo journalctl -u odoo13

Tester l'installation #

Ouvrez votre navigateur et tapez :http://<your_domain_or_IP_address>:8069

En supposant que l'installation est réussie, un écran semblable au suivant apparaît :

Si vous ne pouvez pas accéder à la page, votre pare-feu bloque probablement le port 8069 .

Utilisez les commandes suivantes pour ouvrir le port nécessaire :

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcpsudo firewall-cmd --reload

Configuration de Nginx en tant que proxy de terminaison SSL #

Le serveur Web Odoo par défaut dessert le trafic via HTTP. Pour rendre le déploiement d'Odoo plus sécurisé, nous allons configurer Nginx en tant que proxy de terminaison SSL qui desservira le trafic via HTTPS.

Le proxy de terminaison SSL est un serveur proxy qui gère le cryptage/décryptage SSL. Cela signifie que le proxy de terminaison (Nginx) traitera et déchiffrera les connexions TLS entrantes (HTTPS) et transmettra les requêtes non chiffrées au service interne (Odoo). Le trafic entre Nginx et Odoo ne sera pas crypté (HTTP).

L'utilisation d'un proxy inverse vous offre de nombreux avantages tels que l'équilibrage de charge, la terminaison SSL, la mise en cache, la compression, la diffusion de contenu statique, etc.

Assurez-vous que vous avez satisfait aux prérequis suivants avant de continuer avec cette section :

  • Nom de domaine pointant vers l'adresse IP de votre serveur public. Nous utiliserons example.com .
  • Nginx installé.
  • Certificat SSL pour votre domaine. Vous pouvez installer un certificat SSL Let's Encrypt gratuit.

Ouvrez votre éditeur de texte et créez/modifiez le bloc du serveur de domaine :

sudo nano /etc/nginx/conf.d/example.com

La configuration suivante configure la terminaison SSL, la redirection HTTP vers HTTPS, la redirection WWW vers non-WWW, met en cache les fichiers statiques et active la compression GZip.

/etc/nginx/conf.d/example.com
# Odoo servers
upstream odoo {
 server 127.0.0.1:8069;
}

upstream odoochat {
 server 127.0.0.1:8072;
}

# HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # log files
    access_log /var/log/nginx/odoo.access.log;
    error_log /var/log/nginx/odoo.error.log;

    # Handle longpoll requests
    location /longpolling {
        proxy_pass http://odoochat;
    }

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://odoo;
    }

    # Cache static files
    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo;
    }

    # Gzip
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}
N'oubliez pas de remplacer example.com par votre domaine Odoo et de définir le chemin correct vers les fichiers de certificat SSL. Les extraits utilisés dans cette configuration sont créés dans ce guide.

Une fois que vous avez terminé, redémarrez le service Nginx :

sudo systemctl restart nginx

Ensuite, nous devons dire à Odoo d'utiliser le proxy. Pour cela, ouvrez le fichier de configuration et ajoutez la ligne suivante :

/etc/odoo13.conf
proxy_mode = True

Redémarrez le service Odoo pour que les modifications prennent effet :

sudo systemctl restart odoo13

À ce stade, le proxy inverse est configuré et vous pouvez accéder à votre instance Odoo à :https://example.com

Modification de l'interface de liaison #

Cette étape est facultative, mais c'est une bonne pratique de sécurité.

Par défaut, le serveur Odoo écoute le port 8069 sur toutes les interfaces. Pour désactiver l'accès direct à l'instance Odoo, vous pouvez soit bloquer le port 8069 pour toutes les interfaces publiques ou forcer Odoo à n'écouter que sur l'interface locale.

Nous allons configurer Odoo pour écouter uniquement sur 127.0.0.1 . Ouvrez la configuration ajoutez les deux lignes suivantes à la fin du fichier :

/etc/odoo13.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Enregistrez le fichier de configuration et redémarrez le serveur Odoo pour que les modifications prennent effet :

sudo systemctl restart odoo13

Activation du multitraitement #

Par défaut, Odoo fonctionne en mode multithreading. Pour les déploiements de production, il est recommandé de passer au serveur multitraitement car il augmente la stabilité et permet une meilleure utilisation des ressources système.

Pour activer le multitraitement, vous devez modifier la configuration d'Odoo et définir un nombre non nul de processus de travail. Le nombre de travailleurs est calculé en fonction du nombre de cœurs de processeur dans le système et de la mémoire RAM disponible.

Selon la documentation officielle d'Odoo pour calculer le nombre de travailleurs et la taille de mémoire RAM requise, vous pouvez utiliser les formules et hypothèses suivantes :

Calcul du nombre de travailleurs

  • Nombre maximal théorique de worker =(system_cpus * 2) + 1
  • 1 travailleur peut servir ~=6 utilisateurs simultanés
  • Les nœuds de calcul Cron nécessitent également un processeur

Calcul de la taille de la mémoire RAM

  • Nous considérerons que 20 % de toutes les demandes sont des demandes lourdes et 80 % sont des demandes plus légères. Les requêtes lourdes utilisent environ 1 Go de RAM tandis que les plus légères utilisent environ 150 Mo de RAM
  • RAM nécessaire =number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

Si vous ne savez pas combien de processeurs vous avez sur votre système, utilisez le grep suivant commande :

grep -c ^processor /proc/cpuinfo

Disons que vous avez un système avec 4 cœurs de processeur, 8 Go de mémoire RAM et 30 utilisateurs Odoo simultanés.

  • 30 users / 6 = **5** (5 est le nombre théorique de travailleurs nécessaires)
  • (4 * 2) + 1 = **9** (9 est le nombre maximum théorique de travailleurs)

Sur la base du calcul ci-dessus, vous pouvez utiliser 5 travailleurs + 1 travailleur pour le travailleur cron, soit un total de 6 travailleurs.

Calculez la consommation de mémoire RAM en fonction du nombre de travailleurs :

  • RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM

Le calcul montre que l'installation d'Odoo aura besoin d'environ 2 Go de RAM.

Pour passer en mode multitraitement, ouvrez le fichier de configuration et ajoutez les valeurs calculées :

/etc/odoo13.conf
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5

Redémarrez le service Odoo pour que les modifications prennent effet :

sudo systemctl restart odoo13

Le reste des ressources système sera utilisé par d'autres services qui s'exécutent sur ce système. Dans ce guide, nous avons installé Odoo avec PostgreSQL et Nginx sur le même serveur. Selon votre configuration, d'autres services peuvent également être exécutés sur votre serveur.


Cent OS
  1. Installer Jenkins sur CentOS 8

  2. Installer Odoo 8 sur un VPS CentOS 7

  3. Comment installer Odoo 9 sur CentOS 7

  4. Installez Odoo 10 sur CentOS 7

  5. Comment installer Odoo 13 sur CentOS 8

Comment installer Apache sur CentOS 7

Comment installer Tomcat 8.5 sur CentOS 7

Installez Odoo 11 sur CentOS 7

Installez Odoo 12 sur CentOS 7

Comment installer Odoo sur CentOS 7

Comment installer Odoo sur CentOS 8