Difference between revisions of "Installazione Odoo avanzata"

From PNLUG
Jump to: navigation, search
(Created page with " È consigliata per installazioni in produzione più avanzate o per coloro che vogliono sviluppare o modificare moduli Odoo sulla propria macchina.<br> L'installazione prevede...")
 
(35 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 testata su Ubuntu 16.04 e Debian 9.3.0.
+
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</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: 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</code>
 
  +
:: ''Ubuntu 18.04''
* 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-venv python3-dev</code>
* opzionale: disponibilità programma '''PyCharm''' ([[#install_pycharm|vedi Installazione dell'ultima versione di Pycharm CE]])
 
  +
:: ''Debian 10''
  +
::: <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>
  +
: '''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 21: Line 32:
 
/opt/odoo
 
/opt/odoo
 
|__ 12.0
 
|__ 12.0
|__ odoo12-venv
+
|__ venv12
|__ addons/12.0
+
|__ addons12
| |__OCA
+
|__OCA
| | |_ repo_oca_1
+
| |_ repo_oca_1
| | |_ repo_oca_2
+
| |_ repo_oca_2
| | |_ ...
+
| |_ ...
| |
+
|
| |__ custom
+
|__ custom
| |_repo_custom_1
+
|_repo_custom_1
| |_repo_custom_2
+
|_repo_custom_2
| |_ ...
 
|__ 13.0
 
|__ odoo13-venv
 
|__ addons/13.0
 
|__ OCA
 
| |_ repo_oca_1
 
| |_ repo_oca_2
 
| |_ ...
 
|
 
|__ custom
 
|_repo_custom_1
 
|_repo_custom_2
 
|_ ...
 
 
   
  +
/opt/odoo
  +
|__ 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.
 
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 la release desiderata, '''12''' oppure '''14'''.</u>
   
 
=== Preparazione ===
 
=== Preparazione ===
Line 54: Line 68:
 
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>
 
   
Installare postgres
 
 
<pre>
 
sudo apt-get install postgresql
 
</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
 
   
  +
Clonare odoo in locale, selezionando il branch corretto per la ''<VERSIONE>'' desiderata
<pre>
 
git clone https://www.github.com/OCA/OCB --depth 1 --branch 12.0 --single-branch
 
</pre>
 
   
  +
git clone https://www.github.com/OCA/OCB.git --depth 1 --branch ''<VERSIONE>''.0 --single-branch ''<VERSIONE>.0''
Creare l'ambiente virtualenv e attivarlo
 
   
<pre>
 
python3 -m venv odoo12-venv
 
. odoo12-venv/bin/activate
 
</pre>
 
   
  +
Creare le directory necessarie per la ''<VERSIONE>'' desiderata
Installare da virtualenv i moduli necessari
 
   
  +
mkdir addons''<VERSIONE>''
<pre>
 
  +
mkdir addons''<VERSIONE>''/OCA
pip3 install -r OCB/requirements.txt
 
  +
mkdir addons''<VERSIONE>''/custom
pip3 install pyxb==1.2.6
 
  +
chmod 700 addons''<VERSIONE>''
pip3 install codicefiscale
 
  +
chmod 700 ''<VERSIONE>''.0
pip3 install unidecode
 
pip3 install phonenumbers
 
</pre>
 
   
   
  +
Creare l'ambiente virtualenv e attivarlo
   
  +
python3 -m venv venv''<VERSIONE>''
  +
. venv''<VERSIONE>''/bin/activate
   
Predisporre una directory progetto (es. ~/odoo-dev11) e posizionarsi all’interno
 
   
  +
Installare da virtualenv i moduli necessari
<pre>
 
mkdir odoo-dev11
 
cd odoo-dev11
 
</pre>
 
 
 
Scaricare i file Odoo della versione 11 e salvarli nella directory OCB
 
 
<pre>
 
git clone https://github.com/OCA/OCB.git OCB --depth=1 --branch=11.0 --single-branch
 
</pre>
 
 
 
==== Odoo 12 ====
 
 
 
Predisporre una directory progetto (es. ~/odoo-dev12) e posizionarsi all’interno
 
 
<pre>
 
mkdir odoo-dev12
 
cd odoo-dev12
 
</pre>
 
 
 
Scaricare i file Odoo della versione 12 e salvarli nella directory OCB
 
 
<pre>
 
git clone https://github.com/OCA/OCB.git OCB --depth=1 --branch=12.0 --single-branch
 
</pre>
 
 
 
=== Creazione ambiente virtuale ===
 
 
Generare l’ambiente virtuale con i file della versione Python desiderata creando una directory apposita (es. venv-3.6)
 
 
<pre>
 
virtualenv -p /usr/bin/python3.6 venv-3.6
 
</pre>
 
 
Attivare l’ambiente virtuale VirtualEnv
 
 
<pre>
 
source venv-3.6/bin/activate
 
</pre>
 
 
Installare i pacchetti Python secondo le specifiche di Odoo
 
 
<pre>
 
pip3 install -r OCB/requirements.txt
 
</pre>
 
 
Installare eventuali pacchetti Python aggiuntivi
 
 
<pre>
 
pip3 install paramiko
 
pip3 install watchdog
 
pip3 install odfpy
 
pip3 install codicefiscale
 
pip3 install psycogreen
 
pip3 install pymssql
 
pip3 install pyodbc (richiede la libreria unixodbc-dev)
 
</pre>
 
 
Per disattivare l’ambiente VirtualEnv
 
 
<pre>
 
deactivate
 
</pre>
 
 
Installare eventuali pacchetti apt per la stampa cups
 
 
<pre>
 
sudo apt install cups
 
sudo apt install python-cups
 
sudo apt install libcups2-dev
 
sudo apt install python3-dev
 
</pre>
 
   
  +
* Odoo 12.0
Installare eventuali pacchetti Python per la stampa cups
 
   
  +
pip install --upgrade pip
<pre>
 
python3 -m pip install --upgrade pip
+
pip install wheel
  +
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r 12.0/requirements.txt
python3 -m pip install pygments
 
python3 -m pip install pycups
+
pip3 install pyxb==1.2.6
python3 -m pip install zpl2 (opzionale)
 
</pre>
 
   
  +
* Odoo 14.0
=== Configurazione di Pycharm con VirtualEnv ===
 
   
  +
pip install wheel
Avviare PyCharm e aprire un ''Progetto'' (non ''Nuovo progetto'') puntando alla directory OCB nella ''directory_progetto''.
 
  +
pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r 14.0/requirements.txt
  +
pip3 install pyPDF2 cryptography -r addons14/OCA/l10n_italy/requirements.txt
   
Aggiungere l’interprete Python selezionando il menu
 
   
  +
Uscire dall'utente odoo e creare il file di configurazione per l'istanza:
''File → Settings → Project → Project Interpreter → Add : Existing Enviroment''
 
   
  +
exit
Selezionare il file <i>python</i> (link al file della versione installata) della ''directory_virtualenv/bin''
 
  +
sudo mkdir /etc/odoo
e impostare il programma da lanciare e la configurazione da utilizzare in
 
  +
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
   
''Run → Debug-Configuration''
 
   
  +
Creare l'ambiente per gestire i log
Con <code>+</code> aggiungo una nuova configurazione di tipo Python impostando i parametri
 
   
  +
sudo su
<pre>
 
  +
cd /var/log
script => punta al file odoo-bin del progetto (es. ~/odoo-dev/odoo10/OCA/OCB/odoo-bin)
 
  +
mkdir odoo
script parameters => inserisco i parametri configurazione avvio Odoo
 
  +
chown root:odoo odoo && chmod 750 odoo
</pre>
 
  +
cd odoo
  +
touch odoo''<VERSIONE>''-server.log
  +
chown odoo:adm odoo''<VERSIONE>''-server.log && chmod 640 odoo''<VERSIONE>''-server.log
  +
exit
   
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.
 
   
  +
Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo''<VERSIONE>''.service e aggiungendo il seguente contenuto
=== Aggiungere l'utente di sistema a Postgres ===
 
   
  +
[Unit]
Prima di avviare Odoo da PyCharm è necessario che l’utente di sistema (''nome_utente'') con cui si opera sia un utente Postgres.<br>
 
  +
Description=Odoo''<VERSIONE>''
Per aggiungere l’utente di sistema a Postgres:
 
  +
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
   
<pre>
 
sudo su
 
su postgres
 
createuser -s nome_utente
 
</pre>
 
   
  +
Caricare il servizio appena creato, abilitandolo all'avvio automatico
Avviare '''psql''' e modificare i ruoli di ''nome_utente''
 
   
  +
sudo systemctl daemon-reload
<pre>
 
  +
sudo systemctl enable odoo''<VERSIONE>''.service
psql
 
  +
sudo systemctl start odoo''<VERSIONE>''.service
psql=# alter role nome_utente with createdb;
 
psql=# alter role nome_utente with nocreaterole;
 
psql=# alter role nome_utente with nosuperuser;
 
</pre>
 
   
=== Nota con installazione di produzione ===
 
   
  +
Per analizzare il log del servizio systemd appena lanciato
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
 
   
  +
journalctl -u odoo''<VERSIONE>''
<pre>systemctl disable odoo.service</pre>
 
   
oppure
 
   
<pre>service odoo stop</pre>.
 
   
 
== Installazione IDE di sviluppo ==
 
== Installazione IDE di sviluppo ==

Revision as of 19:27, 11 August 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
 /opt/odoo 
         |__ 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 utilizzando 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 --createdb --no-createrole --no-superuser 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>.0


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>


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