Difference between revisions of "Installazione Odoo avanzata"

From PNLUG
Jump to: navigation, search
Line 3: Line 3:
 
L'installazione prevede l'impiego del programma VirtualEnv che consente di installare/gestire versioni diverse di Python (richieste da specifiche versioni di Odoo) mantenendo inalterati i pacchetti di sistema.
 
L'installazione prevede l'impiego del programma VirtualEnv che consente di installare/gestire versioni diverse di Python (richieste da specifiche versioni di Odoo) mantenendo inalterati i pacchetti di sistema.
  
Procedura prevista per: Ubuntu 16.04, Ubuntu 20.04, Debian 9.3.0, Debian 10 e Debian 11
+
Procedura prevista per:
 +
* Ubuntu 18.04 e Debian 10 - Odoo v12.0
 +
* Ubuntu 20.04 e Debian 11 - Odoo v14.0
  
 
<small>(Consigliamo di leggere una volta tutte le istruzioni e poi procedere.)</small>
 
<small>(Consigliamo di leggere una volta tutte le istruzioni e poi procedere.)</small>
  
 
=== Requisiti ===
 
=== Requisiti ===
* sistema aggiornato: <code>sudo apt update && apt upgrade && apt autoremove --purge</code>
+
* sistema aggiornato: <code>sudo apt update && apt upgrade</code>
 
* disponibilità programma '''Git''': per installarlo <code>sudo apt install git</code>
 
* disponibilità programma '''Git''': per installarlo <code>sudo apt install git</code>
 
* disponibilità programma '''VirtualEnv''': per installarlo <code>sudo apt install python3-venv</code>
 
* disponibilità programma '''VirtualEnv''': per installarlo <code>sudo apt install python3-venv</code>
 
* disponibilità programma '''PostgreSQL''': per installarlo <code>sudo apt install postgresql</code>
 
* disponibilità programma '''PostgreSQL''': per installarlo <code>sudo apt install postgresql</code>
 
* disponibilità di alcuni tool e librerie che variano in funzione alla distribuzione utilizzata:
 
* disponibilità di alcuni tool e librerie che variano in funzione alla distribuzione utilizzata:
:: Debian 10 (Odoo 12) e Debian 11 (Odoo 14.0)
+
: '''Odoo 12.0'''
:: <code>apt wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev</code>
+
:: ''Ubuntu 18.04''
:: Ubuntu 18.04 (Odoo 12)
+
::: <code>sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev</code>
:: <code>sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev</code>
+
:: ''Debian 10''
:: Ubuntu 20.04 (Odoo 14)
+
::: <code>sudo apt wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev</code>
:: <code>sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev libpq-dev python3-pip python3-setuptools python3-venv python3-dev</code>
+
: '''Odoo 14.0'''
 +
:: ''Ubuntu 20.04''
 +
::: <code>sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev libpq-dev python3-pip python3-setuptools python3-venv python3-dev</code>
 +
:: ''Debian 11''
 +
::: <code>sudo apt wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev</code>
 +
 
  
  
Line 51: Line 58:
 
Può essere modificata allineando opportunamente le istruzioni di installazione.
 
Può essere modificata allineando opportunamente le istruzioni di installazione.
  
 +
'''N.B.''' Da qui in avanti, se non direttamente specificata, la release di Odoo verrà indicata utilizzato il segnaposto <VERSIONE>.
 +
Sostituirlo con la release desiderata, '''12''' oppure '''14'''.
  
 
=== Preparazione ===
 
=== Preparazione ===
Line 72: Line 81:
 
</pre>
 
</pre>
  
Clonare odoo in locale, selezionando il branch corretto per la versione '''_VER_''' desiderata
+
Clonare odoo in locale, selezionando il branch corretto per la '''<VERSIONE>''' desiderata
  
 
<pre>
 
<pre>
git clone https://www.github.com/OCA/OCB.git --depth 1 --branch _VER_ --single-branch _VER_
+
git clone https://www.github.com/OCA/OCB.git --depth 1 --branch <VERSIONE>.0 --single-branch <VERSIONE>
 
</pre>
 
</pre>
  
<pre>
 
Esempio per la versione 12.0:
 
git clone https://www.github.com/OCA/OCB.git --depth 1 --branch 12.0 --single-branch 12.0
 
</pre>
 
  
Creare le directory necessarie per la '''_VER_''' desiderata
+
Creare le directory necessarie per la '''<VERSIONE>''' desiderata
  
 
<pre>
 
<pre>
mkdir addons_VER_
+
mkdir addons<VERSIONE>
mkdir addons_VER_/OCA
+
mkdir addons<VERSIONE>/OCA
mkdir addons_VER_/custom
+
mkdir addons<VERSIONE>/custom
chmod 700 addons_VER_
+
chmod 700 addons<VERSIONE>
chmod 700 _VER_
+
chmod 700 <VERSIONE>.0
</pre>
 
 
 
<pre>
 
Esempio per la versione 12.0:
 
 
 
mkdir addons12
 
mkdir addons12/OCA
 
mkdir addons12/custom
 
chmod 700 addons12
 
chmod 700 12.0
 
 
</pre>
 
</pre>
  
Line 106: Line 101:
  
 
<pre>
 
<pre>
python3 -m venv venv_VER_
+
python3 -m venv venv<VERSIONE>
. venv_VER_/bin/activate
+
. venv<VERSIONE>/bin/activate
 
</pre>
 
</pre>
  
<pre>
 
Esempio per la versione 12.0:
 
  
python3 -m venv venv12
+
Installare da virtualenv i moduli necessari
. venv12/bin/activate
 
</pre>
 
  
 
+
* Odoo 12.0
Installare da virtualenv i moduli necessari
 
  
 
<pre>
 
<pre>
pip3 install -r _VER_/requirements.txt
+
pip install --upgrade pip
 +
pip install wheel
 +
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r 12.0/requirements.txt
 
pip3 install pyxb==1.2.6
 
pip3 install pyxb==1.2.6
pip3 install codicefiscale
 
pip3 install unidecode
 
pip3 install phonenumbers
 
pip3 install cryptography
 
 
</pre>
 
</pre>
  
 +
* Odoo 14.0
 
<pre>
 
<pre>
Esempio per la versione 12.0:
+
pip install wheel
 
+
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r 14.0/requirements.txt
pip3 install -r 12.0/requirements.txt
+
pip3 install pyPDF2 cryptography -r addons14/OCA/l10n_italy/requirements.txt
pip3 install pyxb==1.2.6
 
pip3 install codicefiscale
 
pip3 install unidecode
 
pip3 install phonenumbers
 
pip3 install cryptography
 
 
</pre>
 
</pre>
  
Line 145: Line 129:
 
exit
 
exit
 
sudo mkdir /etc/odoo
 
sudo mkdir /etc/odoo
sudo cp /opt/odoo/_VER_/debian/odoo.conf /etc/odoo/odoo_VER_.conf
+
sudo cp /opt/odoo/<VERSIONE>.0/debian/odoo.conf /etc/odoo/odoo<VERSIONE>.conf
sudo chmod 640 /etc/odoo/odoo_VER_.conf
+
sudo chmod 640 /etc/odoo/odoo<VERSIONE>.conf
sudo chown odoo:odoo /etc/odoo/odoo_VER_.conf
+
sudo chown odoo:odoo /etc/odoo/odoo<VERSIONE>.conf
 
</pre>
 
</pre>
  
<pre>
 
Esempio per la versione 12.0:
 
 
exit
 
sudo mkdir /etc/odoo
 
sudo cp /opt/odoo/12.0/debian/odoo.conf /etc/odoo/odoo12.conf
 
sudo chmod 640 /etc/odoo/odoo12.conf
 
sudo chown odoo:odoo /etc/odoo/odoo12.conf
 
</pre>
 
  
 
Creare l'ambiente per gestire i log
 
Creare l'ambiente per gestire i log
Line 165: Line 140:
 
sudo su
 
sudo su
 
cd /var/log
 
cd /var/log
sudo mkdir odoo
+
mkdir odoo
chown root:odoo odoo && chmod 750 odoo
 
cd odoo
 
touch odoo_VER_-server.log
 
chown odoo:adm odoo_VER_-server.log && chmod 640 odoo_VER_-server.log
 
exit
 
</pre>
 
 
 
<pre>
 
Esempio per la versione 12.0:
 
 
 
sudo su
 
cd /var/log
 
sudo mkdir odoo
 
 
chown root:odoo odoo && chmod 750 odoo
 
chown root:odoo odoo && chmod 750 odoo
 
cd odoo
 
cd odoo
touch odoo12-server.log
+
touch odoo<VERSIONE>-server.log
chown odoo:adm odoo12-server.log && chmod 640 odoo12-server.log
+
chown odoo:adm odoo<VERSIONE>-server.log && chmod 640 odoo<VERSIONE>-server.log
 
exit
 
exit
 
</pre>
 
</pre>
  
  
Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo_VER_.service e aggiungendo il seguente contenuto
+
Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo<VERSIONE>.service e aggiungendo il seguente contenuto
  
 
<pre>
 
<pre>
 
[Unit]
 
[Unit]
Description=Odoo_VER_
+
Description=Odoo<VERSIONE>
 
Requires=postgresql.service
 
Requires=postgresql.service
 
After=network.target postgresql.service
 
After=network.target postgresql.service
Line 197: Line 159:
 
[Service]
 
[Service]
 
Type=simple
 
Type=simple
SyslogIdentifier=odoo_VER_
+
SyslogIdentifier=odoo<VERSIONE>
 
PermissionsStartOnly=true
 
PermissionsStartOnly=true
 
User=odoo
 
User=odoo
 
Group=odoo
 
Group=odoo
ExecStart=/opt/odoo/venv_VER_/bin/python3 /opt/odoo/_VER_/odoo-bin -c /etc/odoo/odoo_VER_.conf --logfile /var/log/odoo/odoo_VER_-server.log
+
ExecStart=/opt/odoo/venv<VERSIONE>/bin/python3 /opt/odoo/<VERSIONE>.0/odoo-bin -c /etc/odoo/odoo<VERSIONE>.conf --logfile /var/log/odoo/odoo<VERSIONE>-server.log
 
StandardOutput=journal+console
 
StandardOutput=journal+console
  
Line 208: Line 170:
 
</pre>
 
</pre>
  
<pre>
 
Esempio per la versione 12.0:
 
 
sudo nano /lib/systemd/system/odoo12.service
 
 
[Unit]
 
Description=Odoo12
 
Requires=postgresql.service
 
After=network.target postgresql.service
 
 
[Service]
 
Type=simple
 
SyslogIdentifier=odoo12
 
PermissionsStartOnly=true
 
User=odoo
 
Group=odoo
 
ExecStart=/opt/odoo/venv12/bin/python3 /opt/odoo/12.0/odoo-bin -c /etc/odoo/odoo12.conf --logfile /var/log/odoo/odoo12-server.log
 
StandardOutput=journal+console
 
 
[Install]
 
WantedBy=multi-user.target
 
</pre>
 
  
 
Caricare il servizio appena creato, abilitandolo all'avvio automatico
 
Caricare il servizio appena creato, abilitandolo all'avvio automatico
Line 235: Line 175:
 
<pre>
 
<pre>
 
sudo systemctl daemon-reload
 
sudo systemctl daemon-reload
sudo systemctl enable odoo_VER_.service
+
sudo systemctl enable odoo<VERSIONE>.service
sudo systemctl start odoo_VER_.service
+
sudo systemctl start odoo<VERSIONE>.service
</pre>
 
 
 
<pre>
 
Esempio per la versione 12.0:
 
 
 
sudo systemctl daemon-reload
 
sudo systemctl enable odoo12.service
 
sudo systemctl start odoo12.service
 
 
</pre>
 
</pre>
  
Line 250: Line 182:
  
 
<pre>
 
<pre>
journalctl -u odoo_VER_
+
journalctl -u odoo<VERSIONE>
</pre>
 
 
 
<pre>
 
Esempio per la versione 12.0:
 
 
 
journalctl -u odoo12
 
 
</pre>
 
</pre>
  

Revision as of 15:12, 19 April 2022

È consigliata per installazioni in produzione più avanzate o per coloro che vogliono sviluppare o modificare moduli Odoo sulla propria macchina.
L'installazione prevede l'impiego del programma VirtualEnv che consente di installare/gestire versioni diverse di Python (richieste da specifiche versioni di Odoo) mantenendo inalterati i pacchetti di sistema.

Procedura prevista per:

  • Ubuntu 18.04 e Debian 10 - Odoo v12.0
  • Ubuntu 20.04 e Debian 11 - Odoo v14.0

(Consigliamo di leggere una volta tutte le istruzioni e poi procedere.)

Requisiti

  • sistema aggiornato: sudo apt update && apt upgrade
  • disponibilità programma Git: per installarlo sudo apt install git
  • disponibilità programma VirtualEnv: per installarlo sudo apt install python3-venv
  • disponibilità programma PostgreSQL: per installarlo sudo apt install postgresql
  • disponibilità di alcuni tool e librerie che variano in funzione alla distribuzione utilizzata:
Odoo 12.0
Ubuntu 18.04
sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev
Debian 10
sudo apt wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev
Odoo 14.0
Ubuntu 20.04
sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev libpq-dev python3-pip python3-setuptools python3-venv python3-dev
Debian 11
sudo apt wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-venv python3-dev


La struttura delle directory qui proposta per gestire l'installazione è la seguente:

 /opt/odoo 
         |__ 12.0
         |__ venv12
         |__ addons12
         |          |__OCA
         |          |    |_ repo_oca_1
         |          |    |_ repo_oca_2
         |          |    |_ ...
         |          |
         |          |__ custom
         |                   |_repo_custom_1
         |                   |_repo_custom_2
         |                   |_ ...
         |__ 14.0
         |__ venv14
         |__ addons14
                    |__ OCA
                    |     |_ repo_oca_1
                    |     |_ repo_oca_2
                    |     |_ ...
                    |
                    |__ custom
                             |_repo_custom_1
                             |_repo_custom_2
                             |_ ...
         

Può essere modificata allineando opportunamente le istruzioni di installazione.

N.B. Da qui in avanti, se non direttamente specificata, la release di Odoo verrà indicata utilizzato il segnaposto <VERSIONE>. Sostituirlo con la release desiderata, 12 oppure 14.

Preparazione

Creare l'utente odoo, con home in /opt/odoo

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

Creare l'utente odoo in postgres, che sarà il proprietario dei database Odoo

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

Passare all'utente odoo, spostandosi nella sua home

sudo su - odoo

Clonare odoo in locale, selezionando il branch corretto per la <VERSIONE> desiderata

git clone https://www.github.com/OCA/OCB.git --depth 1 --branch <VERSIONE>.0 --single-branch <VERSIONE>


Creare le directory necessarie per la <VERSIONE> desiderata

mkdir addons<VERSIONE>
mkdir addons<VERSIONE>/OCA
mkdir addons<VERSIONE>/custom
chmod 700 addons<VERSIONE>
chmod 700 <VERSIONE>.0

Creare l'ambiente virtualenv e attivarlo

python3 -m venv venv<VERSIONE>
. venv<VERSIONE>/bin/activate


Installare da virtualenv i moduli necessari

  • Odoo 12.0
pip install --upgrade pip
pip install wheel
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r 12.0/requirements.txt
pip3 install pyxb==1.2.6
  • Odoo 14.0
pip install wheel
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r 14.0/requirements.txt
pip3 install pyPDF2 cryptography -r addons14/OCA/l10n_italy/requirements.txt

Uscire dall'utente odoo e creare il file di configurazione per l'istanza:

exit
sudo mkdir /etc/odoo
sudo cp /opt/odoo/<VERSIONE>.0/debian/odoo.conf /etc/odoo/odoo<VERSIONE>.conf
sudo chmod 640 /etc/odoo/odoo<VERSIONE>.conf
sudo chown odoo:odoo /etc/odoo/odoo<VERSIONE>.conf


Creare l'ambiente per gestire i log

sudo su
cd /var/log
mkdir odoo
chown root:odoo odoo && chmod 750 odoo
cd odoo
touch odoo<VERSIONE>-server.log
chown odoo:adm odoo<VERSIONE>-server.log && chmod 640 odoo<VERSIONE>-server.log
exit


Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo<VERSIONE>.service e aggiungendo il seguente contenuto

[Unit]
Description=Odoo<VERSIONE>
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo<VERSIONE>
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/venv<VERSIONE>/bin/python3 /opt/odoo/<VERSIONE>.0/odoo-bin -c /etc/odoo/odoo<VERSIONE>.conf --logfile /var/log/odoo/odoo<VERSIONE>-server.log
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target


Caricare il servizio appena creato, abilitandolo all'avvio automatico

sudo systemctl daemon-reload
sudo systemctl enable odoo<VERSIONE>.service
sudo systemctl start odoo<VERSIONE>.service

Per analizzare il log del servizio systemd appena lanciato

journalctl -u odoo<VERSIONE>


Configurazione di Pycharm con VirtualEnv

Avviare PyCharm e aprire un Progetto (non Nuovo progetto) puntando alla directory OCB nella directory_progetto.

Aggiungere l’interprete Python selezionando il menu

File → Settings → Project → Project Interpreter → Add : Existing Enviroment

Selezionare il file python (link al file della versione installata) della directory_virtualenv/bin e impostare il programma da lanciare e la configurazione da utilizzare in

Run → Debug-Configuration

Con + aggiungo una nuova configurazione di tipo Python impostando i parametri

script => punta al file odoo-bin del progetto (es. ~/odoo-dev/odoo12/OCA/OCB/odoo-bin)
script parameters => inserisco i parametri configurazione avvio Odoo

Tra i parametri di avvio ricordiamo --dev=all che ricarica automaticamente i file Python e le definizioni delle viste XML modificati senza richiedere il riavvio del server Odoo e l'aggiornamento del modulo.

Aggiungere l'utente di sistema a Postgres

Prima di avviare Odoo da PyCharm è necessario che l’utente di sistema (nome_utente) con cui si opera sia un utente Postgres.
Per aggiungere l’utente di sistema a Postgres:

sudo su
su postgres
createuser -s nome_utente

Avviare psql e modificare i ruoli di nome_utente

psql
psql=# alter role nome_utente with createdb;
psql=# alter role nome_utente with nocreaterole;
psql=# alter role nome_utente with nosuperuser;

Nota con installazione di produzione

Se è presente nella macchina una installazione di Odoo per produzione (vedi Installazione standard semplificata), prima di avviare PyCharm è necessario disabilitare il servizio Odoo con

systemctl disable odoo.service

oppure

service odoo stop
.

Installazione IDE di sviluppo

Per iniziare a sviluppare con Odoo è altamente consigliata l'installazione di una IDE di sviluppo.

Installazione Visual Studio Code

Seguire la seguente guida per l'installazione di VSCode

Installazione Pycharm Community Edition

Seguire la seguente guida per l'installazione di Pycharm CE

Risoluzione problemi

Vedi l'apposita sezione: Troubleshooting