GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment déployer Odoo 11 sur Ubuntu 18.04

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.

Il existe plusieurs façons d'installer Odoode en fonction du cas d'utilisation requis. Le moyen le plus simple et le plus rapide d'installer Odoo consiste à utiliser leurs référentiels APT officiels.

Si vous souhaitez avoir plus de flexibilité, par exemple en exécutant plusieurs versions d'Odoo sur un même système, vous pouvez soit utiliser docker et docker composer, soit installer Odoo dans un environnement virtuel.

Ce guide couvre les étapes nécessaires à l'installation et à la configuration d'Odoo pour la production à l'aide de la source Git et de l'environnement virtuel Python sur un système Ubuntu 18.04.

Avant de commencer #

Connectez-vous à votre machine Ubuntu en tant qu'utilisateur sudo et mettez à jour le système avec les derniers packages :

sudo apt update && sudo apt upgrade

Installez Git, Pip, Node.js et les outils nécessaires pour créer des dépendances Odoo :

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less

Créer un numéro d'utilisateur Odoo

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 -d /opt/odoo -U -r -s /bin/bash odoo
Vous pouvez nommer l'utilisateur comme vous le souhaitez, assurez-vous simplement de créer un utilisateur postgres avec le même nom.

Installer et configurer PostgreSQL #

Installez le package PostgreSQL à partir des dépôts par défaut d'Ubuntu :

sudo apt install postgresql

Une fois l'installation terminée, créez un utilisateur PostgreSQL avec le même nom que l'utilisateur système précédemment créé, dans notre cas odoo :

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

Installer Wkhtmltopdf #

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

Téléchargez le package à l'aide de la commande wget suivante :

wget https://builds.wkhtmltopdf.org/0.12.1.3/wkhtmltox_0.12.1.3-1~bionic_amd64.deb

Une fois le téléchargement terminé, installez le package en tapant :

sudo apt install ./wkhtmltox_0.12.1.3-1~bionic_amd64.deb

Installer et configurer Odoo #

Nous installerons Odoo à partir du référentiel GitHub dans un environnement virtuel Python isolé afin de mieux contrôler les versions et les mises à jour.

Avant de commencer le processus d'installation, assurez-vous de passer à odoo utilisateur.

sudo su - odoo

Pour confirmer que vous êtes connecté en tant que odoo utilisateur, vous pouvez utiliser la commande suivante :

whoami

Nous pouvons maintenant commencer le processus d'installation. Clonez d'abord l'odoo depuis le dépôt GitHub :

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 /opt/odoo/odoo11
  • Si vous souhaitez installer une autre version d'Odoo, changez simplement le numéro de version après le --branch commutateur.
  • Vous pouvez nommer le répertoire comme vous le souhaitez, par exemple à la place odoo11 vous pouvez utiliser le nom de votre domaine.

Pour créer un nouvel environnement virtuel pour l'exécution de l'instance Odoo 11 :

cd /opt/odoopython3 -m venv odoo11-venv

activez l'environnement avec la commande suivante :

source odoo11-venv/bin/activate

et installez tous les modules Python requis avec pip3 :

pip3 install wheelpip3 install -r odoo11/requirements.txt

pip3 est un outil d'installation et de gestion des packages Python.

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 le Before you begin rubrique.

Une fois l'installation terminée, désactivez l'environnement et revenez à votre utilisateur sudo à l'aide des commandes suivantes :

deactivate
exit

Si vous envisagez d'installer des modules personnalisés, il est préférable d'installer ces modules dans un répertoire séparé. Pour créer un nouveau répertoire pour nos modules personnalisés, exécutez :

sudo mkdir /opt/odoo/odoo11-custom-addonssudo chown odoo: /opt/odoo/odoo11-custom-addons

Ensuite, nous devons créer un fichier de configuration, nous pouvons soit en créer un nouveau à partir de zéro, soit copier le fichier de configuration inclus :

sudo cp /opt/odoo/odoo11/debian/odoo.conf /etc/odoo11.conf

Ouvrez le fichier et modifiez-le comme suit :

/etc/odoo11.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo11/addons
; If you are using custom modules
; addons_path = /opt/odoo/odoo11/addons,/opt/odoo/odoo11-custom-addons
N'oubliez pas de modifier le my_admin_passwd vers quelque chose de plus sécurisé et ajustez le addons_path si vous utilisez des modules personnalisés.

Créer un fichier d'unité systemd #

Pour exécuter odoo en tant que service, nous allons créer un odoo11.service fichier d'unité dans le /etc/systemd/system/ répertoire avec le contenu suivant :

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

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

[Install]
WantedBy=multi-user.target

Avertissez systemd que nous avons créé un nouveau fichier d'unité et démarrez le service Odoo en exécutant :

sudo systemctl daemon-reloadsudo systemctl start odoo11

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

sudo systemctl status odoo11
● odoo11.service - Odoo11
   Loaded: loaded (/etc/systemd/system/odoo11.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-05-03 21:23:08 UTC; 3s ago
 Main PID: 18351 (python3)
    Tasks: 4 (limit: 507)
   CGroup: /system.slice/odoo11.service
           └─18351 /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf

et s'il n'y a pas d'erreurs, vous pouvez activer le service Odoo pour qu'il démarre automatiquement au démarrage :

sudo systemctl enable odoo11

Si vous souhaitez voir les messages enregistrés par le service Odoo, vous pouvez utiliser la commande ci-dessous :

sudo journalctl -u odoo11

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 :

Configurer Nginx en tant que proxy de terminaison SSL #

Si vous souhaitez utiliser Nginx comme proxy de terminaison SSL, assurez-vous de remplir les conditions préalables suivantes :

  • Vous avez un nom de domaine pointant vers l'IP de votre serveur public. Dans ce tutoriel, nous utiliserons example.com .
  • Vous avez installé Nginx en suivant ces instructions.
  • Vous avez installé un certificat SSL pour votre domaine. Vous pouvez installer un certificat SSL Let's Encrypt gratuit en suivant ces instructions.

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

Le proxy de terminaison SSL est un serveur proxy qui gère le cryptage/décryptage SSL. Cela signifie que notre proxy de terminaison (Nginx) gérera et décryptera les connexions TLS entrantes (HTTPS), et qu'il transmettra les requêtes non cryptées à notre service interne (Odoo) afin que le trafic entre Nginx et Odoo ne soit pas crypté (HTTP).

Nous devons dire à Odoo que nous allons utiliser un proxy, ouvrir le fichier de configuration et ajouter la ligne suivante :

/etc/odoo11.conf
proxy_mode = True

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

sudo systemctl restart odoo11

L'utilisation de Nginx comme proxy nous offre plusieurs avantages. Dans cet exemple, nous allons configurer la terminaison SSL, la redirection HTTP vers HTTPS, la redirection WWW vers non-WWW, mettre en cache les fichiers statiques et activer la compression GZip.

/etc/nginx/sites-enabled/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;
    include snippets/letsencrypt.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 avec :

sudo systemctl restart nginx

Changer 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, donc si vous souhaitez désactiver l'accès direct à votre instance Odoo, vous pouvez soit bloquer le port 8069 pour toutes les interfaces publiques, soit forcer Odoo à écouter uniquement sur l'interface locale.

Dans ce guide, nous forcerons Odoo à écouter uniquement sur 127.0.0.1 , ouvrez la configuration Odoo ajoutez les deux lignes suivantes à la fin du fichier :

/etc/odoo11.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 odoo

Activer le 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. Afin d'activer le multitraitement, nous devons 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, nous utiliserons 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, tandis que 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 =nombre_de_travailleurs * ((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, vous pouvez utiliser la commande suivante :

grep -c ^processor /proc/cpuinfo

Disons que nous avons 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, nous pouvons 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 ci-dessus nous montre que notre installation Odoo aura besoin d'environ 2 Go de RAM.

Pour passer en mode multitraitement, ouvrez le fichier de configuration et ajoutez les lignes suivantes :

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

Le reste des ressources système sera utilisé par d'autres services qui s'exécutent sur notre machine. Dans ce guide, nous avons installé Odoo avec PostgreSQL et Nginx sur un même serveur et selon votre configuration, vous pouvez également avoir d'autres services en cours d'exécution sur votre serveur.


Ubuntu
  1. Comment installer Odoo 10 sur Ubuntu 16.04

  2. Comment installer Odoo 13 sur Ubuntu 18.04

  3. Comment installer Odoo 13 sur Ubuntu 20.04

  4. Comment installer Odoo 15 sur Ubuntu 22.04

  5. Comment installer Odoo 13 sur Ubuntu 20.04

Comment installer Odoo sur Ubuntu 18.04 LTS

Comment installer Odoo sur Ubuntu 20.04 LTS

Comment installer Odoo 13 dans Ubuntu

Comment installer Odoo sur Ubuntu 18.04

Comment installer Odoo sur Ubuntu 20.04

Comment installer Odoo 12 sur Ubuntu 20.04