GNU/Linux >> Linux Esercitazione >  >> Cent OS

Installa Odoo 13 su CentOS 8

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.

Questo tutorial spiega come installare Odoo13 dall'origine all'interno di un ambiente virtuale Python su una macchina CentOS 8. Scaricheremo il sorgente Odoo da Github e configureremo Nginx come proxy inverso.

Prerequisiti #

Devi essere loggato come root o utente con privilegi sudo per completare l'installazione.

Installazione delle dipendenze #

Installa Python 3, Git, pip e tutte le librerie e gli strumenti necessari per creare Odoo dal sorgente:

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

Creazione di un utente di sistema #

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

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

Puoi nominare l'utente come preferisci, assicurati solo di creare un utente PostgreSQL con lo stesso nome.

Installazione e configurazione di PostgreSQL #

Installeremo PostgreSQL10 dai repository CentOS 8 standard:

sudo dnf install @postgresql:10

Una volta completata l'installazione, crea un nuovo cluster di database PostgreSQL:

sudo postgresql-setup initdb

Abilita e avvia il servizio PostgreSQL:

sudo systemctl enable --now postgresql

Crea un utente PostgreSQL con lo stesso nome dell'utente di sistema precedentemente creato, nel nostro caso "odoo13":

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

Installazione di Wkhtmltopdf #

Il wkhtmltox Il pacchetto fornisce una serie di strumenti da riga di comando open source in grado di 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.5 , che non è disponibile nei repository CentOS 8 ufficiali.

Installa il rpm pacchettoda Github digitando:

sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm

Installazione e configurazione di Odoo 13 #

Prima di iniziare con il processo di installazione, passa a user“odoo13”:

sudo su - odoo13

Inizia clonando il codice sorgente di Odoo 13 dal repository Odoo GitHub:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo

Vai a /opt/odoo13 directory e creare un nuovo ambiente virtuale Python per l'installazione di Odoo:

cd /opt/odoo13python3 -m venv venv

Attiva l'ambiente utilizzando il source comando:

source venv/bin/activate

Installa i moduli Python richiesti:

pip3 install -r odoo/requirements.txt
Se riscontri errori di compilazione durante l'installazione, assicurati di aver installato tutte le dipendenze richieste elencate in Installing Dependencies sezione.

Una volta completata l'installazione, disattivare l'ambiente:

deactivate

Crea una nuova directory per i componenti aggiuntivi personalizzati:

mkdir /opt/odoo13/odoo-custom-addons

Torna al tuo utente sudo:

exit

Quindi, apri il tuo editor di testo e crea il seguente file di configurazione:

sudo nano /etc/odoo13.conf
/etc/odoo13.conf
[options]
; This is the password that allows database operations:
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo13
db_password = False
addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons

Salva e chiudi il file.

Non dimenticare di modificare il superadmin_passwd a qualcosa di più sicuro.

Creazione del file Systemd Unit #

Apri il tuo editor di testo e crea un file chiamato odoo13.service all'interno di /etc/systemd/system/ directory:

sudo nano /etc/systemd/system/odoo13.service

Incolla il seguente contenuto:

/etc/systemd/system/odoo13.service
[Unit]
Description=Odoo13
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

Salva il file e chiudi l'editor.

Notifica a Systemd che esiste un nuovo file di unità:

sudo systemctl daemon-reload

Avvia e abilita il servizio Odoo eseguendo:

sudo systemctl enable --now odoo13

Puoi controllare lo stato del servizio con il seguente comando:

sudo systemctl status odoo13
● odoo13.service - Odoo13
   Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago
 Main PID: 28539 (python3)
    Tasks: 4 (limit: 11524)
   Memory: 94.6M
   CGroup: /system.slice/odoo13.service
           └─28539 /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf

Per vedere i messaggi registrati dal servizio Odoo, usa il seguente comando:

sudo journalctl -u odoo13

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:

Se non riesci ad accedere alla pagina, probabilmente il tuo firewall sta bloccando la porta 8069 .

Utilizzare i seguenti comandi per aprire la porta necessaria:

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcpsudo firewall-cmd --reload

Configurazione di Nginx come proxy di terminazione SSL #

Il server Web Odoo predefinito serve il traffico su HTTP. Per rendere più sicura la 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 proxy di terminazione (Nginx) elaborerà e decrittograferà le connessioni TLS in entrata (HTTPS) e trasmetterà le richieste non crittografate al servizio interno (Odoo). Il traffico tra Nginx e Odoo non verrà crittografato (HTTP).

L'utilizzo di un proxy inverso offre molti vantaggi come bilanciamento del carico, terminazione SSL, memorizzazione nella cache, compressione, pubblicazione di contenuto statico e altro ancora.

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questa sezione:

  • Nome di dominio che punta all'IP del tuo server pubblico. Useremo example.com .
  • Nginx installato.
  • Certificato SSL per il tuo dominio. Puoi installare un certificato SSL Let's Encrypt gratuito.

Apri il tuo editor di testo e crea/modifica il blocco del server di dominio:

sudo nano /etc/nginx/conf.d/example.com

La configurazione seguente imposta la terminazione SSL, il reindirizzamento da HTTP a HTTPS, il reindirizzamento da WWW a non WWW, i file statici nella cache e abilita la compressione GZip.

/etc/nginx/conf.d/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;

    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:

sudo systemctl restart nginx

Successivamente, dobbiamo dire a Odoo di utilizzare il proxy. Per farlo, apri il file di configurazione e aggiungi la seguente riga:

/etc/odoo13.conf
proxy_mode = True

Riavvia il servizio Odoo per rendere effettive le modifiche:

sudo systemctl restart odoo13

A questo punto, il proxy inverso è configurato e puoi accedere alla tua istanza Odoo all'indirizzo:https://example.com

Modifica dell'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. Per disabilitare l'accesso diretto all'istanza di Odoo, puoi bloccare la porta 8069 per tutte le interfacce pubbliche o forza Odoo ad ascoltare solo sull'interfaccia locale.

Configureremo Odoo per l'ascolto solo su 127.0.0.1 . Apri la configurazione aggiungi le seguenti due righe alla fine del file:

/etc/odoo13.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 odoo13

Abilitazione 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 utilizza meglio le risorse di sistema.

Per abilitare il multiprocessing, devi 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, puoi utilizzare 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 e 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_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

Se non sai quante CPU hai sul tuo sistema, usa il seguente grep comando:

grep -c ^processor /proc/cpuinfo

Supponiamo che tu abbia 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)

In base al calcolo sopra, puoi 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 di lavoratori:

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

Il calcolo mostra che l'installazione di Odoo avrà bisogno di circa 2 GB di RAM.

Per passare alla modalità multielaborazione, apri il file di configurazione e aggiungi i valori calcolati:

/etc/odoo13.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 odoo13

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


Cent OS
  1. Installa Jenkins su CentOS 8

  2. Installa Odoo 8 su un VPS CentOS 7

  3. Come installare Odoo 9 su CentOS 7

  4. Come installare Odoo 12 su CentOS 7

  5. Installa Odoo 9 su Ubuntu 14.04

Come installare Apache su CentOS 7

Come installare Tomcat 8.5 su CentOS 7

Installa Odoo 11 su CentOS 7

Installa Odoo 12 su CentOS 7

Come installare Odoo su CentOS 7

Come installare Odoo su CentOS 8