Odoo Installazione multipla unico server: differenze tra le versioni

Da PNLUG.
(I parametri da cambiare)
Riga 6: Riga 6:
 
== CONFIGURAZIONE ISTANZE MULTIPLE ==
 
== CONFIGURAZIONE ISTANZE MULTIPLE ==
  
E' possibile avere su una singola macchina più istanze separate di Odoo.<br>
+
=== Premessa ===
La configurazione di Odoo può essere salvata in un file di configurazione, oppure si possono passare i parametri sulla riga di comando dello script di
+
avvio.<br>
+
  
Se si installa Odoo tramite il file .deb viene generato un ''daemon'' che utilizza i parametri di comando. Se si desidera avere istanze multiple è necessario replicare il ''daemon'' e cambiarne i suoi parametri.<br>
+
Odoo è una applicazione web. Questo è decisamente un punto di forza perché oltre
 +
a permettere di esporre in internet contenuti aziendali integrati con le
 +
funzionalità ERP, consente anche di configurare il server in molti modi. Ad
 +
esempio lo si può installare in un server locale non esposto ad internet per
 +
massimizzare gli aspetti di sicurezza, oppure si può installare su un server
 +
esposto in internet come ad esempio una VPS.
  
In alternativa si può effettuare l'installazione dai sorgenti ed in questo caso si possono fare tanti script di avvio quante sono le istanze di qui abbiamo necessità.<br>
+
Nel caso di installazione in una VPS, potrebbe essere desiderabile mettere nella
 +
stessa macchina fisica più istanze separate di per servire aziende diverse o
 +
per installazioni dipartimentali.
  
Se si effettua l'installazione utilizzando i file sorgenti e la macchina dove lavoriamo è un server che deve funzionare anche in assenza di una shell di terminale, si può utilizzare il comando ''screen'', che permette di avere una shell virtuale da cui è possibile disconnettersi anche tenendola attiva.<br>
+
Odoo con le opportune configurazioni permette di far convivere istanze isolate
 +
condividendo gli stessi sorgenti e lo stesso motore di database.
  
=== I parametri da cambiare ===
+
Delle procedure di installazione abbiamo già parlato, se si installa utilizzando
I parametri da modificare per avere delle istanze multiple sono:<br>
+
il file .deb verrà installato un ''daemon'' che fa partire il server http di
 +
odoo alla porta 8069 e che utilizza un file di configurazione nella cartella
 +
/etc/odoo per le restanti configurazioni.
  
* la porta da utilizzare: di default Odoo usa la porta 8069, ma è possibile modificarla con il comando --xmlrpc-port=8070 indicando la porta che si desidera vuole utilizzare.
+
In questo caso per lanciare ulteriori istanze è necessario realizzare altri
 
+
''daemon'' simili al primo ma con i parametri modificati.
* il database da utilizzare: per ogni istanza è possibile filtrare i database disponibili, in questo modo istanze diverse non saranno in grado di accedere ai database che non gli appartengono.<br> Il comando è --db-filter=odoo_db in cui si indica il nome del database postgresql.
+
  
* percorso delle cartelle ''addons'': le istanze diverse possono condividere gli stessi ''addons'' che potranno essere installati in modo indipendente. Oppure si possono indicare cartelle diverse se non si desidera condividere tutti gli ''addons''.<br> Il comando è --addons-path=~/odoo/addons,~/my_addons
+
In alternativa si può effettuare l'installazione da sorgenti ed in questo caso
 
+
si devono realizzare tanti script di avvio quante sono le istanze di qui
A questo punto abbiamo delle istanze multiple di Odoo isolate.<br> Se accediamo da remoto, possiamo accedere al server da browser puntando su: http://mysite.com:8069 oppure http://mysite.com:8070; se lo desideriamo possiamo utilizzare apache2 anche come proxy, in modo da trasformare gli URL sulle porte non standard in domini di terzo livello sulla porta 80.<br>
+
abbiamo necessità.
  
'''INSERIRE QUI I COMANDI DI AVVIO DELLE SESSIONI MULTIPLE'''
+
=== Il comando screen ===
<br><br>
+
 
 +
Se siamo in una VPS è necessario fare in modo che gli script lanciati restino
 +
in esecuzione anche dopo che ci siamo disconnessi. Per fare questo abbiamo due
 +
soluzioni, o scriviamo un daemon che lancia gli script automaticamente, oppure
 +
piu semplicemente possiamo usare il ccomando screen per realizzare una shell
 +
virtuale che rimanga in esecuzione anche dopo la disconessione, ad esempio
 +
 
 +
screen su -s /bin/bash odoo
 +
 +
da utente root apre uno screen virtuale per l'utente odoo, poi possimo digitare
 +
i comandi
 +
 
 +
cd ~/
 +
./script1.sh &
 +
./script2.sh &
 +
 +
ora abbiamo in esecuzione due istanze di odoo e digitando da tastiera ctrl+a
 +
seguito da d effettuiamo il detach e possiamo fare il logount mentre odoo
 +
continua a girare. In seguito per rientrare sarà sufficiente dare il comando
 +
 
 +
screen -r
 +
 
 +
e possiamo ad esempio uscire da screen con
 +
 
 +
exit
 +
 
 +
ovviamente perchè tutto funzioni avremo in precedenza preparato gli script
 +
nella home dell'utente odoo con la configurazione che vedremo tra poco.
 +
 +
=== La configurazione di Odoo ===
 +
 
 +
La configurazione di Odoo può essere salvata in un file di configurazione,
 +
oppure si possono passare i parametri sulla riga di comando dello script di
 +
avvio.
 +
 
 +
Nella documentazione di odoo si trova la lista tutti i parametri di
 +
configurazione, a noi in questo momento interessano sol questi
 +
 
 +
==== I parametri da cambiare ====
 +
 
 +
* ''--xmlrpc-port'' con questo comando si può cambiare la porta per accedere a odoo la configurazione di default utilizza la porta 8069, ma noi per poter attivare più istanze di odoo possiamo attivare ulteriori porte ad esempio la 8070
 +
 
 +
* ''--addons-path'' oltre agli addons forniti di default è possibile aggiungere altre posizioni utilizzabili per installare altri addons, si può decidere di utilizzare i stessi percorsi per tutte le istanze, oppure utilizzare percorsi diversi.
 +
 
 +
* ''--db-filter'' in istanze diverse si desidera che non sia consentito agli utenti di scegliere database appartenenti ad altre istanze, con questo comando si limita l'accesso ai soli database previsti.
 +
 
 +
* ''--logfile'' per default odoo manda il log degli eventi a video, ma esistono una serie di comandi che permettono di scrivere il log altrove per controllarne l'attività
 +
 
 +
 
 +
==== Gli script ====
 +
 
 +
A questo punto gli script per far partire odoo potrebbero essere simili a questi
 +
 
 +
#!/bin/sh
 +
./OCB/odoo-bin --db-filter=OCB --addons-path=~/OCB/addons,~/myaddons --logfile=~/var/odoo.log --log-level=warn --logrotate
 +
e
 +
#!/bin/sh
 +
./OCB/odoo-bin --xmlrpc-port=8070 --db-filter=ODOO2 --addons-path=~/OCB/addons,~/myaddons2 --logfile=~/var/odoo2.log --log-level=warn --logrotate
  
 
=== Attivazione e configurazione del virtualhost ===
 
=== Attivazione e configurazione del virtualhost ===
Per fare questo si devono attivare degli script apache per il ''virtual host''.<br> Per far questo, aprire un terminale e eseguire il comando:<br>
+
 
 +
A questo punto se la nostra macchina risponde al dominio mysite.com dal browser
 +
possiamo raggiungere le nostre istanze con
 +
 
 +
http://mysite.com:8069/
 +
e
 +
http://mysite.com:8070/
 +
 
 +
che però sono url non molto "gradite", sarebbe molto meglio avere indirizzi su
 +
domini di terzo livello sulla porta 80, per fare questo ci viene in aiuto il
 +
server web apache con la direttiva proxy.
 +
 
 +
Se non abbiamo ancora installato apache lo installiamo con tutti i necessari
 +
parametri di configurazione e poi apriamo un terminale come utente root e digitiamo:
  
 
  nano /etc/apache2/sites-available/odoo.mysite.com.conf  
 
  nano /etc/apache2/sites-available/odoo.mysite.com.conf  
  
ed aggiungere il seguente codice:<br>
+
e scriviamo il seguente codice:
  
 
  <VirtualHost *:80>
 
  <VirtualHost *:80>
Riga 51: Riga 128:
 
     </Proxy>
 
     </Proxy>
 
     ProxyRequests Off
 
     ProxyRequests Off
     ProxyPass / http://mysite.com:8069/
+
     ProxyPass / http://localhost:8069/
     ProxyPassReverse / http://mysite.com:8069/
+
     ProxyPassReverse / http://localhost:8069/
 
     ProxyVia On
 
     ProxyVia On
 
     LogLevel warn
 
     LogLevel warn
 
  </VirtualHost>
 
  </VirtualHost>
 
   
 
   
Terminato l'inserimento salvare il file e, per abilitarlo, eseguire il seguente comando:
+
Terminato l'inserimento salviamo il file e, per abilitarlo, digitiamo il comando:
  
  sudo a2ensite odoo.mysite.com.conf
+
  a2ensite odoo.mysite.com.conf
 +
 
 +
e riavviamo il server apache con:
  
Riavviare poi il server Apache2, con il comando:<br>
 
 
  sudo service apache2 restart
 
  sudo service apache2 restart
  
Lavoro completato.
+
Ora scriviamo un script simile per la seconda istanza ad esempio per l'inirizzo
 +
odoo2.mysite.com
 +
 
 +
ed ora potremo accedere da browser con:
 +
 
 +
http://odoo.mysite.com
 +
 
 +
e
 +
 
 +
http://odoo2.mysite.com
 +
 
 +
Da notare che apache direziona le chiamate dall'esterno sul proprio localhost,
 +
non ho provato ma in questo modo per aumentare la sicurezza si potrebbe
 +
attivare il firewall per impedire l'accesso da porte non standard come sono la
 +
8069 e 8070
  
</div>
+
Tutti gli esempi di codice presentati sono indicativi ed andranno modificati
 +
in funzione della propria configurazione di macchina.

Versione delle 18:17, 6 gen 2017



CONFIGURAZIONE ISTANZE MULTIPLE

Premessa

Odoo è una applicazione web. Questo è decisamente un punto di forza perché oltre a permettere di esporre in internet contenuti aziendali integrati con le funzionalità ERP, consente anche di configurare il server in molti modi. Ad esempio lo si può installare in un server locale non esposto ad internet per massimizzare gli aspetti di sicurezza, oppure si può installare su un server esposto in internet come ad esempio una VPS.

Nel caso di installazione in una VPS, potrebbe essere desiderabile mettere nella stessa macchina fisica più istanze separate di per servire aziende diverse o per installazioni dipartimentali.

Odoo con le opportune configurazioni permette di far convivere istanze isolate condividendo gli stessi sorgenti e lo stesso motore di database.

Delle procedure di installazione abbiamo già parlato, se si installa utilizzando il file .deb verrà installato un daemon che fa partire il server http di odoo alla porta 8069 e che utilizza un file di configurazione nella cartella /etc/odoo per le restanti configurazioni.

In questo caso per lanciare ulteriori istanze è necessario realizzare altri daemon simili al primo ma con i parametri modificati.

In alternativa si può effettuare l'installazione da sorgenti ed in questo caso si devono realizzare tanti script di avvio quante sono le istanze di qui abbiamo necessità.

Il comando screen

Se siamo in una VPS è necessario fare in modo che gli script lanciati restino in esecuzione anche dopo che ci siamo disconnessi. Per fare questo abbiamo due soluzioni, o scriviamo un daemon che lancia gli script automaticamente, oppure piu semplicemente possiamo usare il ccomando screen per realizzare una shell virtuale che rimanga in esecuzione anche dopo la disconessione, ad esempio

screen su -s /bin/bash odoo

da utente root apre uno screen virtuale per l'utente odoo, poi possimo digitare i comandi

cd ~/
./script1.sh &
./script2.sh &

ora abbiamo in esecuzione due istanze di odoo e digitando da tastiera ctrl+a seguito da d effettuiamo il detach e possiamo fare il logount mentre odoo continua a girare. In seguito per rientrare sarà sufficiente dare il comando

screen -r

e possiamo ad esempio uscire da screen con

exit

ovviamente perchè tutto funzioni avremo in precedenza preparato gli script nella home dell'utente odoo con la configurazione che vedremo tra poco.

La configurazione di Odoo

La configurazione di Odoo può essere salvata in un file di configurazione, oppure si possono passare i parametri sulla riga di comando dello script di avvio.

Nella documentazione di odoo si trova la lista tutti i parametri di configurazione, a noi in questo momento interessano sol questi

I parametri da cambiare

  • --xmlrpc-port con questo comando si può cambiare la porta per accedere a odoo la configurazione di default utilizza la porta 8069, ma noi per poter attivare più istanze di odoo possiamo attivare ulteriori porte ad esempio la 8070
  • --addons-path oltre agli addons forniti di default è possibile aggiungere altre posizioni utilizzabili per installare altri addons, si può decidere di utilizzare i stessi percorsi per tutte le istanze, oppure utilizzare percorsi diversi.
  • --db-filter in istanze diverse si desidera che non sia consentito agli utenti di scegliere database appartenenti ad altre istanze, con questo comando si limita l'accesso ai soli database previsti.
  • --logfile per default odoo manda il log degli eventi a video, ma esistono una serie di comandi che permettono di scrivere il log altrove per controllarne l'attività


Gli script

A questo punto gli script per far partire odoo potrebbero essere simili a questi

#!/bin/sh
./OCB/odoo-bin --db-filter=OCB --addons-path=~/OCB/addons,~/myaddons --logfile=~/var/odoo.log --log-level=warn --logrotate 

e

#!/bin/sh
./OCB/odoo-bin --xmlrpc-port=8070 --db-filter=ODOO2 --addons-path=~/OCB/addons,~/myaddons2 --logfile=~/var/odoo2.log --log-level=warn --logrotate

Attivazione e configurazione del virtualhost

A questo punto se la nostra macchina risponde al dominio mysite.com dal browser possiamo raggiungere le nostre istanze con

http://mysite.com:8069/

e

http://mysite.com:8070/

che però sono url non molto "gradite", sarebbe molto meglio avere indirizzi su domini di terzo livello sulla porta 80, per fare questo ci viene in aiuto il server web apache con la direttiva proxy.

Se non abbiamo ancora installato apache lo installiamo con tutti i necessari parametri di configurazione e poi apriamo un terminale come utente root e digitiamo:

nano /etc/apache2/sites-available/odoo.mysite.com.conf 

e scriviamo il seguente codice:

<VirtualHost *:80>
   ServerAdmin info@mysite.com
   ServerName odoo.mysite.com
   ServerAlias www.odoo.mysite.com
   UseCanonicalName Off

   ErrorLog /home/odoo/error.log
   CustomLog /home/odoo/access.log combined

   <Proxy *>
       Order deny,allow
       Allow from all
   </Proxy>
   ProxyRequests Off
   ProxyPass / http://localhost:8069/
   ProxyPassReverse / http://localhost:8069/
   ProxyVia On
   LogLevel warn
</VirtualHost>

Terminato l'inserimento salviamo il file e, per abilitarlo, digitiamo il comando:

a2ensite odoo.mysite.com.conf

e riavviamo il server apache con:

sudo service apache2 restart

Ora scriviamo un script simile per la seconda istanza ad esempio per l'inirizzo odoo2.mysite.com

ed ora potremo accedere da browser con:

http://odoo.mysite.com

e

http://odoo2.mysite.com

Da notare che apache direziona le chiamate dall'esterno sul proprio localhost, non ho provato ma in questo modo per aumentare la sicurezza si potrebbe attivare il firewall per impedire l'accesso da porte non standard come sono la 8069 e 8070

Tutti gli esempi di codice presentati sono indicativi ed andranno modificati

in funzione della propria configurazione di macchina.