Difference between revisions of "Installazione Odoo avanzata"

From PNLUG
Jump to navigation Jump to search
 
(33 intermediate revisions by 3 users not shown)
Line 1: Line 1:
  +
[[Category:Odoo]]
   
 
È consigliata per installazioni in produzione più avanzate o per coloro che vogliono sviluppare o modificare moduli Odoo sulla propria macchina.<br>
 
È consigliata per installazioni in produzione più avanzate o per coloro che vogliono sviluppare o modificare moduli Odoo sulla propria macchina.<br>
 
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:
Procedura testata su Ubuntu 16.04, Ubuntu 20.04 e Debian 9.3.0.
 
  +
* Ubuntu 18.04 e Debian 10 - Odoo v12.0
  +
* Ubuntu 20.04 e Debian 11 - Odoo v14.0
  +
* Ubuntu 20.04 Odoo v16.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 -y</code>
* disponibilità di alcuni tool e librerie: per installarli
+
* disponibilità di alcuni tool e librerie che variano in funzione alla distribuzione utilizzata:
  +
: '''Odoo 12.0'''
:: <code> sudo apt install python3-pip python3-dev build-essential libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools libpq-dev</code>
 
  +
:: ''Ubuntu 18.04 (PYthon 3.6)''
* opzionale: bash modificata per visualizzare nel prompt la versione VirtualEnv attivata
 
  +
::: <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-dev</code>
* opzionale: disponibilità programma '''PyCharm''' <code>sudo snap install pycharm-community --classic</code>
 
  +
:: ''Debian 10 (Python 3.7)''
  +
::: <code>sudo apt install wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-dev</code>
  +
: '''Odoo 14.0'''
  +
:: ''Ubuntu 20.04 (Python 3.8)''
  +
::: <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-dev</code>
  +
:: ''Debian 11 (Python 3.9)''
  +
::: <code>sudo apt install wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-dev</code>
  +
: '''Odoo 16.0'''
  +
:: ''Ubuntu 20.04 (Python 3.8)''
  +
::: <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-dev</code>
  +
:: ''Ubuntu 22.04 (Python 3.10)''
  +
::: <code>sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt1-dev libzip-dev libldap2-dev libsasl2-dev libpq-dev python3-pip python3-setuptools python3-dev</code>
   
   
  +
La struttura delle directory qui proposta per gestire l'installazione è la seguente:
 
  +
  +
La struttura delle directory qui proposta per gestire l'installazione multiversione è la seguente:
 
/opt/odoo
 
/opt/odoo
 
|__ 12.0
 
|__ 12.0
|__ venv12
+
|__ OCB
|__ addons12
+
|__ venv12
| |__OCA
+
|__ addons
| | |_ repo_oca_1
+
|__OCA
| | |_ repo_oca_2
+
| |_ repo_oca_1
| | |_ ...
+
| |_ repo_oca_2
| |
+
| |_ ...
| |__ custom
+
|
| |_repo_custom_1
+
|__ custom
| |_repo_custom_2
+
|_repo_custom_1
| |_ ...
+
|_repo_custom_2
  +
|__ 13.0
 
  +
/opt/odoo
|__ venv13
 
|__ addons13
 
| |__OCA
 
| | |_ repo_oca_1
 
| | |_ repo_oca_2
 
| | |_ ...
 
| |
 
| |__ custom
 
| |_repo_custom_1
 
| |_repo_custom_2
 
| |_ ...
 
 
|__ 14.0
 
|__ 14.0
|__ venv14
+
|__ OCB
|__ addons14
+
|__ venv14
|__ OCA
+
|__ addons
| |_ repo_oca_1
+
|__ OCA
| |_ repo_oca_2
+
| |_ repo_oca_1
| |_ ...
+
| |_ repo_oca_2
|
+
| |_ ...
|__ custom
+
|
|_repo_custom_1
+
|__ custom
|_repo_custom_2
+
|_repo_custom_1
|_ ...
+
|_repo_custom_2
+
|_ ...
  +
  +
/opt/odoo
  +
|__ 16.0
  +
|__ OCB
  +
|__ venv16
  +
|__ addons
  +
|__ OCA
  +
| |_ repo_oca_1
  +
| |_ repo_oca_2
  +
| |_ ...
  +
|
  +
|__ custom
  +
|_repo_custom_1
  +
|_repo_custom_2
  +
|_ ...
  +
   
 
Può essere modificata allineando opportunamente le istruzioni di installazione.
 
Può essere modificata allineando opportunamente le istruzioni di installazione.
   
  +
'''N.B.''' <u>Da qui in avanti, se non direttamente specificata, la release di Odoo verrà indicata utilizzando il segnaposto ''<VERSIONE>''.
  +
Sostituirlo con il rilascio desiderato, '''12''', '''14''' oppure '''16'''.</u>
   
 
=== Preparazione ===
 
=== Preparazione ===
Line 65: Line 91:
 
Creare l'utente odoo, con home in /opt/odoo
 
Creare l'utente odoo, con home in /opt/odoo
   
  +
sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
<pre>
 
  +
sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
 
</pre>
 
   
 
Creare l'utente odoo in postgres, che sarà il proprietario dei database Odoo
 
Creare l'utente odoo in postgres, che sarà il proprietario dei database Odoo
   
  +
sudo su - postgres -c "createuser --createdb --no-createrole --no-superuser odoo"
<pre>
 
  +
sudo su - postgres -c "createuser -s odoo"
 
</pre>
 
   
 
Passare all'utente odoo, spostandosi nella sua home
 
Passare all'utente odoo, spostandosi nella sua home
   
  +
sudo su - odoo
<pre>
 
sudo su - odoo
 
</pre>
 
   
Clonare odoo in locale, selezionando il branch corretto per la versione '''_VER_''' desiderata
+
Creare le directory necessarie per la ''<VERSIONE>'' desiderata
   
  +
mkdir ''<VERSIONE>''.0
<pre>
 
  +
mkdir ''<VERSIONE>''.0/addons
git clone https://www.github.com/OCA/OCB.git --depth 1 --branch _VER_ --single-branch _VER_
 
  +
mkdir ''<VERSIONE>''.0/addons/OCA
</pre>
 
  +
mkdir ''<VERSIONE>''.0/addons/custom
  +
chmod 700 ''<VERSIONE>''.0/OCB
  +
chmod 700 ''<VERSIONE>''.0/addons
   
<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
+
Clonare odoo in locale, selezionando il branch corretto per la ''<VERSIONE>'' desiderata
  +
  +
cd ''<VERSIONE>''.0
  +
git clone https://github.com/OCA/OCB.git --branch ''<VERSIONE>''.0 --single-branch
   
<pre>
 
mkdir addons_VER_
 
mkdir addons_VER_/OCA
 
mkdir addons_VER_/custom
 
chmod 700 addons_VER_
 
chmod 700 _VER_
 
</pre>
 
 
<pre>
 
Esempio per la versione 12.0:
 
 
mkdir addons12
 
mkdir addons12/OCA
 
mkdir addons12/custom
 
chmod 700 addons12
 
chmod 700 12.0
 
</pre>
 
   
 
Creare l'ambiente virtualenv e attivarlo
 
Creare l'ambiente virtualenv e attivarlo
   
  +
python3 -m venv venv''<VERSIONE>''
<pre>
 
  +
. venv''<VERSIONE>''/bin/activate
python3 -m venv venv_VER_
 
. venv_VER_/bin/activate
 
</pre>
 
 
<pre>
 
Esempio per la versione 12.0:
 
 
python3 -m venv venv12
 
. venv12/bin/activate
 
</pre>
 
   
   
 
Installare da virtualenv i moduli necessari
 
Installare da virtualenv i moduli necessari
   
  +
* Odoo 12.0
<pre>
 
pip3 install -r _VER_/requirements.txt
 
pip3 install pyxb==1.2.6
 
pip3 install codicefiscale
 
pip3 install unidecode
 
pip3 install phonenumbers
 
</pre>
 
   
  +
pip install --upgrade pip
<pre>
 
  +
pip install wheel
Esempio per la versione 12.0:
 
  +
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r OCB/requirements.txt
  +
pip3 install pyxb==1.2.6
   
  +
* Odoo 14.0
pip3 install -r 12.0/requirements.txt
 
pip3 install pyxb==1.2.6
 
pip3 install codicefiscale
 
pip3 install unidecode
 
pip3 install phonenumbers
 
</pre>
 
   
  +
pip3 install wheel
Uscire dall'utente odoo e creare il file di configurazione per l'istanza:
 
  +
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp
  +
pip3 install -r OCB/requirements.txt
  +
pip3 install pyPDF2 cryptography
  +
pip3 install -r addons14/OCA/'''repo_oca_1'''/requirements.txt
  +
pip3 install -r addons14/OCA/'''repo_oca_2'''/requirements.txt
  +
...
  +
pip3 install -r addons14/OCA/'''repo_custom_1'''/requirements.txt
  +
pip3 install -r addons14/OCA/'''repo_custom_2'''/requirements.txt
  +
...
   
  +
* Odoo 16.0
<pre>
 
exit
 
sudo mkdir /etc/odoo
 
sudo cp /opt/odoo/_VER_/debian/odoo.conf /etc/odoo/odoo_VER_.conf
 
sudo chmod 640 /etc/odoo/odoo_VER_.conf
 
sudo chown odoo:odoo /etc/odoo/odoo_VER_.conf
 
</pre>
 
   
  +
pip3 install wheel
<pre>
 
  +
pip3 install -r OCB/requirements.txt
Esempio per la versione 12.0:
 
  +
pip3 install -r addons16/OCA/'''repo_oca_1'''/requirements.txt
  +
pip3 install -r addons16/OCA/'''repo_oca_2'''/requirements.txt
  +
...
  +
pip3 install -r addons16/OCA/'''repo_custom_1'''/requirements.txt
  +
pip3 install -r addons16/OCA/'''repo_custom_2'''/requirements.txt
  +
...
   
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>
 
   
  +
Uscire da virtualenv e dall'utente odoo
Creare l'ambiente per gestire i log
 
   
  +
deactivate
<pre>
 
  +
exit
cd /var/log
 
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
 
</pre>
 
   
<pre>
 
Esempio per la versione 12.0:
 
   
  +
creare il file di configurazione per l'istanza:
cd /var/log
 
mkdir odoo
 
chown root:odoo odoo && chmod 750 odoo
 
cd odoo
 
touch odoo12-server.log
 
chown odoo:adm odoo12-server.log && chmod 640 odoo12-server.log
 
</pre>
 
   
  +
sudo mkdir /etc/odoo
  +
sudo cp /opt/odoo/''<VERSIONE>''.0/OCB/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 il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo_VER_.service e aggiungendo il seguente contenuto
 
   
  +
Creare l'ambiente per gestire i log
<pre>
 
[Unit]
 
Description=Odoo_VER_
 
Requires=postgresql.service
 
After=network.target postgresql.service
 
   
  +
sudo su
[Service]
 
  +
cd /var/log
Type=simple
 
  +
mkdir odoo
SyslogIdentifier=odoo_VER_
 
  +
chown root:odoo odoo && chmod 750 odoo
PermissionsStartOnly=true
 
User=odoo
+
cd odoo
  +
touch odoo''<VERSIONE>''-server.log
Group=odoo
 
  +
chown odoo:adm odoo''<VERSIONE>''-server.log && chmod 640 odoo''<VERSIONE>''-server.log
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
 
  +
exit
StandardOutput=journal+console
 
   
[Install]
 
WantedBy=multi-user.target
 
</pre>
 
   
  +
Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo''<VERSIONE>''.service e aggiungendo il seguente contenuto
<pre>
 
Esempio per la versione 12.0:
 
   
[Unit]
+
[Unit]
Description=Odoo12
+
Description=Odoo''<VERSIONE>''
Requires=postgresql.service
+
Requires=postgresql.service
After=network.target postgresql.service
+
After=network.target postgresql.service
  +
  +
[Service]
  +
Type=simple
  +
SyslogIdentifier=odoo''<VERSIONE>''
  +
PermissionsStartOnly=true
  +
User=odoo
  +
Group=odoo
  +
ExecStart=/opt/odoo/''<VERSIONE>''.0/venv''<VERSIONE>''/bin/python3 /opt/odoo/''<VERSIONE>''.0/OCB/odoo-bin -c /etc/odoo/odoo''<VERSIONE>''.conf --logfile /var/log/odoo/odoo''<VERSIONE>''-server.log
  +
StandardOutput=journal+console
  +
  +
[Install]
  +
WantedBy=multi-user.target
   
[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
   
  +
sudo systemctl daemon-reload
<pre>
 
sudo systemctl daemon-reload
+
sudo systemctl enable odoo''<VERSIONE>''.service
sudo systemctl enable odoo_VER_.service
+
sudo systemctl start odoo''<VERSIONE>''.service
sudo systemctl start odoo_VER_.service
 
</pre>
 
   
<pre>
 
Esempio per la versione 12.0:
 
 
sudo systemctl daemon-reload
 
sudo systemctl enable odoo12.service
 
sudo systemctl start odoo12.service
 
</pre>
 
   
 
Per analizzare il log del servizio systemd appena lanciato
 
Per analizzare il log del servizio systemd appena lanciato
   
  +
journalctl -u odoo''<VERSIONE>''
<pre>
 
journalctl -u odoo_VER_
 
</pre>
 
 
<pre>
 
Esempio per la versione 12.0:
 
 
journalctl -u odoo12
 
</pre>
 
 
   
=== Configurazione di Pycharm con VirtualEnv ===
 
   
  +
=== Report in PDF ===
Avviare PyCharm e aprire un ''Progetto'' (non ''Nuovo progetto'') puntando alla directory OCB nella ''directory_progetto''.
 
   
  +
Per la creazione dei report in formato PDF, Odoo utilizza l'utility chiamata wkhtmlktopdf.
Aggiungere l’interprete Python selezionando il menu
 
   
  +
La versione attualmente consigliata è la 0.12.5-1.
''File → Settings → Project → Project Interpreter → Add : Existing Enviroment''
 
   
  +
<i>N.B: Consultare il [https://github.com/odoo/odoo/wiki/Wkhtmltopdf repository Odoo] per un elenco aggiornato delle versioni compatibili.</i>
Selezionare il file <i>python</i> (link al file della versione installata) della ''directory_virtualenv/bin''
 
e impostare il programma da lanciare e la configurazione da utilizzare in
 
   
  +
Per scaricare e installare l'utility eseguire i seguenti comandi da terminale:
''Run → Debug-Configuration''
 
   
  +
==== Debian 10 - Buster / Debian 11 - Bullseye ====
Con <code>+</code> aggiungo una nuova configurazione di tipo Python impostando i parametri
 
   
 
<pre>
 
<pre>
  +
# wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb
script => punta al file odoo-bin del progetto (es. ~/odoo-dev/odoo12/OCA/OCB/odoo-bin)
 
  +
# sudo dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb
script parameters => inserisco i parametri configurazione avvio Odoo
 
  +
# cp -p /usr/local/bin/wkhtmlto* /usr/bin/
 
</pre>
 
</pre>
   
Tra i parametri di avvio ricordiamo <code>--dev=all</code> 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 ===
+
==== Ubuntu 18.04 - Bionic Beaver ====
 
Prima di avviare Odoo da PyCharm è necessario che l’utente di sistema (''nome_utente'') con cui si opera sia un utente Postgres.<br>
 
Per aggiungere l’utente di sistema a Postgres:
 
   
 
<pre>
 
<pre>
  +
$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb
sudo su
 
  +
$ sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb
su postgres
 
  +
$ sudo cp -p /usr/local/bin/wkhtmlto* /usr/bin/
createuser -s nome_utente
 
 
</pre>
 
</pre>
   
  +
Avviare '''psql''' e modificare i ruoli di ''nome_utente''
 
  +
==== Ubuntu 20.04 - Focal Fossa / Ubuntu 22.04 - Jammy Jellyfish ====
   
 
<pre>
 
<pre>
  +
$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.focal_amd64.deb
psql
 
  +
$ sudo dpkg -i wkhtmltox_0.12.5-1.focal_amd64.deb
psql=# alter role nome_utente with createdb;
 
  +
$ sudo cp -p /usr/local/bin/wkhtmlto* /usr/bin/
psql=# alter role nome_utente with nocreaterole;
 
psql=# alter role nome_utente with nosuperuser;
 
 
</pre>
 
</pre>
   
=== Nota con installazione di produzione ===
 
 
Se è presente nella macchina una installazione di Odoo per produzione ([[#Installazione_standard_semplificata|vedi Installazione standard semplificata]]), prima di avviare PyCharm è necessario disabilitare il servizio Odoo con
 
 
<pre>systemctl disable odoo.service</pre>
 
 
oppure
 
 
<pre>service odoo stop</pre>.
 
   
 
== Installazione IDE di sviluppo ==
 
== Installazione IDE di sviluppo ==
Line 327: Line 268:
 
== Risoluzione problemi ==
 
== Risoluzione problemi ==
   
Vedi l'apposita sezione: [https://wiki.pnlug.it/index.php?title=Troubleshooting?title=Troubleshooting Troubleshooting]
+
Vedi l'apposita sezione: [https://wiki.pnlug.it/index.php?title=Troubleshooting Troubleshooting]

Latest revision as of 10:15, 7 April 2023


È 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
  • Ubuntu 20.04 Odoo v16.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 -y
  • disponibilità di alcuni tool e librerie che variano in funzione alla distribuzione utilizzata:
Odoo 12.0
Ubuntu 18.04 (PYthon 3.6)
sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-dev
Debian 10 (Python 3.7)
sudo apt install wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-dev
Odoo 14.0
Ubuntu 20.04 (Python 3.8)
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-dev
Debian 11 (Python 3.9)
sudo apt install wget xfonts-base build-essential libffi-dev libpq-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-pip python3-setuptools python3-dev
Odoo 16.0
Ubuntu 20.04 (Python 3.8)
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-dev
Ubuntu 22.04 (Python 3.10)
sudo apt install xfonts-base xfonts-75dpi build-essential libc-dev libxslt1-dev libzip-dev libldap2-dev libsasl2-dev libpq-dev python3-pip python3-setuptools python3-dev



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

 /opt/odoo 
         |__ 12.0
                |__ OCB
                |__ venv12
                |__ addons
                         |__OCA
                         |    |_ repo_oca_1
                         |    |_ repo_oca_2
                         |    |_ ...
                         |
                         |__ custom
                                  |_repo_custom_1
                                  |_repo_custom_2
 /opt/odoo 
         |__ 14.0
                |__ OCB
                |__ venv14
                |__ addons
                         |__ OCA
                         |     |_ repo_oca_1
                         |     |_ repo_oca_2
                         |          |_ ...
                         |
                         |__ custom
                                  |_repo_custom_1
                                  |_repo_custom_2
                                  |_ ...
 /opt/odoo 
         |__ 16.0
                |__ OCB
                |__ venv16
                |__ addons
                         |__ 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 utilizzando il segnaposto <VERSIONE>. Sostituirlo con il rilascio desiderato, 12, 14 oppure 16.

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 --createdb --no-createrole --no-superuser odoo"


Passare all'utente odoo, spostandosi nella sua home

sudo su - odoo

Creare le directory necessarie per la <VERSIONE> desiderata

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


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

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


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 OCB/requirements.txt
pip3 install pyxb==1.2.6
  • Odoo 14.0
pip3 install wheel
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp 
pip3 install -r OCB/requirements.txt
pip3 install pyPDF2 cryptography 
pip3 install -r addons14/OCA/repo_oca_1/requirements.txt
pip3 install -r addons14/OCA/repo_oca_2/requirements.txt
...
pip3 install -r addons14/OCA/repo_custom_1/requirements.txt
pip3 install -r addons14/OCA/repo_custom_2/requirements.txt
...
  • Odoo 16.0
pip3 install wheel
pip3 install -r OCB/requirements.txt
pip3 install -r addons16/OCA/repo_oca_1/requirements.txt
pip3 install -r addons16/OCA/repo_oca_2/requirements.txt
...
pip3 install -r addons16/OCA/repo_custom_1/requirements.txt
pip3 install -r addons16/OCA/repo_custom_2/requirements.txt
...


Uscire da virtualenv e dall'utente odoo

deactivate
exit


creare il file di configurazione per l'istanza:

sudo mkdir /etc/odoo
sudo cp /opt/odoo/<VERSIONE>.0/OCB/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/<VERSIONE>.0/venv<VERSIONE>/bin/python3 /opt/odoo/<VERSIONE>.0/OCB/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>


Report in PDF

Per la creazione dei report in formato PDF, Odoo utilizza l'utility chiamata wkhtmlktopdf.

La versione attualmente consigliata è la 0.12.5-1.

N.B: Consultare il repository Odoo per un elenco aggiornato delle versioni compatibili.

Per scaricare e installare l'utility eseguire i seguenti comandi da terminale:

Debian 10 - Buster / Debian 11 - Bullseye

# wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb
# sudo dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb
# cp -p /usr/local/bin/wkhtmlto* /usr/bin/


Ubuntu 18.04 - Bionic Beaver

$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb
$ sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb
$ sudo cp -p /usr/local/bin/wkhtmlto* /usr/bin/


Ubuntu 20.04 - Focal Fossa / Ubuntu 22.04 - Jammy Jellyfish

$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.focal_amd64.deb
$ sudo dpkg -i wkhtmltox_0.12.5-1.focal_amd64.deb
$ sudo cp -p /usr/local/bin/wkhtmlto* /usr/bin/


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