Ricerca nel sito web

Come installare il software Odoo 14 ERP su Ubuntu 20.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 15.04 (Vivid Vervet)

Su questa pagina

  1. Prerequisiti
  2. Configura le regole del firewall
  3. Assegna nomi host
  4. Installa e configura PostgreSQL
    1. Configura l'autenticazione basata su host
    2. Configura l'indirizzo di ascolto PostgreSQL
    3. Abilita e avvia il servizio PostgreSQL

    1. Installa le dipendenze e Prepara per l'installazione
    2. Scarica file Odoo
    3. Imposta l'ambiente Virtualenv Python
    4. Installa le dipendenze di Python

    1. Crea il servizio Odoo
    2. Imposta i permessi dei file
    3. Avvia il server Odoo

    Odoo (precedentemente noto come OpenERP) è una suite self-hosted di oltre 10.000 applicazioni open source adatta a una varietà di esigenze aziendali tra cui CRM, eCommerce, contabilità, inventario, gestione dei progetti e punto vendita. Queste applicazioni sono completamente integrate e accessibili tramite un'interfaccia web comune.

    In questo tutorial impareremo a installare Odoo 14 Stack su un server basato su Ubuntu 20.04.

    Prerequisiti

    1. A Ubuntu 20.04 based server with a minimum of 2GB RAM to host Odoo Stack.

    2. A second Ubuntu 20.04 based server with a minimum of 2GB RAM for hosting the PostgreSQL database. You can however install the database on the same server as Odoo but for production environments, it is highly recommended that you install it on a separate server. You can also choose any of the managed database options available from any provider of your choice.

    3. RAM requirement will depend on the number of concurrent users that will be using the stack. A detailed guide on how to calculate system requirements can be found in Odoo's documentation.

    4. Keep your systems updated.

      $ sudo apt update
      $ sudo apt upgrade
      
    5. A non-root user with sudo privileges on both servers.

    Configura le regole del firewall

    Ai fini di questo tutorial, supponiamo che tu abbia il firewall ufw installato su entrambi i server.

    Sul server Odoo, avremo bisogno che le porte 22, 80, 443, 6010, 5432 e 8069 siano aperte. 22 è usato per SSH, 80 è per HTTP, 443 è per HTTPS, 6010 è usato per la comunicazione Odoo, 5432 è usato da PostgreSQL e 8069 è usato dall'applicazione server Odoo.

    Esegui i seguenti comandi per aprire le porte richieste sul server Odoo.

    $ sudo ufw allow "OpenSSH"
    $ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
    $ sudo ufw allow 80/tcp
    $ sudo ufw allow 443/tcp
    $ sudo ufw allow 6010/tcp
    $ sudo ufw allow 5432/tcp
    $ sudo ufw allow 8069/tcp
    $ sudo ufw allow 8072/tcp
    

    Sul server PostgreSQL, dobbiamo aprire le porte 22, 6010 e 5432. Aprirle usando i comandi appena discussi.

    Assegna nomi host

    È possibile utilizzare gli indirizzi IP dei server o utilizzare i loro nomi di dominio completi (FQDN), se disponibili. Per il nostro tutorial, utilizzeremo i nomi di dominio completi e per questo dobbiamo impostare i nomi host su entrambi i server.

    Sul server Odoo, apri il file /etc/hosts.

    $ sudo nano /etc/hosts
    

    Assicurati che assomigli al seguente.

    127.0.0.1 	localhost
    127.0.0.1	odoo.yourdomain.com		odoo
    10.1.1.10	postgresql.yourdomain.com	postgresql
    

    Sul server PostgreSQL, apri il file e assicurati che sia simile al seguente.

    127.0.0.1 	localhost
    127.0.0.1	postgresql.yourdomain.com	postgresql
    10.1.2.10	odoo.yourdomain.com		odoo
    

    Premi Ctrl + X per chiudere l'editor e premi Y quando ti viene chiesto di salvare il file.

    Installa e configura PostgreSQL

    Ubuntu 20.04 viene fornito con PostgreSQL 12 per impostazione predefinita e lo installeremo. Eseguire il seguente comando sul server PostgreSQL.

    $ sudo apt install postgresql-12 postgresql-server-dev-12
    

    Successivamente, dobbiamo creare un utente del database odoo.

    $ sudo -u postgres createuser odoo -U postgres -dP
    

    L'opzione -u esegue il comando come utente postgres.

    L'opzione -U indica il nome utente con cui connettersi.

    L'opzione -d concede all'utente il permesso di creare database.

    L'opzione -p richiede la password del nuovo utente.

    Configurare l'autenticazione basata su host

    Dobbiamo dare il permesso al servizio PostgreSQL per poterci connettere al server Odoo.

    Innanzitutto, arresta il servizio PostgreSQL.

    $ sudo systemctl stop postgresql
    

    Apri il file /etc/postgresql/12/main/pg_hba.conf per la modifica.

    $ sudo nano /etc/postgresql/12/main/pg_hba.conf
    

    Incolla la seguente riga alla fine.

    host		all		odoo		odoo.yourdomain.com		md5
    

    Questa riga concede il permesso all'utente odoo di connettersi a tutti i database all'interno di questo server. Puoi anche specificare il nome dei database invece di usare la parola chiave all.

    Premi Ctrl + X per chiudere l'editor e premi Y quando ti viene chiesto di salvare il file.

    Configura l'indirizzo di ascolto PostgreSQL

    Successivamente, dobbiamo consentire al server del database di ascoltare le connessioni remote. Apri il file /etc/postgresql/12/main/postgresql.conf per la modifica.

    $ sudo nano /etc/postgresql/12/main/postgresql.conf
    

    Cambia la riga listen_addresses da

    #listen_addresses = 'localhost' # what IP address(es) to listen on;
    

    a.

    #From CONNECTIONS AND AUTHENTICATION Section
    listen_addresses = '*'
    

    Il * significa che ascolterà tutti gli indirizzi IP. Puoi cambiarlo con l'indirizzo IP della tua istanza odoo.

    Premi Ctrl + X per chiudere l'editor e premi Y quando ti viene chiesto di salvare il file.

    Abilita e avvia il servizio PostgreSQL

    Poiché la nostra configurazione è terminata, è ora di avviare e abilitare il servizio PostgreSQL.

    $ sudo systemctl start postgresql && sudo systemctl enable postgresql
    

    Installa Odoo

    Installa le dipendenze e Prepara per l'installazione

    Crea un nuovo utente di sistema per la gestione dei processi Odoo sul server Odoo.

    $ sudo adduser --system --home=/opt/odoo --group odoo
    

    Dobbiamo installare alcune dipendenze di sistema, ma prima dobbiamo abilitare i repository di origine. Per fare ciò, eseguire il backup dell'elenco delle fonti originali, quindi abilitare tutti i repository di origine e aggiornare l'elenco dei repository.

    $ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
    $ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
    $ sudo apt update
    

    Installa le dipendenze di sistema richieste per la configurazione di Odoo 14.

     $ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
    $ sudo apt build-dep lxml
    

    Installa Nodejs.

    $ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    $ sudo apt install nodejs
    

    Installa il pacchetto Less CSS usando Node.

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

    Scarica il pacchetto wkhtmltopdf versione 0.12.6.

    $ cd /tmp
    $ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
    

    Installa il pacchetto.

    $ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
    

    Per assicurarti che wkhtmltopdf funzioni correttamente, copia i file binari in /usr/bin e dai loro i permessi appropriati.

    $ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
    $ sudo chmod a+x /usr/bin/wk*
    $ cd ~
    

    Scarica i file Odoo

    Clona il repository Odoos Github sul tuo sistema.

    $ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
    

    Per il nostro scopo, stiamo copiando Odoo nella directory /opt/odoo da dove verrà installato.

    Configura l'ambiente Python di Virtualenv

    Questo passaggio è facoltativo ma consigliato poiché un ambiente Python virtuale per Odoo aiuterà a evitare conflitti con i moduli Python del sistema operativo, specialmente durante l'esecuzione degli aggiornamenti del sistema operativo.

    Per questo, useremo virtualenv.

    1. Create a new virtualenv environment for Odoo.

      $ python3 -m venv /home/<username>/odoo-env
      
    2. Activate the virtual environment. We are creating an environment under the system user's home directory. You are free to choose any location you like.

      $ source /home/<username>/odoo-env/bin/activate
      
    3. Update PIP just in case.

      (odoo-env) $ pip3 install --upgrade pip
      
    4. Install Python's wheel in the virtual environment.

      $ pip3 install wheel
      

    Installa le dipendenze di Python

    Installa le dipendenze Python richieste da Odoo 14.

    $ pip3 install -r /opt/odoo/doc/requirements.txt
    $ pip3 install -r /opt/odoo/requirements.txt
    

    L'installazione dei requisiti richiederà del tempo, quindi sii paziente.

    Verifica se i requisiti sono installati correttamente controllando l'elenco dei moduli Python installati.

    $ pip3 list
    Package                       Version
    ----------------------------- ---------
    alabaster                     0.7.12
    appdirs                       1.4.4
    attrs                         20.3.0
    Babel                         2.6.0
    beautifulsoup4                4.9.3
    cached-property               1.5.2
    certifi                       2020.12.5
    chardet                       3.0.4
    decorator                     4.3.0
    defusedxml                    0.7.1
    docutils                      0.14
    ebaysdk                       2.1.5
    feedparser                    5.2.1
    freezegun                     0.3.15
    gevent                        20.9.0
    greenlet                      0.4.17
    html2text                     2018.1.9
    idna                          2.6
    imagesize                     1.2.0
    isodate                       0.6.0
    Jinja2                        2.11.2
    libsass                       0.17.0
    lxml                          4.6.1
    Mako                          1.0.7
    MarkupSafe                    1.1.0
    num2words                     0.5.6
    ofxparse                      0.19
    packaging                     20.9
    passlib                       1.7.1
    Pillow                        8.0.1
    pip                           21.0.1
    pkg-resources                 0.0.0
    polib                         1.1.0
    psutil                        5.6.6
    psycopg2                      2.8.5
    pyasn1                        0.4.8
    pyasn1-modules                0.2.8
    pydot                         1.4.1
    Pygments                      2.8.1
    pyparsing                     2.4.7
    PyPDF2                        1.26.0
    pyserial                      3.4
    python-dateutil               2.7.3
    python-ldap                   3.1.0
    python-stdnum                 1.8
    pytz                          2019.1
    pyusb                         1.0.2
    qrcode                        6.1
    reportlab                     3.5.55
    requests                      2.21.0
    requests-toolbelt             0.9.1
    setuptools                    44.0.0
    six                           1.15.0
    snowballstemmer               2.1.0
    soupsieve                     2.2
    Sphinx                        3.5.2
    sphinx-patchqueue             1.0.4
    sphinxcontrib-applehelp       1.0.2
    sphinxcontrib-devhelp         1.0.2
    sphinxcontrib-htmlhelp        1.0.3
    sphinxcontrib-jsmath          1.0.1
    sphinxcontrib-qthelp          1.0.3
    sphinxcontrib-serializinghtml 1.1.4
    unidiff                       0.6.0
    urllib3                       1.24.3
    vobject                       0.9.6.1
    Werkzeug                      0.16.1
    wheel                         0.36.2
    xlrd                          1.2.0
    XlsxWriter                    1.1.2
    xlwt                          1.3.0
    zeep                          3.2.0
    zope.event                    4.5.0
    zope.interface                5.2.0
    

    Uscire dall'ambiente virtuale Python.

    $ deactivate
    

    Configura Odoo

    Copia il file di configurazione Odoo predefinito per crearne uno nuovo.

    $ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
    

    Apri il file per la modifica.

    $ sudo nano /etc/odoo-server.conf
    

    Modifica il file in modo che assomigli al seguente.

    [options]
    ; This is the password that allows database operations:
    admin_passwd = admin
    db_host = postgresql.yourdomain.com
    db_port = False
    db_user = odoo
    db_password = odoo_password
    addons_path = /opt/odoo/addons
    xmlrpc_port = 8069
    

    Premi Ctrl + X per chiudere l'editor e premi Y quando ti viene chiesto di salvare il file.

    L'opzione admin_passwd è la password che consente le operazioni amministrative all'interno della GUI di Odoo. Assicurati di scegliere una password sicura.

    L'opzione db_host è l'FQDN o l'indirizzo IP del server PostgreSQL.

    L'opzione db_port è impostata su false poiché viene utilizzata la porta 5432 predefinita di PostgreSQL. Se desideri utilizzare una porta diversa, dovrai aggiornare questo valore.

    L'opzione db_user è il nome dell'utente PostgreSQL.

    L'opzione db_password è la password utente di PostgreSQL odoo che abbiamo creato in precedenza sul server PostgreSQL.

    L'opzione addons_path è il percorso predefinito dei componenti aggiuntivi. Puoi anche aggiungere un percorso personalizzato per i componenti aggiuntivi separandoli con virgole.

    L'opzione xmlrpc_port è la porta su cui Odoo è in ascolto.

    Crea un servizio Odoo

    Per assicurarci che Odoo continui a funzionare anche dopo il riavvio del sistema, dobbiamo creare un servizio per esso.

    Crea un file /lib/systemd/system/odoo-server.service e aprilo per modificarlo.

    $ sudo nano /lib/systemd/system/odoo-server.service
    

    Incolla il seguente codice al suo interno.

    [Unit]
    Description=Odoo Open Source ERP and CRM
    
    [Service]
    Type=simple
    PermissionsStartOnly=true
    SyslogIdentifier=odoo-server
    User=odoo
    Group=odoo
    ExecStart=/home/<username>/odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
    WorkingDirectory=/opt/odoo/
    StandardOutput=journal+console
    
    [Install]
    WantedBy=multi-user.target
    

    Sostituisci /home/ con il percorso che hai scelto per l'installazione di Python Virtual Environment.

    Premi Ctrl + X per chiudere l'editor e premi Y quando ti viene chiesto di salvare il file.

    Imposta i permessi dei file

    Imposta le autorizzazioni sul file odoo-server.service in modo che solo l'utente Odoo possa leggerlo o eseguirlo.

    $ sudo chmod 755 /lib/systemd/system/odoo-server.service
    $ sudo chown odoo: /lib/systemd/system/odoo-server.service
    

    Imposta la proprietà sull'ambiente Python e sulla directory di installazione di Odoo.

    $ sudo chown -R odoo: /opt/odoo/
    $ sudo chown -R odoo: /home/<username>/odoo-env
    

    Limita il file di configurazione di Odoo.

    $ sudo chown odoo: /etc/odoo-server.conf
    $ sudo chmod 640 /etc/odoo-server.conf
    

    Avvia il server Odoo

    Avvia e abilita il server Odoo.

    $ sudo systemctl start odoo-server
    $ sudo systemctl enable odoo-server
    

    Controlla lo stato del server.

    $ sudo systemctl status odoo-server
    

    Nel tuo browser, apri l'URL http://:8069 o http://odoo.yourdomain.com:8069. Se tutto funziona correttamente, dovresti vedere la schermata di creazione del database di Odoos.

    Compila tutti i campi. Seleziona il campo Dati dimostrativi per popolare il database con dati di esempio, quindi fai clic sul pulsante Crea database.

    Successivamente, ti verrà mostrato un elenco di app che puoi scegliere e selezionare.

    La prima volta che crei un database, la pagina dei componenti aggiuntivi impiegherà del tempo per caricarsi, quindi non aggiornare la pagina.

    Installa e configura Nginx

    Fino ad ora, abbiamo utilizzato il server Odoos per eseguire lo stack. Ma idealmente, è meglio eseguirlo su Nginx utilizzando un proxy perché ciò ci consentirà di installare SSL su di esso.

    Installa Nginx.

    $ sudo apt install nginx
    

    Per eseguirlo tramite Nginx, dobbiamo eseguire Odoo su localhost. Per cambiarlo, interrompi il servizio Odoo.

    $ sudo systemctl stop odoo-server
    

    Apri il file di configurazione del server Odoo.

    $ sudo nano /etc/odoo-server.conf
    

    Aggiungi le seguenti righe ad esso.

    xmlrpc_interface = 127.0.0.1
    proxy_mode = True
    

    Crea un file di configurazione Nginx per Odoo.

    $ sudo nano /etc/nginx/sites-available/odoo.conf
    

    Incolla il codice qui sotto.

    #odoo server
    upstream odoo {
     server 127.0.0.1:8069;
    }
    upstream odoochat {
     server 127.0.0.1:8072;
    }
    
    # http -> https
    server {
       listen 80;
       server_name odoo.yourdomain.com;
       rewrite ^(.*) https://$host$1 permanent;
    }
    
    server {
     listen 443 ssl http2;
     server_name odoo.yourdomain.com;
     proxy_read_timeout 720s;
     proxy_connect_timeout 720s;
     proxy_send_timeout 720s;
    
     # Add Headers for odoo proxy mode
     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/odoo.yourdomain.com/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
     ssl_session_timeout 1d;
     ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
     ssl_session_tickets off;
     ssl_protocols TLSv1.2 TLSv1.3;
     ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
     ssl_prefer_server_ciphers off;
     ssl_dhparam /etc/ssl/certs/dhparam.pem;
    
     # log
     access_log /var/log/nginx/odoo.access.log;
     error_log /var/log/nginx/odoo.error.log;
    
     # Redirect longpoll requests to odoo longpolling port
     location /longpolling {
     proxy_pass http://odoochat;
     }
    
     # Redirect requests to odoo backend server
     location / {
       proxy_redirect off;
       proxy_pass http://odoo;
     }
    
     # common gzip
     gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
     gzip on;
    }
    

    Premi Ctrl + X per chiudere l'editor e premi Y quando ti viene chiesto di salvare il file.

    Attiva questo file di configurazione collegandolo alla directory sites-enabled.

    $ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
    

    Testare la configurazione di Nginx.

    $ sudo nginx -t
    

    Installa SSL

    Installeremo SSL utilizzando il servizio Lets Encrypt.

    Per questo, installa Certbot.

    $ sudo apt install certbot
    

    Arresta Nginx perché interferirà con il processo Certbot.

    $ sudo systemctl stop nginx
    

    Genera il certificato. Abbiamo anche bisogno di creare un certificato DHParams.

    $ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m  --keep-until-expiring 
    $ sudo systemctl start nginx
    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

    Dobbiamo anche impostare un cron job per il rinnovo automatico di SSL. Per aprire l'editor crontab, eseguire il seguente comando.

    $ sudo crontab -e
    

    Incolla la seguente riga in basso.

    25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
    

    Il lavoro cron di cui sopra eseguirà certbot alle 2:25 ogni giorno. Puoi cambiarlo in qualsiasi cosa tu voglia.

    Salva il file premendo Ctrl + X e immettendo Y quando richiesto.

    Avvia Odoo

    Ora che tutto è configurato, possiamo riavviare il server Odoo.

    $ sudo systemctl start odoo-server
    

    Avvia Odoo nel tuo browser tramite https://odoo.yourdomain.com. Otterrai una schermata descritta in precedenza. Inserisci i dettagli richiesti per creare il database e dovresti accedere a Odoo e vedere una schermata come questa.

    Conclusione

    Questo conclude il nostro tutorial sull'installazione di Odoo sul server Ubuntu 20.04. Se hai domande, pubblicale nei commenti qui sotto.