Pesquisa de sites

Instalar Odoo ERP 17 no Rocky, Alma, CentOS, RHEL 9|8


No momento da redação deste artigo, o Odoo ERP 17 é a versão mais recente do incrível software de Planeamento de Recursos Empresariais (ERP) de código aberto, criado para ajudar os processos da sua empresa a manterem-se organizados. O Odoo ERP oferece-lhe uma plataforma com aplicações integradas para resolver todos os problemas do seu negócio, desde RH, CRM, Gestão de Inventário, Finanças, Fabrico, Vendas até Comércio Electrónico. No Odoo ERP, todas estas integrações são distribuídas através de uma abordagem modular que permite começar com poucos módulos e integrar mais conforme necessário. Isto torna o Odoo uma solução altamente flexível e escalável.

Para instalar o Odoo ERP 17 no Rocky Linux, AlmaLinux, CentOS ou RHEL 9/8, é necessário seguir vários passos:

  • Instalação das dependências necessárias para executar o Odoo 17
  • Criação de ambiente virtual Python
  • Instalação do Odoo 17 no Rocky/AlmaLinux/RHEL 9|8
  • Configuração do Odoo e do servidor web
  • Aceder e utilizar o Odoo

Para as funcionalidades do Odoo ERP 17, consulte as Notas de Lançamento do Odoo 17

Pré-requisitos

Antes de poder prosseguir, terá de cumprir os seguintes requisitos.

Requisitos do Sistema:
  1. Sistema Operativo: Rocky, Alma, CentOS Stream ou RHEL 8/9 instalado
  2. CPU: CPU com pelo menos dois núcleos (quanto mais núcleos, melhor, idealmente quad-core).
  3. RAM: Mínimo de 2GB de memória (quanto mais, melhor; 4GB ou mais é ideal).
  4. Disco: Mínimo de 20GB de espaço livre em disco para armazenar os dados do Odoo.
Requisitos de Software:
  1. Python: Python 3.10 ou superior.
  2. PostgreSQL: PostgreSQL 12 ou superior.
  3. Node.js e npm: Node.js 12.x ou superior e npm para gestão de recursos.
  4. Wkhtmltopdf: É necessária uma versão específica do wkhtmltopdf (0.12.5 ou 0.12.6) para imprimir relatórios em PDF.
  5. Nginx ou Apache: Para proxy inverso (geralmente prefere-se o Nginx).

Vamos começar a instalação do Odoo ERP.

Passo 1 – Instalar as dependências de compilação

Atualize o seu sistema antes de qualquer instalação:

sudo dnf -y update

Se tiver atualizações do kernel, considere reiniciar o sistema antes de prosseguir:

sudo reboot

De seguida, instale as ferramentas de desenvolvimento no seu sistema.

sudo dnf groupinstall -y "Development Tools"

Instale bibliotecas adicionais que possam ser necessárias ao construir o Odoo a partir do código-fonte:

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

Passo 2 – Instalar Python 3.11 e Node.js

Precisamos de instalar o Python 3.10+. Neste artigo, usaremos o Python 3.11.

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

Confirme se está instalado com sucesso verificando a versão.

$ python3.11 --version
Python 3.11.9

Vamos também instalar o Node.js. Não há uma versão específica, iremos usar o Node.js v18.

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

Verifique conferindo o número da versão do Node.js.

$ node --version
v18.20.2

Instale o módulo node rtlcss usando npm:

sudo npm install -g rtlcss

Também instale o Less e o Plugin Less Clean CSS:

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

Passo 3 – Instalar e Configurar a base de dados PostgreSQL

É necessário PostgreSQL 12 ou superior. Podemos instalar o PostgreSQL 16, que está disponível nos repositórios APPStream do SO. Reinicie o módulo atual do PostgreSQL.

sudo dnf module -y disable postgresql

Ativar o módulo PostgreSQL 16.

sudo dnf install -y @postgresql:16

Também instale o pacote postgresql-devel.

sudo dnf install -y  postgresql-devel

Inicializar servidor de base de dados.

sudo postgresql-setup initdb

Inicie e ative o serviço de base de dados.

sudo systemctl enable --now postgresql

Finalmente, crie o utilizador de base de dados odoo. Forneça a senha para o utilizador quando lhe for solicitado.

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

Para criar um utilizador com palavra-passe, execute:

sudo -u postgres createuser odoo -U postgres -dP

Para um servidor de base de dados PostgreSQL remoto, deverá ativar as ligações remotas no seu servidor de BD para que o Odoo possa ligar-se a ele.

Passo 4 – Instalar o wkhtmltopdf

Wkhtmltopdf é uma ferramenta de linha de comando de código aberto usada pelo Odoo para converter HTML em PDF e outros formatos de imagem através do poderoso motor de renderização Webkit. Isto é necessário para a geração de documentos como faturas, relatórios e outros documentos para impressão.

Descarregue e instale o pacote RPM wkhtmltopdf.

  • Sistemas baseados em 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
  • Sistemas baseados em 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

Validar instalação:

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

Passo 5 – Configurar o Ambiente Python do Odoo

Criar um utilizador chamado odoo que irá executar os serviços Odoo.

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

Instalar virtualenv:

sudo pip3.11 install virtualenv

Mudar para a conta de utilizador odoo criada.

sudo su - odoo

Clone o repositório do Github do Odoo localmente.

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

Use o comando virtualenv para criar um ambiente virtual Python para o Odoo ERP.

virtualenv odoo-venv

Ativar o ambiente virtual criado.

source odoo-venv/bin/activate

Atualize o pip após ativar.

pip3.11 install --upgrade pip

Instalar o pacote Python wheel no ambiente

pip3.11 install wheel

Instalar os requisitos de Python do Odoo 17

pip3.11 install -r odoo/requirements.txt

Para listar todos os pacotes Python instalados no ambiente virtual, execute o seguinte comando:

pip3.11 list

Crie um diretório que irá armazenar todos os addons de terceiros.

mkdir odoo/custom-addons

Sair do ambiente virtual.

exit

Passo 6 – Configurar o Odoo ERP

Copie o ficheiro de configuração de exemplo do Odoo para o diretório /etc no seu sistema.

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

O ficheiro odoo.conf contém configurações essenciais necessárias para que o Odoo funcione corretamente. Abra o ficheiro para edição.

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

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

Ajuste as definições para que fiquem como mostrado abaixo.

[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

Para servidor PostgreSQL remoto, configure:

  • db_host: Endereço IP do servidor de base de dados PostgreSQL
  • db_password: Palavra-passe do utilizador criado na base de dados remota
  • db_user: Utilizador de base de dados remoto criado.

Conceda ao ficheiro as permissões adequadas:

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

Criar serviço systemd para o 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

Criar diretório de registos.

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

Inicie e ative o serviço odoo.

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

Verifique se o serviço está a funcionar corretamente.

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

Passo 7 – Configurar o firewalld

O serviço está a ouvir na porta 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 <->

Se tiver o firewalld, permita a porta 8069

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

Pode aceder à consola web do Odoo em http://serverip:8069 e concluir a configuração.

Introduza o valor de admin_passwd definido em odoo.conf para a senha mestre. Especifique o nome da base de dados a criar, por exemplo, odoo17. Depois crie o primeiro utilizador administrador fornecendo o endereço de email e a senha. Opcionalmente, defina o número de telefone, idioma e país.

Depois de concluir a configuração, faça login com o utilizador administrador criado e a sua senha.

Você irá aceder ao painel do Odoo para ativar módulos, etc.

Passo 8 – Configurar o Proxy Nginx

Podemos usar o Nginx para fazer proxy das requisições para o Odoo ERP. Instale o pacote nginx.

sudo dnf -y install nginx

Ativar o serviço para iniciar automaticamente com a arranque do sistema.

sudo systemctl enable nginx

Criar ficheiro de configuração Nginx para o serviço Odoo.

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

Cole e edite os seguintes conteúdos. Deve substituir odoo.example.com pelo seu nome de domínio real.

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

Validar configurações do 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

Se estiver tudo bem, reinicie o serviço.

sudo systemctl restart nginx

Aceda ao painel web do Odoo em http://yourdomain.com

Passo 9 – Utilizar SSL da Let’s Encrypt

Para servidores num domínio público, pode usar o SSL gratuito da Let’s Encrypt.

Instale o certbot e o seu plugin para Nginx.

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

Pedido de SSL da Let’s Encrypt.

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

Se não quiser fornecer o endereço de email, useL

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

Exemplo de saída:

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

Ele irá configurar automaticamente /etc/nginx/conf.d/odoo.conf para incluir SSL.

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

Conclusão

Concluímos o nosso tutorial sobre a instalação do Odoo nos sistemas Linux Rocky, AlmaLinux, CentOS e RHEL 9. Começámos por preparar o servidor com as dependências necessárias e, de seguida, procedemos à instalação e configuração do Odoo ERP. Com os seus módulos extensos, personalizações flexíveis e poderosas, o Odoo torna-se uma solução empresarial bem adequada para automatizar processos.