Difference between revisions of "Installazione Odoo avanzata"

From PNLUG
Jump to navigation Jump to search
Line 92: Line 92:
 
</pre>
 
</pre>
   
Creare le directory necessarie
+
Creare le directory necessarie per la '''_VER_''' desiderata
   
 
<pre>
 
<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
 
mkdir addons12/OCA
 
mkdir addons12/OCA
 
mkdir addons12/custom
 
mkdir addons12/custom
 
 
chmod 700 addons12
 
chmod 700 addons12
 
chmod 700 12.0
 
chmod 700 12.0
 
</pre>
 
</pre>
   
  +
Creare l'ambiente virtualenv e attivarlo
<pre>
 
mkdir addons13
 
mkdir addons13/OCA
 
mkdir addons13/custom
 
 
chmod 700 addons13
 
chmod 700 13.0
 
</pre>
 
   
 
<pre>
 
<pre>
  +
python3 -m venv venv_VER_
mkdir addons14
 
  +
. venv_VER_/bin/activate
mkdir addons14/OCA
 
mkdir addons14/custom
 
 
chmod 700 addons14
 
chmod 700 14.0
 
 
</pre>
 
</pre>
 
 
Creare l'ambiente virtualenv e attivarlo
 
   
 
<pre>
 
<pre>
  +
Esempio per la versione 12.0:
 
python3 -m venv venv12
 
python3 -m venv venv12
 
 
. venv12/bin/activate
 
. venv12/bin/activate
 
</pre>
 
</pre>
   
<pre>
 
python3 -m venv venv13
 
 
. venv13/bin/activate
 
</pre>
 
 
<pre>
 
python3 -m venv venv14
 
 
. venv14/bin/activate
 
</pre>
 
   
 
Installare da virtualenv i moduli necessari
 
Installare da virtualenv i moduli necessari
   
 
<pre>
 
<pre>
pip3 install -r 12.0/requirements.txt
+
pip3 install -r _VER_/requirements.txt
 
pip3 install pyxb==1.2.6
 
pip3 install pyxb==1.2.6
 
pip3 install codicefiscale
 
pip3 install codicefiscale
Line 153: Line 136:
   
 
<pre>
 
<pre>
  +
Esempio per la versione 12.0:
pip3 install -r 13.0/requirements.txt
 
pip3 install pyxb==1.2.6
+
pip3 install -r 12.0/requirements.txt
pip3 install codicefiscale
 
pip3 install unidecode
 
pip3 install phonenumbers
 
</pre>
 
 
<pre>
 
pip3 install -r 14.0/requirements.txt
 
 
pip3 install pyxb==1.2.6
 
pip3 install pyxb==1.2.6
 
pip3 install codicefiscale
 
pip3 install codicefiscale
Line 172: Line 148:
 
<pre>
 
<pre>
 
exit
 
exit
 
 
mkdir /etc/odoo
 
mkdir /etc/odoo
  +
sudo cp /opt/odoo/_VER_/debian/odoo.conf /etc/odoo/odoo_VER_.conf
 
sudo cp /opt/odoo/12.0/debian/odoo.conf /etc/odoo/odoo12.conf
+
chmod 640 /etc/odoo/odoo_VER_.conf
  +
chown odoo:odoo /etc/odoo/odoo_VER_.conf
 
chmod 640 /etc/odoo/odoo12.conf
 
 
chown odoo:odoo /etc/odoo/odoo12.conf
 
 
</pre>
 
</pre>
   
 
<pre>
 
<pre>
  +
Esempio per la versione 12.0:
exit
 
   
mkdir /etc/odoo
 
 
sudo cp /opt/odoo/13.0/debian/odoo.conf /etc/odoo/odoo13.conf
 
 
chmod 640 /etc/odoo/odoo13.conf
 
 
chown odoo:odoo /etc/odoo/odoo13.conf
 
</pre>
 
 
<pre>
 
 
exit
 
exit
 
 
mkdir /etc/odoo
 
mkdir /etc/odoo
  +
sudo cp /opt/odoo/12.0/debian/odoo.conf /etc/odoo/odoo12.conf
 
sudo cp /opt/odoo/14.0/debian/odoo.conf /etc/odoo/odoo14.conf
+
chmod 640 /etc/odoo/odoo12.conf
  +
chown odoo:odoo /etc/odoo/odoo12.conf
 
chmod 640 /etc/odoo/odoo14.conf
 
 
chown odoo:odoo /etc/odoo/odoo14.conf
 
 
</pre>
 
</pre>
   
Line 210: Line 168:
 
<pre>
 
<pre>
 
cd /var/log
 
cd /var/log
 
 
mkdir odoo
 
mkdir odoo
 
 
chown root:odoo odoo && chmod 750 odoo
 
chown root:odoo odoo && chmod 750 odoo
 
 
cd odoo
 
cd odoo
  +
touch odoo_VER_-server.log
 
  +
chown odoo:adm odoo_VER_-server.log && chmod 640 odoo_VER_-server.log
touch odoo12-server.log
 
 
chown odoo:adm odoo12-server.log && chmod 640 odoo12-server.log
 
 
</pre>
 
</pre>
   
 
<pre>
 
<pre>
  +
Esempio per la versione 12.0:
 
cd /var/log
 
cd /var/log
 
 
mkdir odoo
 
mkdir odoo
 
 
chown root:odoo odoo && chmod 750 odoo
 
chown root:odoo odoo && chmod 750 odoo
 
 
cd odoo
 
cd odoo
  +
touch odoo12-server.log
 
  +
chown odoo:adm odoo12-server.log && chmod 640 odoo12-server.log
touch odoo13-server.log
 
 
chown odoo:adm odoo13-server.log && chmod 640 odoo13-server.log
 
 
</pre>
 
</pre>
   
<pre>
 
cd /var/log
 
   
  +
Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo_VER_.service e aggiungendo il seguente contenuto
mkdir odoo
 
 
chown root:odoo odoo && chmod 750 odoo
 
 
cd odoo
 
 
touch odoo14-server.log
 
 
chown odoo:adm odoo14-server.log && chmod 640 odoo14-server.log
 
</pre>
 
 
Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/odoo12.service e aggiungendo il seguente contenuto
 
   
 
<pre>
 
<pre>
 
[Unit]
 
[Unit]
Description=Odoo12
+
Description=Odoo_VER_
 
Requires=postgresql.service
 
Requires=postgresql.service
 
After=network.target postgresql.service
 
After=network.target postgresql.service
Line 260: Line 196:
 
[Service]
 
[Service]
 
Type=simple
 
Type=simple
SyslogIdentifier=odoo12
+
SyslogIdentifier=odoo_VER_
 
PermissionsStartOnly=true
 
PermissionsStartOnly=true
 
User=odoo
 
User=odoo
 
Group=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
+
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
 
StandardOutput=journal+console
 
StandardOutput=journal+console
   
Line 272: Line 208:
   
 
<pre>
 
<pre>
  +
Esempio per la versione 12.0:
[Unit]
 
Description=Odoo13
 
Requires=postgresql.service
 
After=network.target postgresql.service
 
   
[Service]
 
Type=simple
 
SyslogIdentifier=odoo13
 
PermissionsStartOnly=true
 
User=odoo
 
Group=odoo
 
ExecStart=/opt/odoo/venv13/bin/python3 /opt/odoo/13.0/odoo-bin -c /etc/odoo/odoo12.conf --logfile /var/log/odoo/odoo13-server.log
 
StandardOutput=journal+console
 
 
[Install]
 
WantedBy=multi-user.target
 
</pre>
 
 
<pre>
 
 
[Unit]
 
[Unit]
Description=Odoo14
+
Description=Odoo12
 
Requires=postgresql.service
 
Requires=postgresql.service
 
After=network.target postgresql.service
 
After=network.target postgresql.service
Line 298: Line 217:
 
[Service]
 
[Service]
 
Type=simple
 
Type=simple
SyslogIdentifier=odoo14
+
SyslogIdentifier=odoo12
 
PermissionsStartOnly=true
 
PermissionsStartOnly=true
 
User=odoo
 
User=odoo
 
Group=odoo
 
Group=odoo
ExecStart=/opt/odoo/venv14/bin/python3 /opt/odoo/14.0/odoo-bin -c /etc/odoo/odoo14.conf --logfile /var/log/odoo/odoo14-server.log
+
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
 
StandardOutput=journal+console
   
Line 313: Line 232:
 
<pre>
 
<pre>
 
sudo systemctl daemon-reload
 
sudo systemctl daemon-reload
  +
sudo systemctl enable odoo_VER_.service
 
sudo systemctl enable odoo12.service
+
sudo systemctl start odoo_VER_.service
 
sudo systemctl start odoo12.service
 
 
</pre>
 
</pre>
   
 
<pre>
 
<pre>
  +
Esempio per la versione 12.0:
sudo systemctl daemon-reload
 
   
sudo systemctl enable odoo13.service
 
 
sudo systemctl start odoo13.service
 
</pre>
 
 
<pre>
 
 
sudo systemctl daemon-reload
 
sudo systemctl daemon-reload
  +
sudo systemctl enable odoo12.service
 
sudo systemctl enable odoo14.service
+
sudo systemctl start odoo12.service
 
sudo systemctl start odoo14.service
 
 
</pre>
 
</pre>
   
Line 338: Line 247:
   
 
<pre>
 
<pre>
journalctl -u odoo12
+
journalctl -u odoo_VER_
 
</pre>
 
</pre>
   
 
<pre>
 
<pre>
  +
Esempio per la versione 12.0:
journalctl -u odoo13
 
  +
  +
journalctl -u odoo12
 
</pre>
 
</pre>
   
<pre>
 
journalctl -u odoo14
 
</pre>
 
   
 
=== Configurazione di Pycharm con VirtualEnv ===
 
=== Configurazione di Pycharm con VirtualEnv ===
Line 365: Line 273:
   
 
<pre>
 
<pre>
script => punta al file odoo-bin del progetto (es. ~/odoo-dev/odoo10/OCA/OCB/odoo-bin)
+
script => punta al file odoo-bin del progetto (es. ~/odoo-dev/odoo12/OCA/OCB/odoo-bin)
 
script parameters => inserisco i parametri configurazione avvio Odoo
 
script parameters => inserisco i parametri configurazione avvio Odoo
 
</pre>
 
</pre>

Revision as of 13:28, 18 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 testata su Ubuntu 16.04 e Debian 9.3.0.

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

Requisiti

  • 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: per installarli
sudo apt install python3-pip python3-dev build-essential libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools


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
         |                   |_ ...
         |__ 13.0
         |__ venv13
         |__ addons13
         |          |__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.


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 _VER_ desiderata

git clone https://www.github.com/OCA/OCB.git --depth 1 --branch _VER_ --single-branch _VER_
Esempio per la versione 12.0:
git clone https://www.github.com/OCA/OCB.git --depth 1 --branch 12.0 --single-branch 12.0

Creare le directory necessarie per la _VER_ desiderata

mkdir addons_VER_
mkdir addons_VER_/OCA
mkdir addons_VER_/custom
chmod 700 addons_VER_
chmod 700 _VER_
Esempio per la versione 12.0:
mkdir addons12
mkdir addons12/OCA
mkdir addons12/custom
chmod 700 addons12
chmod 700 12.0

Creare l'ambiente virtualenv e attivarlo

python3 -m venv venv_VER_
. venv_VER_/bin/activate
Esempio per la versione 12.0:
python3 -m venv venv12
. venv12/bin/activate


Installare da virtualenv i moduli necessari

pip3 install -r _VER_/requirements.txt
pip3 install pyxb==1.2.6
pip3 install codicefiscale
pip3 install unidecode
pip3 install phonenumbers
Esempio per la versione 12.0:
pip3 install -r 12.0/requirements.txt
pip3 install pyxb==1.2.6
pip3 install codicefiscale
pip3 install unidecode
pip3 install phonenumbers

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

exit
mkdir /etc/odoo
sudo cp /opt/odoo/_VER_/debian/odoo.conf /etc/odoo/odoo_VER_.conf
chmod 640 /etc/odoo/odoo_VER_.conf
chown odoo:odoo /etc/odoo/odoo_VER_.conf
Esempio per la versione 12.0:

exit
mkdir /etc/odoo
sudo cp /opt/odoo/12.0/debian/odoo.conf /etc/odoo/odoo12.conf
chmod 640 /etc/odoo/odoo12.conf
chown odoo:odoo /etc/odoo/odoo12.conf

Creare l'ambiente per gestire i log

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
Esempio per la versione 12.0:
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


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

[Unit]
Description=Odoo_VER_
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo_VER_
PermissionsStartOnly=true
User=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
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target
Esempio per la versione 12.0:

[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

Caricare il servizio appena creato, abilitandolo all'avvio automatico

sudo systemctl daemon-reload
sudo systemctl enable odoo_VER_.service
sudo systemctl start odoo_VER_.service
Esempio per la versione 12.0:

sudo systemctl daemon-reload
sudo systemctl enable odoo12.service
sudo systemctl start odoo12.service

Per analizzare il log del servizio systemd appena lanciato

journalctl -u odoo_VER_
Esempio per la versione 12.0:

journalctl -u odoo12


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