.. _tutor/architettura/instance: 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:: 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. .. hint:: 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:: 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:: In base alle necessità anche il *site* può essere creato separatamente con l'apposito script ``gnrmksite``. .. hint:: 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. .. sectionauthor:: Davide Paci