GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come distribuire Odoo 11 su Ubuntu 18.04

Odoo è il software aziendale all-in-one più popolare al mondo. Offre una gamma di applicazioni aziendali tra cui CRM, sito Web, e-commerce, fatturazione, contabilità, produzione, magazzino, gestione dei progetti, inventario e molto altro, il tutto perfettamente integrato.

Esistono diversi modi per installare Odoo a seconda del caso d'uso richiesto. Il modo più semplice e veloce per installare Odoo è utilizzare i loro repository APT ufficiali.

Se desideri avere maggiore flessibilità, ad esempio eseguire più versioni di Odoo sullo stesso sistema, puoi utilizzare docker e docker composer o installare Odoo in un ambiente virtuale.

Questa guida illustra i passaggi necessari per l'installazione e la configurazione di Odoo per la produzione utilizzando il codice sorgente Git e l'ambiente virtuale Python su un sistema Ubuntu 18.04.

Prima di iniziare #

Accedi alla tua macchina Ubuntu come utente sudo e aggiorna il sistema agli ultimi pacchetti:

sudo apt update && sudo apt upgrade

Installa Git, Pip, Node.js e gli strumenti necessari per creare dipendenze 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

Crea utente Odoo #

Crea un nuovo utente di sistema e un gruppo con la directory home /opt/odoo che eseguirà il servizio Odoo.

sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
Puoi nominare l'utente come preferisci, assicurati solo di creare un utente postgres con lo stesso nome.

Installa e configura PostgreSQL #

Installa il pacchetto PostgreSQL dai repository predefiniti di Ubuntu:

sudo apt install postgresql

Una volta completata l'installazione creare un utente PostgreSQL con lo stesso nome dell'utente di sistema precedentemente creato, nel nostro caso odoo :

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

Installa Wkhtmltopdf #

Il wkhtmltox Il pacchetto fornisce una serie di strumenti da riga di comando open source che possono eseguire il rendering di HTML in PDF e vari formati di immagine. Per stampare i report in PDF, avrai bisogno del wkhtmltopdf attrezzo. La versione consigliata per Odoo è 0.12.1 che non è disponibile nei repository ufficiali di Ubuntu 18.04.

Scarica il pacchetto utilizzando il seguente comando wget:

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

Una volta completato il download, installa il pacchetto digitando:

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

Installa e configura Odoo #

Installeremo Odoo dal repository GitHub all'interno di un ambiente virtuale Python isolato in modo da poter avere un maggiore controllo su versioni e aggiornamenti.

Prima di iniziare con il processo di installazione, assicurati di passare a odoo utente.

sudo su - odoo

Per confermare di aver effettuato l'accesso come odoo utente puoi usare il seguente comando:

whoami

Ora possiamo iniziare con il processo di installazione. Per prima cosa clona odoo dal repository GitHub:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 /opt/odoo/odoo11
  • Se vuoi installare una versione diversa di Odoo, cambia semplicemente il numero di versione dopo il --branch interruttore.
  • Puoi nominare la directory come preferisci, ad esempio invece odoo11 puoi utilizzare il nome del tuo dominio.

Per creare un nuovo ambiente virtuale per l'esecuzione dell'istanza Odoo 11:

cd /opt/odoopython3 -m venv odoo11-venv

attivare l'ambiente con il seguente comando:

source odoo11-venv/bin/activate

e installa tutti i moduli Python richiesti con pip3:

pip3 install wheelpip3 install -r odoo11/requirements.txt

pip3 è uno strumento per l'installazione e la gestione dei pacchetti Python.

Se riscontri errori di compilazione durante l'installazione, assicurati di aver installato tutte le dipendenze richieste elencate in Before you begin sezione.

Una volta completata l'installazione, disattiva l'ambiente e torna al tuo utente sudo utilizzando i seguenti comandi:

deactivate
exit

Se prevedi di installare moduli personalizzati, è meglio installarli in una directory separata. Per creare una nuova directory per i nostri moduli personalizzati, esegui:

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

Successivamente, dobbiamo creare un file di configurazione, possiamo crearne uno nuovo da zero o copiare il file di configurazione incluso:

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

Apri il file e modificalo come segue:

/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
Non dimenticare di modificare il my_admin_passwd a qualcosa di più sicuro e regola il addons_path se stai utilizzando moduli personalizzati.

Crea un file di unità systemd #

Per eseguire odoo come servizio creeremo un odoo11.service file unit nel /etc/systemd/system/ directory con i seguenti contenuti:

/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

Notifica a systemd che abbiamo creato un nuovo file di unità e avviamo il servizio Odoo eseguendo:

sudo systemctl daemon-reloadsudo systemctl start odoo11

Puoi controllare lo stato del servizio con il seguente comando:

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

e se non ci sono errori puoi abilitare l'avvio automatico del servizio Odoo all'avvio:

sudo systemctl enable odoo11

Se vuoi vedere i messaggi registrati dal servizio Odoo puoi usare il comando qui sotto:

sudo journalctl -u odoo11

Verifica l'installazione #

Apri il browser e digita:http://<your_domain_or_IP_address>:8069

Supponendo che l'installazione abbia esito positivo, apparirà una schermata simile alla seguente:

Configura Nginx come proxy di terminazione SSL #

Se desideri utilizzare Nginx come proxy di terminazione SSL, assicurati di aver soddisfatto i seguenti prerequisiti:

  • Hai un nome di dominio che punta all'IP del tuo server pubblico. In questo tutorial useremo example.com .
  • Hai installato Nginx seguendo queste istruzioni.
  • Hai un certificato SSL installato per il tuo dominio. Puoi installare un certificato SSL Let's Encrypt gratuito seguendo queste istruzioni.

Il server Web Odoo predefinito serve il traffico su HTTP. Per rendere più sicura la nostra distribuzione di Odoo configureremo Nginx come proxy di terminazione SSL che servirà il traffico su HTTPS.

Il proxy di terminazione SSL è un server proxy che gestisce la crittografia/decrittografia SSL. Ciò significa che il nostro proxy di terminazione (Nginx) gestirà e decrittograferà le connessioni TLS in entrata (HTTPS) e trasmetterà le richieste non crittografate al nostro servizio interno (Odoo) in modo che il traffico tra Nginx e Odoo non venga crittografato (HTTP).

Dobbiamo dire a Odoo che useremo un proxy, apriremo il file di configurazione e aggiungeremo la seguente riga:

/etc/odoo11.conf
proxy_mode = True

Riavvia il servizio Odoo per rendere effettive le modifiche:

sudo systemctl restart odoo11

L'utilizzo di Nginx come proxy ci offre numerosi vantaggi. In questo esempio configureremo la terminazione SSL, il reindirizzamento da HTTP a HTTPS, il reindirizzamento da WWW a non WWW, i file statici nella cache e abiliteremo la compressione 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;
}
Non dimenticare di sostituire example.com con il tuo dominio Odoo e impostare il percorso corretto per i file del certificato SSL. Gli snippet utilizzati in questa configurazione vengono creati in questa guida.

Al termine, riavvia il servizio Nginx con:

sudo systemctl restart nginx

Cambia l'interfaccia di rilegatura #

Questo passaggio è facoltativo, ma è una buona pratica di sicurezza. Per impostazione predefinita, il server Odoo ascolta la porta 8069 su tutte le interfacce, quindi se desideri disabilitare l'accesso diretto alla tua istanza Odoo puoi bloccare la porta 8069 per tutte le interfacce pubbliche o forzare Odoo ad ascoltare solo sull'interfaccia locale.

In questa guida forzeremo Odoo ad ascoltare solo su 127.0.0.1 , apri la configurazione di Odoo aggiungi le seguenti due righe alla fine del file:

/etc/odoo11.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Salva il file di configurazione e riavvia il server Odoo per rendere effettive le modifiche:

sudo systemctl restart odoo

Abilita multielaborazione #

Per impostazione predefinita, Odoo funziona in modalità multithreading. Per le distribuzioni di produzione, si consiglia di passare al server multiprocessing in quanto aumenta la stabilità e sfrutta al meglio le risorse di sistema. Per abilitare il multiprocessing dobbiamo modificare la configurazione di Odoo e impostare un numero di processi di lavoro diverso da zero.

Il numero di lavoratori viene calcolato in base al numero di core della CPU nel sistema e alla memoria RAM disponibile.

Secondo la documentazione ufficiale di Odoo, per calcolare il numero di lavoratori e la dimensione della memoria RAM richiesta utilizzeremo le seguenti formule e ipotesi:

Calcolo del numero di lavoratori

  • numero massimo teorico di lavoratore =(system_cpus * 2) + 1
  • 1 lavoratore può servire ~=6 utenti simultanei
  • Anche i lavoratori Cron richiedono CPU

Calcolo della dimensione della memoria RAM

  • Riterremo che il 20% di tutte le richieste sono richieste pesanti, mentre l'80% sono richieste più leggere. Le richieste pesanti utilizzano circa 1 GB di RAM mentre quelle più leggere utilizzano circa 150 MB di RAM
  • RAM necessaria =number_of_workers * ( (light_worker_ratio * light_worker_stima_ram) + (heavy_worker_ratio * heavy_worker_stima_ram) )

Se non sai quante CPU hai sul tuo sistema puoi usare il seguente comando:

grep -c ^processor /proc/cpuinfo

Supponiamo di avere un sistema con 4 core CPU, 8 GB di memoria RAM e 30 utenti Odoo simultanei.

  • 30 users / 6 = **5** (5 è il numero teorico di lavoratori necessari)
  • (4 * 2) + 1 = **9** (9 è il numero massimo teorico di lavoratori)

Sulla base del calcolo sopra, possiamo utilizzare 5 lavoratori + 1 lavoratore per il lavoratore cron che è un totale di 6 lavoratori.

Calcola il consumo di memoria RAM in base al numero dei lavoratori:

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

Il calcolo sopra ci mostra che la nostra installazione di Odoo avrà bisogno di circa 2 GB di RAM.

Per passare alla modalità multielaborazione, apri il file di configurazione e aggiungi le seguenti righe:

/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

Riavvia il servizio Odoo per rendere effettive le modifiche:

sudo systemctl restart odoo11

Il resto delle risorse di sistema verrà utilizzato da altri servizi eseguiti sulla nostra macchina. In questa guida abbiamo installato Odoo insieme a PostgreSQL e Nginx su uno stesso server e, a seconda della tua configurazione, potresti avere anche altri servizi in esecuzione sul tuo server.


Ubuntu
  1. Come installare Odoo 10 su Ubuntu 16.04

  2. Come installare Odoo 12 su Ubuntu 16.04

  3. Come installare Odoo 13 su Ubuntu 18.04

  4. Come installare Odoo 15 su Ubuntu 22.04

  5. Come installare Odoo 13 su Ubuntu 20.04

Come installare Odoo su Ubuntu 18.04 LTS

Come installare Odoo su Ubuntu 20.04 LTS

Come installare Odoo 13 su Ubuntu

Come installare Odoo su Ubuntu 18.04

Come installare Odoo su Ubuntu 20.04

Come installare Odoo 12 su Ubuntu 20.04