Instalează Odoo EPR 17 pe Rocky, Alma, CentOS, RHEL 9|8


La momentul scrierii acestui articol, Odoo ERP 17 este cea mai recentă versiune a uimitorului software open-source de planificare a resurselor întreprinderii (ERP) creat pentru a ajuta procesele afacerii dvs. să rămână optimizate. Odoo ERP vă oferă o platformă cu aplicații integrate pentru a rezolva toate problemele afacerii dvs., de la HR, CRM, managementul stocurilor, finanțe, producție, vânzări până la comerț electronic. În Odoo ERP, toate aceste integrări sunt distribuite printr-o abordare modulară care vă permite să porniți cu câteva module și să integrați mai multe pe măsură ce apar nevoi. Aceasta face din Odoo o soluție extrem de flexibilă și scalabilă.

Pentru a instala Odoo ERP 17 pe Rocky Linux, AlmaLinux, CentOS sau RHEL 9/8, trebuie să urmați mai mulți pași:

  • Instalarea dependențelor necesare pentru rularea Odoo 17
  • Crearea unui mediu virtual Python
  • Instalarea Odoo 17 pe Rocky/AlmaLinux/RHEL 9|8
  • Configurarea Odoo și a serverului web
  • Accesarea și utilizarea Odoo

Pentru funcțiile Odoo ERP 17, consultați Notițele de lansare Odoo 17

Cerințe prealabile

Înainte de a putea continua, va trebui să îndeplinești următoarele cerințe.

Cerinte de sistem:
  1. Sistem de operare: Rocky, Alma, CentOS Stream sau RHEL 8/9 instalat
  2. CPU: CPU dual-core minim (dacă ai Quad-core, cu atât mai bine).
  3. RAM: Minim 2GB de memorie (dacă aveți 4GB sau mai mult, cu atât mai bine).
  4. Disc: Minimum 20GB de spațiu liber pe disc pentru stocarea datelor Odoo.
Cerinte de software:
  1. Python: Python 3.10 sau o versiune superioară.
  2. PostgreSQL: PostgreSQL 12 sau versiuni superioare.
  3. Node.js și npm: Node.js 12.x sau mai recent și npm pentru gestionarea resurselor.
  4. Wkhtmltopdf: Este necesară o versiune specifică de wkhtmltopdf (0.12.5 sau 0.12.6) pentru tipărirea rapoartelor PDF.
  5. Nginx sau Apache: Pentru proxy invers (Nginx este în general preferat).

Să începem instalarea Odoo ERP.

Pasul 1 – Instalează dependențele pentru construirea programului

Actualizează-ți sistemul înainte de orice instalări:

sudo dnf -y update

Dacă aveți actualizări de kernel, luați în considerare repornirea sistemului înainte de a continua:

sudo reboot

Urmează să instalezi uneltele de dezvoltare în sistemul tău.

sudo dnf groupinstall -y "Development Tools"

Instalați biblioteci suplimentare care ar putea fi necesare atunci când construiți Odoo din sursă:

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

Pasul 2 – Instalează Python 3.11 și Node.js

Trebuie să instalăm Python 3.10+. În acest articol vom folosi Python 3.11.

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

Confirmă că este instalat cu succes verificând versiunea.

$ python3.11 --version
Python 3.11.9

Haideți să instalăm și Node.js. Nu există o versiune specifică, vom folosi Node.js v18.

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

Verificați prin verificarea numărului versiunii Node.js.

$ node --version
v18.20.2

Instalează modulul rtlcss pentru Node folosind npm:

sudo npm install -g rtlcss

De asemenea, instalează Less și plugin-ul Less Clean CSS:

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

Pasul 3 – Instalați și configurați baza de date PostgreSQL

Este necesar PostgreSQL 12 sau o versiune superioară. Putem instala PostgreSQL 16, care este disponibil în depozitele APPStream ale sistemului de operare. Resetați modulul PostgreSQL curent.

sudo dnf module -y disable postgresql

Activează modulul PostgreSQL 16.

sudo dnf install -y @postgresql:16

De asemenea, instalează pachetul postgresql-devel.

sudo dnf install -y  postgresql-devel

Inițializează serverul de baze de date.

sudo postgresql-setup initdb

Porniți și activați serviciul bazei de date.

sudo systemctl enable --now postgresql

În cele din urmă, creează utilizatorul de bază de date odoo. Introdu parola pentru utilizator atunci când ți se solicită.

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

Pentru a crea un utilizator cu parolă, rulați:

sudo -u postgres createuser odoo -U postgres -dP

Pentru un server de baze de date PostgreSQL la distanță, va trebui să activați conexiunile la distanță pe serverul dvs. de baze de date pentru ca Odoo să se poată conecta la acesta.

Pasul 4 – Instalați wkhtmltopdf

Wkhtmltopdf este un instrument open-source de tip CLI folosit de Odoo pentru a transforma HTML în PDF și alte formate de imagine prin intermediul motorului puternic de randare Webkit. Acesta este necesar pentru generarea documentelor precum facturi, rapoarte și alte documente ce pot fi tipărite.

Descarcă și instalează pachetul RPM wkhtmltopdf.

  • Sisteme bazate pe 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
  • Sisteme bazate pe 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

Validați instalarea:

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

Pasul 5 – Configurarea mediului Python pentru Odoo

Creați un utilizator numit odoo care va rula serviciile Odoo.

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

Instalează virtualenv:

sudo pip3.11 install virtualenv

Comută la contul de utilizator creat odoo.

sudo su - odoo

Clonează depozitul Github al Odoo local.

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

Folosește comanda virtualenv pentru a crea un mediu virtual Python pentru Odoo ERP.

virtualenv odoo-venv

Activează mediul virtual creat.

source odoo-venv/bin/activate

Actualizează pip după ce îl activezi.

pip3.11 install --upgrade pip

Instalează pachetul Python wheel în mediu

pip3.11 install wheel

Instalează cerințele Python pentru Odoo 17

pip3.11 install -r odoo/requirements.txt

Pentru a lista toate pachetele Python instalate în mediul virtual, rulați următoarea comandă:

pip3.11 list

Creează un director care va stoca toate add-on-urile terțe.

mkdir odoo/custom-addons

Ieși din mediul virtual.

exit

Pasul 6 – Configurarea Odoo ERP

Copiați fișierul de configurare de exemplu Odoo în directorul /etc de pe sistemul dumneavoastră.

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

Fișierul odoo.conf conține configurațiile cheie necesare pentru ca Odoo să funcționeze corect. Deschide fișierul pentru editare.

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

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

Ajustați setările să arate ca mai jos.

[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

Pentru serverul PostgreSQL la distanță, setați:

  • db_host: adresa IP a serverului de baze de date PostgreSQL
  • db_password: Parola pentru utilizatorul creat pe baza de date de la distanță
  • db_user: Utilizator de bază de date la distanță creat.

Acordați fișierului permisiunile corespunzătoare:

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

Creează serviciul systemd pentru 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

Creează directorul de jurnale.

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

Porniți și activați serviciul odoo.

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

Verificați starea serviciului dacă funcționează corect.

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

Pasul 7 – Configurarea firewalld

Serviciul ascultă pe portul 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 <->

Dacă aveți firewalld, permiteți portul 8069

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

Poți accesa consola web Odoo la http://serverip:8069 și să finalizezi configurarea.

Introduceți valoarea admin_passwd setată în odoo.conf pentru parola Master. Specificați numele bazei de date de creat, de exemplu odoo17. Apoi creați primul utilizator admin oferind adresa de e-mail și parola. Opțional, puteți seta numărul de telefon, limba și țara.

După finalizarea configurării, conectați-vă cu utilizatorul admin creat și parola acestuia.

Veți ajunge la tabloul de bord Odoo pentru a activa modulele etc.

Pasul 8 – Configurarea proxy-ului Nginx

Putem folosi Nginx pentru a redirecționa cererile către Odoo ERP. Instalați pachetul nginx.

sudo dnf -y install nginx

Activează serviciul pentru a porni automat la pornirea sistemului.

sudo systemctl enable nginx

Creează fișierul de configurare Nginx pentru serviciul Odoo.

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

Lipiți și editați următorul conținut. Trebuie să înlocuiți odoo.example.com cu numele real al domeniului dumneavoastră.

# 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;
}

Validează configurațiile 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

Dacă totul pare în regulă, repornește serviciul.

sudo systemctl restart nginx

Accesați tabloul de bord web Odoo la http://yourdomain.com

Pasul 9 – Utilizarea SSL-ului Let's Encrypt

Pentru serverele de pe un domeniu public, puteți folosi SSL gratuit de la Let’s Encrypt.

Instalează certbot și pluginul său pentru Nginx.

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

Cerere pentru SSL Let’s Encrypt.

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

Dacă nu vrei să furnizezi adresa de email, folosește L

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

Exemplu de rezultat:

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

Va configura automat /etc/nginx/conf.d/odoo.conf pentru a include SSL.

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

Concluzie

Am încheiat tutorialul nostru despre instalarea Odoo pe sistemele Linux Rocky, AlmaLinux, CentOS și RHEL 9. Am început prin pregătirea serverului cu dependențele necesare, apoi am continuat cu instalarea și configurarea Odoo ERP. Datorită modulelor sale extinse și personalizărilor flexibile și puternice, Odoo reprezintă o soluție de afaceri bine adaptată pentru automatizarea proceselor.