Difference between revisions of "Installazione Odoo avanzata"
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: |
+ | 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 |
+ | * 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: |
||
− | + | : '''Odoo 12.0''' |
|
+ | :: ''Ubuntu 18.04'' |
||
− | :: <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> |
||
+ | ::: <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> |
||
− | :: Ubuntu 18.04 (Odoo 12) |
||
+ | :: ''Debian 10'' |
||
− | :: <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 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 20.04 (Odoo 14) |
||
+ | : '''Odoo 14.0''' |
||
− | :: <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> |
||
+ | :: ''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 |
+ | 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 |
+ | 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 ''' |
+ | Creare le directory necessarie per la '''<VERSIONE>''' desiderata |
<pre> |
<pre> |
||
− | mkdir |
+ | mkdir addons<VERSIONE> |
− | mkdir |
+ | mkdir addons<VERSIONE>/OCA |
− | mkdir |
+ | mkdir addons<VERSIONE>/custom |
− | chmod 700 |
+ | chmod 700 addons<VERSIONE> |
− | chmod 700 |
+ | 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 |
+ | python3 -m venv venv<VERSIONE> |
− | . |
+ | . venv<VERSIONE>/bin/activate |
</pre> |
</pre> |
||
− | <pre> |
||
− | Esempio per la versione 12.0: |
||
+ | Installare da virtualenv i moduli necessari |
||
− | python3 -m venv venv12 |
||
− | . venv12/bin/activate |
||
− | </pre> |
||
+ | * Odoo 12.0 |
||
− | |||
− | Installare da virtualenv i moduli necessari |
||
<pre> |
<pre> |
||
− | + | 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> |
||
+ | pip install wheel |
||
− | Esempio per la versione 12.0: |
||
+ | pip3 install pypdf phonenumbers asn1crypto codicefiscale unidecode pysftp -r 14.0/requirements.txt |
||
− | |||
− | pip3 install -r |
+ | 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/ |
+ | sudo cp /opt/odoo/<VERSIONE>.0/debian/odoo.conf /etc/odoo/odoo<VERSIONE>.conf |
− | sudo chmod 640 /etc/odoo/ |
+ | sudo chmod 640 /etc/odoo/odoo<VERSIONE>.conf |
− | sudo chown odoo:odoo /etc/odoo/ |
+ | 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 |
||
− | + | mkdir odoo |
|
chown root:odoo odoo && chmod 750 odoo |
chown root:odoo odoo && chmod 750 odoo |
||
cd odoo |
cd odoo |
||
− | touch |
+ | touch odoo<VERSIONE>-server.log |
− | chown odoo:adm |
+ | chown odoo:adm odoo<VERSIONE>-server.log && chmod 640 odoo<VERSIONE>-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 |
||
− | cd odoo |
||
− | touch odoo12-server.log |
||
− | chown odoo:adm odoo12-server.log && chmod 640 odoo12-server.log |
||
exit |
exit |
||
</pre> |
</pre> |
||
− | Creare il servizio systemd specifico per Odoo creando un file in /lib/systemd/system/ |
+ | 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= |
+ | 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= |
+ | SyslogIdentifier=odoo<VERSIONE> |
PermissionsStartOnly=true |
PermissionsStartOnly=true |
||
User=odoo |
User=odoo |
||
Group=odoo |
Group=odoo |
||
− | ExecStart=/opt/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 |
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 |
+ | sudo systemctl enable odoo<VERSIONE>.service |
− | sudo systemctl start |
+ | 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 |
+ | journalctl -u odoo<VERSIONE> |
− | </pre> |
||
− | |||
− | <pre> |
||
− | Esempio per la versione 12.0: |
||
− | |||
− | journalctl -u odoo12 |
||
</pre> |
</pre> |
||
Revision as of 17: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.)
Contents
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
- Ubuntu 18.04
- 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
- Ubuntu 20.04
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