Odoo Installazione multipla unico server: differenze tra le versioni

Da PNLUG.
(CONFIGURAZIONE ISTANZE MULTIPLE)
(Gli script)
 
(36 versioni intermedie di 2 utenti non mostrate)
Riga 5: Riga 5:
  
 
== CONFIGURAZIONE ISTANZE MULTIPLE ==
 
== CONFIGURAZIONE ISTANZE MULTIPLE ==
 +
('''su installazione Odoo da sorgenti''')<br>
 +
In questo paragrafo spieghiamo come realizzare e avviare assieme due istanze di Odoo avendo effettuato l'installazione di Odoo tramite i file sorgente; in questo caso si dovranno realizzare tanti script di avvio quante sono le istanze che avremo la necessità di avviare.<br>
  
E' possibile avere su una singola macchina più istanze separate di Odoo.<br>
 
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>
+
=== Premessa ===
  
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>
+
Odoo è una applicazione basata su servizi via web, così come la maggior parte della sua configurazione. 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 diversi, a seconda delle proprie necessità.<br>
 +
Ad esempio lo si può installare in un server locale non esposto ad internet per massimizzare gli aspetti di sicurezza, oppure lo si può installare su un server esposto in internet come ad esempio una VPS.<br>
  
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>
+
Nel caso di installazione effettuata in una VPS, potrebbe essere desiderabile mettere nella stessa macchina fisica più istanze separate, per servire aziende diverse o per effetuare installazioni dipartimentali.<br>
  
=== I parametri da cambiare ===
+
Odoo, tramite alcune opportune configurazioni, permette di far convivere istanze isolate condividendo gli stessi sorgenti e lo stesso motore di database.<br>Un esempio di quanto sopra, lo si può vedere realizzato su una nostra VPS, dove coesistono i nostri due siti di test:
I parametri da modificare per avere delle istanze multiple sono:<br>
+
# http://odoo.cstrade.it
 +
# http://odoo2.cstrade.it
  
* 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.
+
Delle procedure standard di installazione della piattaforma Odoo ne abbiamo già parlato nella pagina principale.<br>
 
+
Se si effettua l'installazione utilizzando il file .deb verrà installato un ''daemon'' che farà avviare il servizio HTTP di Odoo utilizzando la porta standard 8069 e utilizzerà un file di configurazione presente nella cartella ''/etc/odoo'' per le restanti configurazioni.<br>
* 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 questo caso, per lanciare ulteriori istanze, sarà necessario realizzare altri ''daemon'' simili al primo ma con i parametri configurati in modo diverso.<br>
 
+
 
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>
+
 
 +
=== Il comando screen ===
 +
 
 +
Se utilizzeremo una VPS come server sarà necessario fare in modo che gli script lanciati restino in esecuzione anche dopo che ci saremo disconnessi. Per fare questo abbiamo due soluzioni, o scriviamo un ''daemon'' che lancia gli script automaticamente, oppure più semplicemente possiamo usare il comando ''screen'' per realizzare una shell virtuale che rimanga in esecuzione anche dopo la disconnessione dell'utente dalla VPS; ad esempio, con il comando:
 +
 
 +
screen su -s /bin/bash odoo
 +
 +
dato da utente ''root'', l'istanza apre uno screen virtuale per l'utente ''odoo'', da dove poi potremo digitare i comandi:
 +
 
 +
cd ~/
 +
./script1.sh &
 +
./script2.sh &
 +
 
 +
per avviare le sessioni Odoo di nostro interesse.<br>
 +
 +
Ora avendo avviato le due istanze di Odoo, sarà necessario digitare da tastiera ''Ctrl+A'' seguito da ''d'' per effettuare il ''detach'' da screen da terminale e successivamente potremo tranquillamente fare il logout dalla sessione, mentre i due processi di  Odoo continueranno a girare normalmente.<br>In seguito, per rientrare nella sessione corrente dopo il login alla VPS, sarà sufficiente dare il comando:
 +
 
 +
screen -r
 +
 
 +
per rientrare su screen.
 +
 
 +
 
 +
Una volta terminato ciò che dovevamo fare, possiamo ad esempio uscire da ''screen'' con il comando:
 +
 
 +
exit
 +
 
 +
e proseguire con altre operazioni successive nella VPS.<br>
 +
 
 +
Ovviamente, perché tutto questo funzioni correttamente e le sessioni di Odoo vengano avviate normalmente, avremo in precedenza preparato gli script da eseguire nella ''\home'' dell'utente ''odoo'', inserendo la configurazione che vedremo tra poco di seguito.<br>
 +
 
 +
Da notare che se usiamo il comando screen per far partire le istanze di odoo, sarà necessario riavviare i server ogni volta che si riavvia la macchina perché non vengono riavviati automaticamente come invece succede se si fanno i daemon di avvio.
 +
 
 +
=== La configurazione di Odoo ===
 +
 
 +
La configurazione di Odoo può essere salvata in un file di configurazione, oppure si possono inserire i vari comandi dei parametri sulla riga di comando dello script di avvio.
 +
 
 +
Nella documentazione di Odoo potete trovare la lista tutti i parametri di configurazione; a noi in questo momento interessano solo i comandi che trovate riportati di seguito.
 +
 
 +
==== I parametri da cambiare ====
 +
 
 +
* ''--xmlrpc-port'', con questo comando si può cambiare la porta HTTP per accedere alla sessione di 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 cartelle in altre posizioni, utilizzabili per installare ulteriori ''addons''. Si può decidere di utilizzare i stessi percorsi per tutte le istanze, oppure utilizzare dei percorsi diversi per ogni singola istanza.
 +
 
 +
* ''--db-filter'', in istanze diverse si desidera che non sia consentito agli utenti di poter scegliere i database appartenenti ad altre istanze; con questo comando si limita l'accesso ai soli database desiderati.
 +
 
 +
* ''--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 ====
 +
 
 +
Giunti a questo punto, iniziamo a vedere  gli script occorrenti per far partire Odoo; potrebbero essere simili a questi:<br>
 +
'''script1.sh'''
 +
 
 +
#!/bin/sh
 +
./OCB/odoo-bin --db-filter=^OCB$ --addons-path=~/OCB/addons,~/myaddons --logfile=~/var/odoo.log --log-level=warn --logrotate
 +
 
 +
e<br>
 +
'''script2.sh'''
 +
 
 +
#!/bin/sh
 +
./OCB/odoo-bin --xmlrpc-port=8070 --db-filter=^ODOO2$ --addons-path=~/OCB/addons,~/myaddons2 --logfile=~/var/odoo2.log --log-level=warn --logrotate
 +
<br>
  
 
=== 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>
+
 
 +
Dopo che sono stati preparati gli script ed avviate le due istanze con il comando screen, se la nostra macchina risponde al dominio ''mysite.com'', attraverso il browser possiamo raggiungere le due istanze, puntanto agli URL:
 +
 
 +
http://mysite.com:8069/
 +
 
 +
e
 +
 
 +
http://mysite.com:8070/
 +
<br>
 +
 
 +
che però sono URL non molto "gradite" ai vostri utenti, in quanto dovranno puntare allo stesso indirizzo del sito ma cambiando obbligatoriamente la porta per selezionare il servizio desiderato a cui accedere.<br> Sarebbe molto meglio utilizzare degli indirizzi ''ad hoc'' su domini di terzo livello ma sempre presenti sulla porta HTTP 80; per fare questo ci viene in aiuto il server web Apache (noi abbiamo utilizzato questo...),con la direttiva ''proxy''.<br>
 +
 
 +
Se non abbiamo ancora installato il server Apache, lo [https://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-debian-wheezy installiamo seguendo tutti i necessari parametri standard di configurazione] e successivamente 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 aggiungiamo nel nuovo file il seguente codice per creare il primo sito (odoo.mysite.com):
  
 
  <VirtualHost *:80>
 
  <VirtualHost *:80>
Riga 48: Riga 122:
 
     </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 del codice per creare il primo servizio in terzo dominio (odoo.mysite.com) salviamo il file e, per abilitarlo, digitiamo il comando:
  
  sudo a2ensite odoo.mysite.com.conf
+
  a2ensite odoo.mysite.com.conf
 +
 
 +
<br>
 +
 
 +
Ora apriamo un altro nuovo file e aggiungiamo in coda del codice simile al precedente per creare il secondo servizio in terzo dominio (odoo2.mysite.com):
 +
 
 +
nano /etc/apache2/sites-available/odoo2.mysite.com.conf
 +
 
 +
<VirtualHost *:80>
 +
    ServerAdmin info@mysite.com
 +
    ServerName odoo2.mysite.com
 +
    ServerAlias www.odoo2.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:8070/
 +
    ProxyPassReverse / http://localhost:8070/
 +
    ProxyVia On
 +
    LogLevel warn
 +
</VirtualHost>
 +
 +
Terminato l'inserimento del codice per creare il secondo servizio in terzo dominio (odoo2.mysite.com) salviamo il file e, per abilitarlo, digitiamo il comando:
 +
 
 +
a2ensite odoo2.mysite.com.conf
 +
 
 +
e riavviamo il server Apache per caricare nella sua configurazione i due nuovi siti, con il comando:
  
Riavviare poi il server Apache2, con il comando:<br>
 
 
  sudo service apache2 restart
 
  sudo service apache2 restart
 +
<br>
 +
 +
====Accesso ai siti in terzo dominio====
 +
 +
Effettuato con successo quanto sopra, potremo ora accedere dal browser ai due diversi siti, puntando con un browser gli indirizzi:
 +
 +
http://odoo.mysite.com
 +
 +
e
 +
 +
http://odoo2.mysite.com
 +
 +
 +
Da notare che Apache direziona le chiamate dall'esterno sul proprio localhost, non abbiamo effettuato ulteriori prove ma in questo modo per aumentare la sicurezza si potrebbe attivare il firewall per impedire l'accesso ai servizi utilizzando porte non standard, come la 8069 e la 8070 originarie.<br>
 +
 +
Tutti gli esempi di codice presentati sono indicativi ed andranno modificati in funzione della propria configurazione di macchina.<br><br>
  
Lavoro completato.
+
== CONFIGURAZIONE ISTANZE MULTIPLE ==
 +
('''su installazione Odoo da file .deb''')<br>
 +
In questo paragrafo vi indichiamo come realizzare e avviare assieme due istanze di Odoo avendo effettuato l'installazione di Odoo tramite il pacchetto .deb; in questo caso vi consigliamo di seguire quanto indicato nei seguenti post:
 +
* [https://www.linode.com/docs/websites/cms/install-odoo-9-erp-on-ubuntu-14-04 Installazione di Odoo 9 su Ubuntu 14.04]
 +
* [https://medium.com/@reedrehg/managing-multiple-odoo-instances-1e4c8bdabb4#.bdfskzu52 Managing multiple instances in Odoo 9 and Ubuntu 14.04]
 +
<br>
  
 
</div>
 
</div>

Versione attuale delle 14:27, 25 gen 2017



CONFIGURAZIONE ISTANZE MULTIPLE

(su installazione Odoo da sorgenti)
In questo paragrafo spieghiamo come realizzare e avviare assieme due istanze di Odoo avendo effettuato l'installazione di Odoo tramite i file sorgente; in questo caso si dovranno realizzare tanti script di avvio quante sono le istanze che avremo la necessità di avviare.


Premessa

Odoo è una applicazione basata su servizi via web, così come la maggior parte della sua configurazione. 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 diversi, a seconda delle proprie necessità.
Ad esempio lo si può installare in un server locale non esposto ad internet per massimizzare gli aspetti di sicurezza, oppure lo si può installare su un server esposto in internet come ad esempio una VPS.

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

Odoo, tramite alcune opportune configurazioni, permette di far convivere istanze isolate condividendo gli stessi sorgenti e lo stesso motore di database.
Un esempio di quanto sopra, lo si può vedere realizzato su una nostra VPS, dove coesistono i nostri due siti di test:

  1. http://odoo.cstrade.it
  2. http://odoo2.cstrade.it

Delle procedure standard di installazione della piattaforma Odoo ne abbiamo già parlato nella pagina principale.
Se si effettua l'installazione utilizzando il file .deb verrà installato un daemon che farà avviare il servizio HTTP di Odoo utilizzando la porta standard 8069 e utilizzerà un file di configurazione presente nella cartella /etc/odoo per le restanti configurazioni.

In questo caso, per lanciare ulteriori istanze, sarà necessario realizzare altri daemon simili al primo ma con i parametri configurati in modo diverso.


Il comando screen

Se utilizzeremo una VPS come server sarà necessario fare in modo che gli script lanciati restino in esecuzione anche dopo che ci saremo disconnessi. Per fare questo abbiamo due soluzioni, o scriviamo un daemon che lancia gli script automaticamente, oppure più semplicemente possiamo usare il comando screen per realizzare una shell virtuale che rimanga in esecuzione anche dopo la disconnessione dell'utente dalla VPS; ad esempio, con il comando:

screen su -s /bin/bash odoo

dato da utente root, l'istanza apre uno screen virtuale per l'utente odoo, da dove poi potremo digitare i comandi:

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

per avviare le sessioni Odoo di nostro interesse.

Ora avendo avviato le due istanze di Odoo, sarà necessario digitare da tastiera Ctrl+A seguito da d per effettuare il detach da screen da terminale e successivamente potremo tranquillamente fare il logout dalla sessione, mentre i due processi di Odoo continueranno a girare normalmente.
In seguito, per rientrare nella sessione corrente dopo il login alla VPS, sarà sufficiente dare il comando:

screen -r

per rientrare su screen.


Una volta terminato ciò che dovevamo fare, possiamo ad esempio uscire da screen con il comando:

exit

e proseguire con altre operazioni successive nella VPS.

Ovviamente, perché tutto questo funzioni correttamente e le sessioni di Odoo vengano avviate normalmente, avremo in precedenza preparato gli script da eseguire nella \home dell'utente odoo, inserendo la configurazione che vedremo tra poco di seguito.

Da notare che se usiamo il comando screen per far partire le istanze di odoo, sarà necessario riavviare i server ogni volta che si riavvia la macchina perché non vengono riavviati automaticamente come invece succede se si fanno i daemon di avvio.

La configurazione di Odoo

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

Nella documentazione di Odoo potete trovare la lista tutti i parametri di configurazione; a noi in questo momento interessano solo i comandi che trovate riportati di seguito.

I parametri da cambiare

  • --xmlrpc-port, con questo comando si può cambiare la porta HTTP per accedere alla sessione di 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 cartelle in altre posizioni, utilizzabili per installare ulteriori addons. Si può decidere di utilizzare i stessi percorsi per tutte le istanze, oppure utilizzare dei percorsi diversi per ogni singola istanza.
  • --db-filter, in istanze diverse si desidera che non sia consentito agli utenti di poter scegliere i database appartenenti ad altre istanze; con questo comando si limita l'accesso ai soli database desiderati.
  • --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

Giunti a questo punto, iniziamo a vedere gli script occorrenti per far partire Odoo; potrebbero essere simili a questi:
script1.sh

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

e
script2.sh

#!/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

Dopo che sono stati preparati gli script ed avviate le due istanze con il comando screen, se la nostra macchina risponde al dominio mysite.com, attraverso il browser possiamo raggiungere le due istanze, puntanto agli URL:

http://mysite.com:8069/

e

http://mysite.com:8070/


che però sono URL non molto "gradite" ai vostri utenti, in quanto dovranno puntare allo stesso indirizzo del sito ma cambiando obbligatoriamente la porta per selezionare il servizio desiderato a cui accedere.
Sarebbe molto meglio utilizzare degli indirizzi ad hoc su domini di terzo livello ma sempre presenti sulla porta HTTP 80; per fare questo ci viene in aiuto il server web Apache (noi abbiamo utilizzato questo...),con la direttiva proxy.

Se non abbiamo ancora installato il server Apache, lo installiamo seguendo tutti i necessari parametri standard di configurazione e successivamente apriamo un terminale come utente root e digitiamo:

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

e aggiungiamo nel nuovo file il seguente codice per creare il primo sito (odoo.mysite.com):

<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 del codice per creare il primo servizio in terzo dominio (odoo.mysite.com) salviamo il file e, per abilitarlo, digitiamo il comando:

a2ensite odoo.mysite.com.conf


Ora apriamo un altro nuovo file e aggiungiamo in coda del codice simile al precedente per creare il secondo servizio in terzo dominio (odoo2.mysite.com):

nano /etc/apache2/sites-available/odoo2.mysite.com.conf 
<VirtualHost *:80>
   ServerAdmin info@mysite.com
   ServerName odoo2.mysite.com
   ServerAlias www.odoo2.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:8070/
   ProxyPassReverse / http://localhost:8070/
   ProxyVia On
   LogLevel warn
</VirtualHost>

Terminato l'inserimento del codice per creare il secondo servizio in terzo dominio (odoo2.mysite.com) salviamo il file e, per abilitarlo, digitiamo il comando:

a2ensite odoo2.mysite.com.conf

e riavviamo il server Apache per caricare nella sua configurazione i due nuovi siti, con il comando:

sudo service apache2 restart


Accesso ai siti in terzo dominio

Effettuato con successo quanto sopra, potremo ora accedere dal browser ai due diversi siti, puntando con un browser gli indirizzi:

http://odoo.mysite.com

e

http://odoo2.mysite.com


Da notare che Apache direziona le chiamate dall'esterno sul proprio localhost, non abbiamo effettuato ulteriori prove ma in questo modo per aumentare la sicurezza si potrebbe attivare il firewall per impedire l'accesso ai servizi utilizzando porte non standard, come la 8069 e la 8070 originarie.

Tutti gli esempi di codice presentati sono indicativi ed andranno modificati in funzione della propria configurazione di macchina.

CONFIGURAZIONE ISTANZE MULTIPLE

(su installazione Odoo da file .deb)
In questo paragrafo vi indichiamo come realizzare e avviare assieme due istanze di Odoo avendo effettuato l'installazione di Odoo tramite il pacchetto .deb; in questo caso vi consigliamo di seguire quanto indicato nei seguenti post: