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