Istanza e sito¶
All’interno della cartella instances troviamo il file instanceconfig.xml
, responsabile delle impostazioni di configurazione dell’istanza di applicazione.
Creare un’istanza¶
Se siamo già all’interno della cartella instances di un progetto, è possibile creare un’istanza da linea di comando digitando gnrmkinstance
:
gnrmkinstance nomeistanza
Verrà in questo modo creato automaticamente il file instanceconfig.xml che contiene informazioni in formato xml in merito a:
l’implementazione del database (sqlite, postgres, ecc)
i dati di connessione con il database
una lista dei package da utilizzare.
il «site», se non descritto in un file siteconfig.xml separato
Ad esempio, il file instanceconfig.xml
dell’istanza sandboxpg del progetto Sandbox è così strutturato:
<?xml version="1.0" ?>
<GenRoBag>
<db implementation="postgres" dbname="sandboxpg"/>
<packages>
<gnrcore_sys pkgcode="gnrcore:sys"/>
<gnrcore_adm pkgcode="gnrcore:adm"/>
<gnr_it_glbl pkgcode="gnr_it:glbl"/>
<sandbox pkgcode="sandbox"/>
<fatt pkgcode="fatt" />
</packages>
<authentication pkg="sandbox">
<py_auth defaultTags="user" method="authenticate" pkg="adm"/>
<xml_auth defaultTags="user,xml">
<sandbox pwd="sandbox" tags="user,sandbox"/>
</xml_auth>
</authentication>
</GenRoBag>
Si noti che Sandbox presenta due istanze, differenti per metodo di implementazione: una sqlite e una postgres. Indicando lo stesso dbname, più istanze possono connettersi allo stesso database e condividere quindi i dati tra loro.
Suggerimento
Non è obbligatorio indicare un sistema di implementazione o delle regole di autenticazione nel file di istanza: in assenza di indicazioni specifiche, infatti, verranno utilizzate le specifiche del file default.xml
contenuto nella cartella .gnr/instanceconfig.xml
, ovvero quelle di default comuni a tutte le istanze Genropy.
Creare un site¶
Si noti che con la creazione dell’istanza viene di default anche creato tutto ciò che riguarda il site
dell’applicativo, ovvero la «trasformazione» in sito dell’applicativo. I dati del sito sono contenuti nel file siteconfig.xml
, che sempre nell’istanza sandboxpg del progetto Sandbox si presenta in questo modo:
<?xml version="1.0" ?>
<GenRoBag>
<wsgi mainpackage="sandbox"/>
<options liveUpdate="*"/>
</GenRoBag>
Da un recente aggiornamento tutto ciò che riguarda la Bag del site può essere incluso direttamente nella configurazione dell’istanza. L”instanceconfig.xml
precedente, così formulato, diventerebbe:
<?xml version="1.0" ?>
<GenRoBag>
<db implementation="postgres" dbname="sandboxpg"/>
<packages>
<gnrcore_sys pkgcode="gnrcore:sys"/>
<gnrcore_adm pkgcode="gnrcore:adm"/>
<gnr_it_glbl pkgcode="gnr_it:glbl"/>
<sandbox pkgcode="sandbox"/>
<fatt pkgcode="fatt" />
</packages>
<authentication pkg="sandbox">
<py_auth defaultTags="user" method="authenticate" pkg="adm"/>
<xml_auth defaultTags="user,xml">
<sandbox pwd="sandbox" tags="user,sandbox"/>
</xml_auth>
</authentication>
<site>
<wsgi mainpackage="sandbox"/>
<options liveUpdate="*"/>
</site>
</GenRoBag>
In base alle necessità anche il site può essere creato separatamente con l’apposito script gnrmksite
.
Suggerimento
Si noti che a un’istanza corrisponde necessariamente almeno un site, ma è anche possibile creare più sites per una stessa istanza e avviarli su porte diverse o con modalità diverse. È possibile per comodità raccogliere i diversi sites all’interno di una cartella sites
allo stesso livello di instances e packages invece che direttamente all’interno della cartella dell’istanza.
Autore della sezione: Davide Paci