Recherche sur le site Web

Installer Odoo ERP 17 sur Rocky, Alma, CentOS, RHEL 9|8


Au moment de la rédaction de cet article, Odoo ERP 17 est la version la plus récente du formidable logiciel de planification des ressources d'entreprise (ERP) open source, conçu pour aider vos processus d'affaires à rester rationalisés. Odoo ERP vous offre une plateforme avec des applications intégrées pour résoudre tous vos problèmes d'entreprise, de la gestion des ressources humaines, CRM, gestion des stocks, finances, fabrication, ventes au commerce électronique. Dans Odoo ERP, toutes ces intégrations sont réparties selon une approche modulaire qui vous permet de commencer avec quelques modules et d'en intégrer d'autres selon vos besoins. Cela fait d'Odoo une solution extrêmement flexible et évolutive.

Pour installer Odoo ERP 17 sur Rocky Linux, AlmaLinux, CentOS ou RHEL 9/8, vous devez suivre plusieurs étapes :

  • Installation des dépendances nécessaires pour exécuter Odoo 17
  • Création d'un environnement virtuel Python
  • Installation d'Odoo 17 sur Rocky/AlmaLinux/RHEL 9|8
  • Configuration d'Odoo et du serveur web
  • Accéder à et utiliser Odoo

Pour les fonctionnalités d'Odoo ERP 17, consultez les notes de version d'Odoo 17

Prérequis

Avant de pouvoir continuer, vous devrez remplir les conditions suivantes.

Exigences du système :
  1. Système d'exploitation : Rocky, Alma, CentOS Stream ou RHEL 8/9 installé
  2. CPU : Processeur double cœur minimum (un quad-core est préférable).
  3. RAM : Minimum 2 Go de mémoire (Plus vous avez 4 Go ou plus, mieux c'est).
  4. Disque : Minimum 20 Go d’espace disque disponible pour stocker les données d’Odoo.
Exigences logicielles :
  1. Python : Python 3.10 ou supérieur.
  2. PostgreSQL : PostgreSQL 12 ou version supérieure.
  3. Node.js et npm : Node.js 12.x ou supérieur et npm pour la gestion des ressources.
  4. Wkhtmltopdf : Une version spécifique de wkhtmltopdf (0.12.5 ou 0.12.6) est requise pour l'impression des rapports PDF.
  5. Nginx ou Apache : Pour le proxy inverse (Nginx est généralement préféré).

Commençons l'installation d'Odoo ERP.

Étape 1 – Installer les dépendances de construction

Mettez à jour votre système avant toute installation :

sudo dnf -y update

Si vous avez des mises à jour du noyau, envisagez de redémarrer le système avant de continuer :

sudo reboot

Ensuite, installez les outils de développement sur votre système.

sudo dnf groupinstall -y "Development Tools"

Installez des bibliothèques supplémentaires qui peuvent être nécessaires lors de la compilation d'Odoo à partir des sources :

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

Étape 2 – Installer Python 3.11 et Node.js

Nous devons installer Python 3.10 ou une version supérieure. Dans cet article, nous utiliserons Python 3.11.

sudo dnf install python3.11 python3.11-devel python3.11-pip

Vérifiez qu’il est installé correctement en consultant la version.

$ python3.11 --version
Python 3.11.9

Installons également Node.js. Il n'y a pas de version spécifique, nous utiliserons Node.js v18.

 sudo dnf module reset nodejs -y
sudo dnf module install nodejs:18 -y

Vérifiez en consultant le numéro de version de Node.js.

$ node --version
v18.20.2

Installez le module node rtlcss en utilisant npm :

sudo npm install -g rtlcss

Installez également Less et le plugin Less Clean CSS :

sudo npm install -g less less-plugin-clean-css

Étape 3 – Installer et configurer la base de données PostgreSQL

PostgreSQL 12 ou une version ultérieure est requis. Nous pouvons installer PostgreSQL 16, qui est disponible dans les dépôts APPStream du système d’exploitation. Réinitialiser le module PostgreSQL actuel.

sudo dnf module -y disable postgresql

Activer le module PostgreSQL 16.

sudo dnf install -y @postgresql:16

Installez également le paquet postgresql-devel.

sudo dnf install -y  postgresql-devel

Initialiser le serveur de base de données.

sudo postgresql-setup initdb

Démarrez et activez le service de base de données.

sudo systemctl enable --now postgresql

Enfin, créez l'utilisateur de base de données odoo. Fournissez un mot de passe pour l'utilisateur lorsque vous y êtes invité.

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

Pour créer un utilisateur avec mot de passe, exécutez :

sudo -u postgres createuser odoo -U postgres -dP

Pour le serveur de base de données PostgreSQL à distance, vous devrez activer les connexions distantes sur votre serveur de base de données afin qu'Odoo puisse s'y connecter.

Étape 4 – Installer wkhtmltopdf

Wkhtmltopdf est un outil CLI open-source utilisé par Odoo pour convertir du HTML en PDF et autres formats d'image grâce au puissant moteur de rendu Webkit. Cela est nécessaire pour la génération de documents tels que les factures, les rapports et d'autres documents imprimables.

Téléchargez et installez le paquet RPM wkhtmltopdf.

  • Systèmes basés sur RHEL 9
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
  • Systèmes basés sur RHEL 8
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm

Valider l'installation :

$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt)

Étape 5 – Configurer l'environnement Python d'Odoo

Créer un utilisateur appelé odoo qui exécutera les services Odoo.

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

Installer virtualenv :

sudo pip3.11 install virtualenv

Passez au compte utilisateur odoo créé.

sudo su - odoo

Clonez le dépôt Github d’Odoo localement.

git clone --depth 1 --branch 17.0 --single-branch https://github.com/odoo/odoo.git

Utilisez la commande virtualenv pour créer un environnement virtuel Python pour Odoo ERP.

virtualenv odoo-venv

Activez l'environnement virtuel créé.

source odoo-venv/bin/activate

Mettez à jour pip après l'activation.

pip3.11 install --upgrade pip

Installer le paquet Python wheel dans l'environnement

pip3.11 install wheel

Installer les dépendances Python d'Odoo 17

pip3.11 install -r odoo/requirements.txt

Pour lister tous les packages Python installés dans l'environnement virtuel, exécutez la commande suivante :

pip3.11 list

Créez un répertoire qui stockera tous les modules complémentaires tiers.

mkdir odoo/custom-addons

Quitter l'environnement virtuel.

exit

Étape 6 – Configurer Odoo ERP

Copiez le fichier de configuration exemple d’Odoo dans le répertoire /etc de votre système.

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

Le fichier odoo.conf contient les configurations clés nécessaires au bon fonctionnement d'Odoo. Ouvrez le fichier pour le modifier.

# Open with vim
sudo vim /etc/odoo.conf

# Open with nano
sudo nano /etc/odoo.conf

Ajustez les paramètres pour qu'ils ressemblent à l'image ci-dessous.

[options]
; This is the password that allows database operations:
admin_passwd = Str0ngAdminPasw0rd
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo/addons, /opt/odoo/odoo/custom-addons
default_productivity_apps = True
xmlrpc_port = 8069

Pour un serveur PostgreSQL à distance, configurez :

  • db_host : Adresse IP du serveur de base de données PostgreSQL
  • db_password : Mot de passe pour l'utilisateur créé sur la base de données distante
  • db_user : Utilisateur de base de données à distance créé.

Attribuez les permissions appropriées au fichier :

sudo chown odoo:odoo /etc/odoo.conf
sudo chmod 640 /etc/odoo.conf

Créer un service systemd pour Odoo.

sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP System
Documentation=http://www.odoo.com
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin \
  --config=/etc/odoo.conf \
  --addons-path=/opt/odoo/odoo/addons/ \
  --logfile /var/log/odoo/odoo-server.log
StandardOutput=journal+console
KillMode=mixed

[Install]
WantedBy=multi-user.target
EOF

Créer le répertoire des journaux.

sudo mkdir /var/log/odoo/
sudo chown -R odoo:odoo /var/log/odoo/

Démarrez et activez le service odoo.

sudo systemctl daemon-reload
sudo systemctl enable --now odoo.service

Vérifiez si le service fonctionne correctement.

$ systemctl status odoo
● odoo.service - Odoo ERP System
   Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-07-18 11:34:34 UTC; 21s ago
     Docs: http://www.odoo.com
 Main PID: 70809 (python3.11)
    Tasks: 4 (limit: 48750)
   Memory: 88.2M
   CGroup: /system.slice/odoo.service
           └─70809 /opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log

Jul 18 11:34:34 rocky8.cloudspinx.com systemd[1]: Started Odoo ERP System.

Étape 7 – Configurer firewalld

Le service écoute sur le port 8069.

$ ss -tunelp | grep 8069
tcp   LISTEN 0      128          0.0.0.0:8069      0.0.0.0:*    users:(("python3.11",pid=70809,fd=4)) uid:989 ino:115353 sk:5 <->

Si vous avez firewalld, autorisez le port 8069

sudo firewall-cmd --add-port=8069/tcp --permanent
sudo firewall-cmd --reload

Vous pouvez accéder à la console web d'Odoo sur http://serverip:8069 et terminer la configuration.

Entrez la valeur de admin_passwd définie dans odoo.conf pour le mot de passe principal. Spécifiez le nom de la base de données à créer, par exemple odoo17. Ensuite, créez le premier utilisateur administrateur en fournissant l'adresse e-mail et le mot de passe. Vous pouvez également, si vous le souhaitez, définir le numéro de téléphone, la langue et le pays.

Après avoir terminé la configuration, connectez-vous avec l'utilisateur admin créé et son mot de passe.

Vous arriverez au tableau de bord Odoo pour activer les modules, etc.

Étape 8 – Configurer le proxy Nginx

Nous pouvons utiliser Nginx pour proxyfier les requêtes vers Odoo ERP. Installez le paquet nginx.

sudo dnf -y install nginx

Activer le service pour qu'il démarre automatiquement au démarrage du système.

sudo systemctl enable nginx

Créer un fichier de configuration Nginx pour le service Odoo.

 sudo vim /etc/nginx/conf.d/odoo.conf

Copiez et modifiez le contenu suivant. Vous devez remplacer odoo.example.com par votre nom de domaine réel.

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name odoo.example.com;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;

    # Proxy settings
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    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;

    # Request for root domain
    location / {
       proxy_redirect off;
       proxy_pass http://odooserver;
    }

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

    # Gzip Compression
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

Valider les configurations nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si tout semble correct, redémarrez le service.

sudo systemctl restart nginx

Accédez au tableau de bord web d'Odoo sur http://yourdomain.com

Étape 9 – Utilisation de SSL Let’s Encrypt

Pour les serveurs sur un domaine public, vous pouvez utiliser le certificat SSL gratuit de Let’s Encrypt.

Installez certbot et son module Nginx.

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx -y

Demande de certificat SSL Let’s Encrypt.

DOMAIN=odoo.example.com #replace with your actual domain
sudo certbot --nginx -d $DOMAIN --agree-tos

Si vous ne voulez pas fournir d'adresse courriel, utilisez L

sudo certbot --nginx -d $DOMAIN --agree-tos --register-unsafely-without-email

Exemple de sortie :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for odoo.example.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/odoo.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/odoo.example.com/privkey.pem
This certificate expires on 2024-10-16.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for odoo.cloudlabske.com to /etc/nginx/conf.d/odoo.conf
Congratulations! You have successfully enabled HTTPS on https://odoo.example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Il configurera automatiquement /etc/nginx/conf.d/odoo.conf pour inclure SSL.

cat /etc/nginx/conf.d/odoo.conf

Conclusion

Nous avons conclu notre tutoriel sur l'installation d'Odoo sur les systèmes Linux Rocky, AlmaLinux, CentOS et RHEL 9. Nous avons commencé par préparer le serveur avec les dépendances nécessaires, puis nous avons procédé à l'installation et à la configuration d'Odoo ERP. Grâce à ses modules étendus, ses personnalisations flexibles et puissantes, Odoo constitue une solution d'affaires bien adaptée pour automatiser les processus.