Como instalar Odoo 15 no Ubuntu 20.04

Como instalar o Odoo 15 no Ubuntu 20.04

Como instalar o Odoo 15 no Ubuntu 20.04? Fique aqui que vou te explicar como ter uma solução de gestão empresarial ERP completa, open source, sem pagar nada pelo seu uso e com tortal controle dos dados!

Para quem ainda não conhece, Odoo é um conjunto popular de aplicativos de negócios de código aberto que ajuda as empresas a gerenciar e administrar seus negócios. 

Ele Inclui uma ampla gama de aplicativos, como CRM, e-Commerce, construtor de sites, faturamento, contabilidade, fabricação, fabricação, gerenciamento de projetos, estoque e muito mais, todos perfeitamente integrados.

Odoo pode ser instalado de diferentes maneiras, dependendo do caso de uso e das tecnologias disponíveis. A maneira mais fácil e rápida de instalar o Odoo é usando os repositórios oficiais do Odoo APT .

A instalação do Odoo em um ambiente virtual ou a implantação como um contêiner do Docker oferece mais controle sobre o aplicativo e permite executar várias instâncias do Odoo no mesmo sistema.

Este artigo vamos passar pela instalação e implantação do Odoo 15 dentro de um ambiente virtual Python no Ubuntu 20.04

Vamos baixar o Odoo do repositório oficial do GitHub e usar o Nginx como proxy reverso.

Instalando dependências

O primeiro passo é instalar Git , Pip , Node.js e [ferramentas necessárias para compilar] dependências:


 sudo apt update

 sudo apt install git python3-pip build-essential wget python3-dev python3-venv \
    python3-wheel libfreetype6-dev libxml2-dev libzip-dev libldap2-dev libsasl2-dev \
    python3-setuptools node-less libjpeg-dev zlib1g-dev libpq-dev \
    libxslt1-dev libldap2-dev libtiff5-dev libjpeg8-dev libopenjp2-7-dev \
    liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev

Criando um usuário do sistema

A execução do Odoo sob o usuário root representa um grande risco de segurança. 

Criaremos um novo usuário e grupo do sistema com o diretório inicial /opt/odoo15 que executará o serviço Odoo. Para isso, execute o seguinte comando:

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

Você pode nomear o usuário como quiser, desde que crie um usuário do PostgreSQL com o mesmo nome.

Instalando e configurando o PostgreSQL

Odoo usa o PostgreSQL como back-end do banco de dados. O PostgreSQL está incluído nos repositórios padrão do Ubuntu. A instalação é simples:

 
 sudo apt install postgresql

Após a instalação do serviço, crie um usuário do PostgreSQL com o mesmo nome do usuário do sistema criado anteriormente. Neste exemplo, ou seja odoo15:

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

Instalando wkhtmltopdf

wkhtmltopdf é um conjunto de ferramentas de linha de comando de código aberto para renderizar páginas HTML em PDF e vários formatos de imagem. Para imprimir relatórios em PDF no Odoo, você precisará instalar o wkhtmltoxpacote.

A versão do wkhtmltopdf que está incluída nos repositórios do Ubuntu não suporta cabeçalhos e rodapés. A versão recomendada para Odoo é a versão 0.12.5. Vamos baixar e instalar o pacote do Github:


 sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

Após o download do arquivo, instale-o digitando:


 sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb

Instalando e Configurando o Odoo 15

Instalaremos o Odoo da fonte dentro de um ambiente virtual Python isolado .

Primeiro, mude para o usuário “odoo15”:


 sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb

Clone o código-fonte do Odoo 15 do GitHub:


 git clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 /opt/odoo15/odoo

Crie um novo ambiente virtual Python para Odoo:


 cd /opt/odoo15

 python3 -m venv odoo-venv

Ative o ambiente virtual:


 source odoo-venv/bin/activate

As dependências do Odoo são especificadas no arquivo requirements.txt. Instale todos os módulos Python necessários com pip3:


 pip3 install wheel

 pip3 install -r odoo/requirements.txt
Se você encontrar algum erro de compilação durante a instalação, certifique-se de que todas as dependências necessárias listadas na Installing Prerequisites seção estejam instaladas.

Feito isso, desative o ambiente digitando:


 deactivate

Criaremos um novo diretório, um diretório separado para os complementos de terceiros:


 mkdir /opt/odoo15/odoo-custom-addons

Mais tarde adicionaremos este diretório ao addons_path parâmetro. Este parâmetro define uma lista de diretórios onde o Odoo procura por módulos.


 mkdir /opt/odoo15/odoo-custom-addons

Volte para o seu usuário sudo:


 exit

Crie um arquivo de configuração com o seguinte conteúdo:


 sudo nano /etc/odoo15.conf
                insira a configuração abaixo em: /etc/odoo15.conf
 [options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo15
db_password = False
addons_path = /opt/odoo15/odoo/addons,/opt/odoo15/odoo-custom-addons
Não se esqueça de alterar o my_admin_passwd para algo mais seguro.

Criando arquivo de unidade do Systemd

Um arquivo de unidade é um arquivo de configuração no estilo ini que contém informações sobre um serviço.

Abra seu editor de texto e crie um arquivo chamado odoo15.servicecom o seguinte conteúdo:


 sudo nano /etc/systemd/system/odoo15.service
      insira a configuração abaixo em: /etc/systemd/system/odoo15.service

[Unit]
Description=Odoo15
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

Notifique o systemd que existe um novo arquivo de unidade:

 
 sudo systemctl daemon-reload

Inicie o serviço Odoo e habilite-o para iniciar na inicialização executando:

 
 sudo systemctl enable --now odoo15

Verifique se o serviço está funcionando:

 
 sudo systemctl status odoo15

A saída deve ser parecida com a abaixo, mostrando que o serviço Odoo está ativo e em execução:

 
  ● odoo15.service - Odoo15
     Loaded: loaded (/etc/systemd/system/odoo15.service; enabled; vendor   preset: enabled)
     Active: active (running) since Tue 2021-10-26 09:56:28 UTC; 28s ago
...

Você pode verificar as mensagens registradas pelo serviço Odoo usando o comando abaixo:

 
 sudo journalctl -u odoo15

Testando a instalação

Abra seu navegador e digite: http://<your_domain_or_IP_address>:8069

Supondo que a instalação seja bem-sucedida, uma tela semelhante à seguinte será exibida:

Configurando o Nginx como proxy de terminação SSL

O servidor web Odoo padrão está servindo tráfego por HTTP. Para tornar a implantação do Odoo mais segura, definiremos o Nginx como um proxy de terminação SSL que atenderá o tráfego por HTTPS.

O proxy de terminação SSL é um servidor proxy que lida com a criptografia/descriptografia SSL. Isso significa que o proxy de terminação (Nginx) processará e descriptografará as conexões TLS de entrada (HTTPS) e passará as solicitações não criptografadas para o serviço interno (Odoo). O tráfego entre Nginx e Odoo não será criptografado (HTTP).

O uso de um proxy reverso oferece muitos benefícios, como balanceamento de carga, encerramento de SSL, armazenamento em cache, compactação, veiculação de conteúdo estático e muito mais.

Certifique-se de ter atendido aos seguintes pré-requisitos antes de continuar com esta seção:

Abra seu editor de texto e crie/edite o bloco do servidor de domínio:

 
 sudo nano /etc/nginx/sites-enabled/example.com.conf

A configuração a seguir configura a terminação SSL, redirecionamento HTTP para HTTPS , redirecionamento WWW para não WWW, armazena em cache os arquivos estáticos e ativa a compactação GZip .

  Insira a configuração abaixo em: /etc/nginx/sites-enabled/example.com.conf
# 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ão se esqueça de substituir example.com pelo seu domínio Odoo e definir o caminho correto para os arquivos de certificado SSL. Os snippets usados ​​nesta configuração são criados neste guia

Quando terminar, reinicie o serviço Nginx :

 
 sudo systemctl restart nginx

Em seguida, precisamos dizer ao Odoo para usar o proxy. Para isso, abra o arquivo de configuração e adicione a seguinte linha:

              ADICIONE a configuração abaixo em: /etc/odoo15.conf

 proxy_mode = True

Reinicie o serviço Odoo para que as alterações entrem em vigor:


 sudo systemctl restart odoo15

Neste ponto, o proxy reverso está configurado e você pode acessar sua instância do Odoo em https://example.com.

Alterando a Interface de Ligação

Esta etapa é opcional, mas é uma boa prática de segurança.

Por padrão, o servidor Odoo escuta a porta 8069em todas as interfaces. Para desabilitar o acesso direto à instância do Odoo, você pode bloquear a porta 8069para todas as interfaces públicas ou forçar o Odoo a escutar apenas na interface local.

Vamos configurar o Odoo para ouvir apenas em arquivos 127.0.0.1. Abra a configuração e adicione as duas linhas a seguir no final do arquivo:

          ADICIONE a configuração abaixo em: /etc/odoo15.conf

 xmlrpc_interface = 127.0.0.1
 netrpc_interface = 127.0.0.1

sudo systemctl restart odoo15


 sudo systemctl restart odoo15

Ativando o multiprocessamento

Por padrão, o Odoo está trabalhando no modo multithreading. Para implantações de produção, é recomendável mudar para o servidor de multiprocessamento, pois aumenta a estabilidade e faz melhor uso dos recursos do sistema.

Para habilitar o multiprocessamento, você precisa editar a configuração do Odoo e definir um número diferente de zero de processos de trabalho. O número de trabalhadores é calculado com base no número de núcleos de CPU no sistema e na memória RAM disponível.

De acordo com a documentação oficial do Odoo , para calcular o número de trabalhadores e o tamanho da memória RAM necessária , você pode usar as seguintes fórmulas e suposições:

Cálculo do número do trabalhador

  • Número máximo teórico de trabalhadores = (system_cpus * 2) + 1
  • 1 trabalhador pode servir ~= 6 usuários simultâneos
  • Os trabalhadores cron também requerem CPU

Cálculo do tamanho da memória RAM

  • Consideraremos que 20% de todas as solicitações são solicitações pesadas e 80% são solicitações mais leves. As solicitações pesadas estão usando cerca de 1 GB de RAM, enquanto as mais leves estão usando cerca de 150 MB de RAM
  • RAM necessária =number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

Se você não sabe quantas CPUs você tem em seu sistema, use o seguinte grep comando:


 grep -c ^processor /proc/cpuinfo

Digamos que você tenha um sistema com 4 núcleos de CPU, 8 GB de memória RAM e 30 usuários Odoo simultâneos.

  • 30 users / 6 = **5**(5 é o número teórico de trabalhadores necessários)
  • (4 * 2) + 1 = **9**(9 é o número máximo teórico de trabalhadores)

Com base no cálculo acima, você pode usar 5 workers + 1 worker para o cron worker, totalizando 6 workers.

Calcule o consumo de memória RAM com base no número de trabalhadores:

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

O cálculo mostra que a instalação do Odoo precisará de cerca de 2 GB de RAM.

Para alternar para o modo de multiprocessamento, abra o arquivo de configuração e anexe os valores calculados:

            ADICIONE a configuração abaixo em: /etc/odoo15.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

Reinicie o serviço Odoo para que as alterações entrem em vigor:


 sudo systemctl restart odoo15

O restante dos recursos do sistema será usado por outros serviços executados neste sistema. Neste guia, instalamos o Odoo junto com o PostgreSQL e o Nginx no mesmo servidor. Dependendo de sua configuração, você também pode ter outros serviços em execução em seu servidor.

Conclusão

Este artigo explicou como instalar e configurar o Odoo 15 no Ubuntu 20.04 em um ambiente virtual Python usando o Nginx como proxy reverso. Também mostramos como habilitar o multiprocessamento e otimizar o Odoo para um ambiente de produção.

Você também pode conferir nosso tutorial sobre como criar backups diários automáticos de bancos de dados Odoo .

Agradecimento a: linuxize.com pela inspiração e ensinamentos.

Se você tiver dúvidas, sinta-se à vontade para deixar um comentário abaixo.

Compartilhe

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Como deseja se conectar?

Abrir Ticket

Responderemos seu chamado via email!

Expediente:
Segunda a Sexta:
08h00 às 12h00 <-> 14h00 às 18h00.
Sábado: 08h00 às 12h00

Como deseja se conectar?

Abrir Ticket

Responderemos seu chamado via email!

Expediente:
Segunda a Sexta:
08h00 às 12h00 <-> 14h00 às 18h00.
Sábado: 08h00 às 12h00

Vitrine Itaim SP

MENOR PREÇO

a partir de R$ 716,90

Divulgue novos produtos, lançamentos de marcas ou ofertas promocionais.

Vitrine Itaim SP

MENOR PREÇO

a partir de R$ 716,90

Divulgue novos produtos, lançamentos de marcas ou ofertas promocionais.

Vitrine Jardins SP

MENOR PREÇO

a partir de R$ 716,90

Divulgue novos produtos, lançamentos de marcas ou ofertas promocionais.

Vitrine Moema SP

MENOR PREÇO

a partir de R$ 716,90

Divulgue novos produtos, lançamentos de marcas ou ofertas promocionais.

Vitrine Perdizes SP

MENOR PREÇO

a partir de R$ 716,90

Divulgue novos produtos, lançamentos de marcas ou ofertas promocionais.

Vitrine Vila Olímpia SP

MENOR PREÇO

a partir de R$ 716,90

Divulgue novos produtos, lançamentos de marcas ou ofertas promocionais.

Vitrine Vila Nova Conceição SP

MENOR PREÇO

a partir de R$ 716,90

Divulgue novos produtos, lançamentos de marcas ou ofertas promocionais.