{"id":57341,"date":"2022-07-11T08:02:14","date_gmt":"2022-07-11T07:02:14","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=57341&#038;post_type=knowledgebase&#038;preview_id=57341"},"modified":"2025-10-01T20:46:36","modified_gmt":"2025-10-01T19:46:36","slug":"cosa-sono-le-variabili-d-ambiente","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/","title":{"rendered":"Variabili d&#8217;Ambiente: Cosa Sono e Come Utilizzarle"},"content":{"rendered":"<p>Se avete gi\u00e0 lavorato allo <a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppatore-full-stack\/\">sviluppo di un&#8217;applicazione<\/a>, avrete sicuramente sentito parlare del termine &#8220;variabili d&#8217;ambiente&#8221;. Le variabili d&#8217;ambiente sono utilizzate per memorizzare i segreti dell&#8217;applicazione e i dati di configurazione, che vengono recuperati dall&#8217;applicazione in esecuzione quando necessario.<\/p>\n<p>Le variabili d&#8217;ambiente aggiungono dinamicit\u00e0 alla vostra base di codice statica; si pu\u00f2 passare da una risorsa interna a una esterna in base al valore della variabile d&#8217;ambiente passata all&#8217;applicazione.<\/p>\n<p>Questo articolo vi fornir\u00e0 una panoramica sulle variabili d&#8217;ambiente. Scoprirete alcuni dei modi pi\u00f9 popolari per creare e gestire le variabili d&#8217;ambiente, e capirete quando usarle. Alla fine di questo articolo, sarete in grado di utilizzare con efficacia e sicurezza le variabili d&#8217;ambiente nelle vostre applicazioni.<\/p>\n<p>Senza ulteriori indugi, iniziamo!<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Cos&#8217;\u00e8 una Variabile d&#8217;Ambiente?<\/h2>\n<p>Come gi\u00e0 accennato nella nostra introduzione, le variabili d&#8217;ambiente sono variabili disponibili per il vostro programma\/applicazione in modo dinamico durante l&#8217;esecuzione. Il valore di queste variabili pu\u00f2 provenire da diverse fonti: file di testo, secret manager di terze parti, script di chiamata, ecc.<\/p>\n<p>L&#8217;aspetto importante \u00e8 che il valore di queste variabili d&#8217;ambiente non \u00e8 codificato nel vostro programma. Sono veramente dinamiche e possono essere modificate in base all&#8217;ambiente in cui il programma viene eseguito.<\/p>\n\n<h2>Tipi di Variabili d&#8217;Ambiente<\/h2>\n<p>Esistono tre tipi principali di variabili d&#8217;ambiente in un sistema informatico basato su Windows, e ognuno di essi ha i suoi casi d&#8217;uso. Vediamoli uno per uno.<\/p>\n<h3>1. Variabili d&#8217;Ambiente di Sistema<\/h3>\n<p>Le variabili d&#8217;ambiente di sistema risiedono nella parte superiore della root di sistema e sono le stesse per tutti i processi in esecuzione sotto tutti i profili utente del sistema stesso. Di solito sono impostate dal sistema operativo o dall&#8217;amministratore di sistema, e raramente \u00e8 necessario modificarle.<\/p>\n<p>Uno degli usi pi\u00f9 comuni di una variabile d&#8217;ambiente di sistema \u00e8 l&#8217;impostazione di una variabile <code>PATH<\/code> per un pacchetto\/libreria globale da utilizzare da tutti gli utenti del sistema.<\/p>\n<h3>2. Variabili d&#8217;Ambiente Utente<\/h3>\n<p>Le variabili d&#8217;ambiente utente sono quelle locali di un profilo utente nei sistemi Windows. Queste variabili sono utilizzate per memorizzare informazioni specifiche dell&#8217;utente, come il percorso di un&#8217;installazione locale di librerie che non devono essere utilizzate da tutti gli utenti, valori specifici di programmi installati solo per utenti specifici, ecc.<\/p>\n<p>Non \u00e8 necessario che l&#8217;amministratore del sistema apporti modifiche a queste variabili; potete farlo voi stessi come utenti. Queste variabili sono utili per implementare modifiche locali al sistema senza influenzare gli altri utenti.<\/p>\n<h3>3. Variabili d&#8217;Ambiente Runtime\/Process<\/h3>\n<p>Le variabili d&#8217;ambiente del runtime si restringono ulteriormente solo al runtime o al processo a cui sono associate. Di solito sono impostate dal processo genitore che crea il nuovo processo e sono accompagnate dalle variabili d&#8217;ambiente del sistema e dell&#8217;utente.<\/p>\n<p>\u00c8 possibile utilizzare lo scripting del terminale per creare e memorizzare queste variabili al volo. Le variabili di runtime di solito non sono permanenti, a meno che non siano state create tramite script, e devono essere definite ogni volta che si avvia un nuovo processo.<\/p>\n<h3>Variabili d&#8217;ambiente nei sistemi Unix<\/h3>\n<p>A differenza dei sistemi Windows, i sistemi basati su Unix non hanno tre livelli di variabili d&#8217;ambiente. In questi sistemi, tutto \u00e8 memorizzato in un oggetto <code>var<\/code> e pu\u00f2 essere accessibile\/modificato dal programma in esecuzione.<\/p>\n<p>Se si desidera impostare alcune variabili d&#8217;ambiente come predefinite da caricare ogni volta che un programma viene eseguito sul sistema, \u00e8 necessario definirle in file come <code>.~\/bashrc<\/code> o <code>~.profile<\/code> che vengono caricati all&#8217;avvio del sistema.<\/p>\n<h3>Variabili d&#8217;Ambiente e Pseudo Variabili d&#8217;Ambiente<\/h3>\n<p>Nei sistemi Windows e DOS \u00e8 disponibile una linea separata di variabili d&#8217;ambiente dinamiche, note come pseudo-variabili d&#8217;ambiente. Non si tratta di coppie di chiavi e valori assegnati staticamente, ma di riferimenti dinamici che restituiscono vari valori quando vengono interrogati.<\/p>\n<p>Mentre \u00e8 possibile assegnare un valore a una variabile d&#8217;ambiente manualmente utilizzando il comando <code>SET<\/code> o il suo equivalente, non si possono assegnare valori alle pseudo variabili d&#8217;ambiente. Esiste un <a href=\"https:\/\/en.wikipedia.org\/wiki\/Environment_variable#Windows_2\" target=\"_blank\" rel=\"noopener noreferrer\">elenco fisso<\/a> di queste variabili che si possono utilizzare nel codice per semplificare il proprio lavoro. Alcuni casi d&#8217;uso popolari sono <code>%CD%<\/code> per la directory corrente e <code>%TIME%<\/code> per l&#8217;ora corrente.<\/p>\n<h2>Perch\u00e9 Dovreste Usare le Variabili d&#8217;Ambiente?<\/h2>\n<p>Ora che avete chiaro cosa sia una variabile d&#8217;ambiente e i vari tipi esistenti, \u00e8 il momento di sapere perch\u00e9 dovreste usarle quanto pi\u00f9 possibile nelle vostre applicazioni.<\/p>\n<h3>Separation of Concerns<\/h3>\n<p>Uno dei motivi pi\u00f9 importanti per cui dovreste usare le variabili d&#8217;ambiente nelle applicazioni \u00e8 quello di aderire a un principio di progettazione molto diffuso e utile: la &#8220;separation of concerns&#8221;. Questo principio afferma che i programmi informatici dovrebbero essere divisi in sezioni distinte per poterli gestire in modo efficiente. Ogni sezione dovrebbe essere basata su uno dei concern principali del programma e l&#8217;accoppiamento tra queste sezioni dovrebbe essere minimo.<\/p>\n<p>La configurazione dell&#8217;applicazione pu\u00f2 essere considerata uno di questi concern e quindi deve essere separata dal programma principale. Uno dei modi migliori per farlo \u00e8 memorizzarla in un file esterno e iniettarla quando serve. Le variabili d&#8217;ambiente aiutano a isolare i dati critici di configurazione dell&#8217;applicazione utilizzando file env o archivi di variabili remoti. In questo modo, gli sviluppatori riceveranno solo le informazioni di cui hanno bisogno.<\/p>\n<h3>Mantenere Set di Configurazioni Indipendenti tra i Vari Ambienti<\/h3>\n<p>Oltre a isolare le configurazioni dell&#8217;applicazione dal codice sorgente, \u00e8 necessario anche essere in grado di passare facilmente da un set di dati di configurazione all&#8217;altro. Se si sceglie di codificare i valori di configurazione dell&#8217;app nel codice sorgente, pu\u00f2 diventare quasi impossibile sostituirli in base a condizioni esterne come gli ambienti di distribuzione.<\/p>\n<p>L&#8217;uso delle variabili d&#8217;ambiente aiuta a disaccoppiare i dati di configurazione dal codice e a standardizzare il modo in cui queste informazioni vengono fornite alla vostra applicazione, consentendovi di modificare\/scambiare al volo le informazioni fornite.<\/p>\n<h3>Proteggere i Segreti<\/h3>\n<p>I segreti della vostra app rientrano tra le informazioni sensibili. Se le persone sbagliate ci mettono le mani sopra, possono accedere all&#8217;architettura interna della vostra app e alle risorse di terze parti. Esempi comuni sono le chiavi AWS e i dettagli degli account di sistema. L&#8217;accesso non autorizzato a queste chiavi pu\u00f2 portare alla perdita di denaro e di dati dell&#8217;applicazione. Gli hacker possono persino arrivare a impedire il normale funzionamento dell&#8217;applicazione.<\/p>\n<p>Per questo motivo \u00e8 fondamentale che proteggiate questi segreti: se lasciati in giro nella base di codice, tutti gli sviluppatori possono accedervi. Se non seguite metodi di offuscamento del codice adeguati, le vostre applicazioni possono essere sottoposte a reverse engineering e le chiavi contenute nel codice recuperate. L&#8217;isolamento di questi segreti attraverso le variabili d&#8217;ambiente pu\u00f2 evitare che si verifichino questi scenari.<\/p>\n<h2>Esempi di Utilizzo delle Variabili d&#8217;Ambiente<\/h2>\n<p>Ora che avete un&#8217;idea chiara di come funzionano le variabili d&#8217;ambiente e di come usarle in modo efficace, ecco alcuni scenari frequenti in cui usare le variabili d&#8217;ambiente:<\/p>\n<ul>\n<li><strong>Tipo di ambiente<\/strong>: Le variabili d&#8217;ambiente sono spesso utilizzate per memorizzare il nome dell&#8217;ambiente in cui l&#8217;applicazione \u00e8 in esecuzione. La logica dell&#8217;applicazione pu\u00f2 utilizzare questo valore per accedere al giusto set di risorse o per abilitare\/disabilitare determinate funzionalit\u00e0 o sezioni dell&#8217;applicazione.<\/li>\n<li><strong>Nome di dominio<\/strong>: Il nome di dominio di un&#8217;applicazione pu\u00f2 variare in base all&#8217;ambiente in cui si trova. Isolarlo vi permette di modificare facilmente il nome di dominio dell&#8217;applicazione senza doverlo cercare in tutto il codice.<\/li>\n<li><strong>URL API<\/strong>: Ogni ambiente della vostra applicazione pu\u00f2 avere API distribuite anche in ambienti diversi.<\/li>\n<li><strong>Chiavi private<\/strong>: Le chiavi dei servizi e delle risorse a pagamento devono essere isolate dal codice sorgente dell&#8217;app per evitare che finiscano accidentalmente nelle mani sbagliate.<\/li>\n<li><strong>Numeri di account di servizio, ecc.<\/strong>: \u00e8 possibile variare altre informazioni specifiche del sistema, come numeri di account di servizio, keytab, ecc. in base all&#8217;ambiente dell&#8217;app per la gestione e il monitoraggio delle risorse.<\/li>\n<\/ul>\n<h2>Come Memorizzare le Variabili d&#8217;Ambiente<\/h2>\n<p>Ora che il perch\u00e9 le variabili d&#8217;ambiente sono importanti \u00e8 pi\u00f9 chiaro, \u00e8 il momento di vedere come memorizzarle e accedervi nella propria applicazione. Di seguito sono illustrati tre modi diversi ma molto diffusi di gestire le variabili d&#8217;ambiente in un&#8217;applicazione.<\/p>\n<h3>Usare i File .env<\/h3>\n<p>I file <code>.env<\/code> sono senza dubbio il modo pi\u00f9 semplice e diffuso di gestire le variabili d&#8217;ambiente. L&#8217;idea \u00e8 semplice: si memorizzano le variabili d&#8217;ambiente in un file chiamato <code>.env<\/code> nella root del proprio progetto. L&#8217;applicazione cerca le variabili in questo file e le carica per utilizzarle durante l&#8217;esecuzione. Ecco come si presenta un tipico file <code>.env<\/code>:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO=SOME_KEY_HERE\nVAR_DOS=SOME_OTHER_KEY_HERE\n<\/code><\/pre>\n<p>I file<code>.env<\/code> permettono anche di definire degli insiemi di variabili d&#8217;ambiente e di accedervi in base all&#8217;ambiente di esecuzione della propria applicazione o ad altri fattori. Invece di salvare il file semplicemente come <code>.env<\/code>, \u00e8 possibile creare pi\u00f9 di un file e conservarli come <code>.env.dev<\/code> e <code>.env.prod<\/code>. All&#8217;interno di questi file, si possono definire gli stessi set di variabili ma con valori diversi, a seconda dell&#8217;ambiente.<\/p>\n<h4>Modello di Esempio<\/h4>\n<p>Quando si lavora con i file <code>.env<\/code>, non \u00e8 consigliabile aggiungerli al sistema di controllo della versione (ne parleremo pi\u00f9 avanti). Per questo motivo, dovreste definire un &#8220;.env.template&#8221; nel vostro progetto in modo che gli sviluppatori possano seguire il modello e creare un file <code>.env<\/code> a livello locale.<\/p>\n<p>Ecco come potrebbe apparire un file <code>.env.template<\/code>:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO= # Your value here\nVAR_DOS= # Your value here\n<\/code><\/pre>\n<p>Non \u00e8 necessario che segua delle convenzioni, purch\u00e9 sia chiaro per il team di sviluppo. Per semplificare questo processo, si possono anche utilizzare pacchetti come <a href=\"https:\/\/www.npmjs.com\/package\/env-template\" target=\"_blank\" rel=\"noopener noreferrer\">env-template<\/a>.<\/p>\n<h4>I Vantaggi<\/h4>\n<p>Ecco alcuni motivi per cui dovreste prendere in considerazione l&#8217;utilizzo dei file <code>.env<\/code> per gestire le variabili d&#8217;ambiente nella vostra applicazione.<\/p>\n<h5>Semplice da Usare<\/h5>\n<p>Questo metodo \u00e8 il pi\u00f9 semplice tra le tecniche di gestione delle variabili d&#8217;ambiente. Tutto ci\u00f2 che dovete fare \u00e8 creare un file di testo semplice che contenga i vostri segreti e memorizzarlo nella root del progetto.<\/p>\n<p>Cambiare ambiente \u00e8 semplice come cambiare il file env stesso. Si possono memorizzare pi\u00f9 file con i nomi <code>.env.dev<\/code>, <code>.env.prod<\/code>, <code>.env.uat<\/code>, ecc. e configurare il codice sorgente per accedere a questi file in base all&#8217;ambiente in cui viene eseguito.<\/p>\n<h5>Accesso Locale<\/h5>\n<p>I file <code>.env<\/code> si possono configurare facilmente in un ambiente di sviluppo locale. A differenza degli strumenti di gestione delle variabili nativi della piattaforma, non \u00e8 necessario distribuire l&#8217;applicazione per sfruttare la funzionalit\u00e0 delle variabili d&#8217;ambiente. Rispetto ai secret manager, i file <code>.env<\/code> sono pi\u00f9 facili da configurare localmente e non c&#8217;\u00e8 alcuna dipendenza dalla rete per accedere ai segreti dell&#8217;applicazione.<\/p>\n<h5>Supporto Open Source<\/h5>\n<p>Esistono numerosi pacchetti open-source che aiutano a caricare e gestire i segreti delle app dai file <code>env<\/code>. Non \u00e8 necessario dipendere da servizi a pagamento, n\u00e9 le opzioni sono limitate per quanto riguarda la gestione dei segreti delle app. Esiste un&#8217;ampia gamma di librerie open-source di terze parti che aiutano a gestire i file env. Alcuni esempi popolari e utili sono <a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/env-template\" target=\"_blank\" rel=\"noopener noreferrer\">env-template<\/a> e <a href=\"https:\/\/www.npmjs.com\/package\/cross-env\" target=\"_blank\" rel=\"noopener noreferrer\">cross-env<\/a>.<\/p>\n<h4>Contro<\/h4>\n<p>Ecco alcuni svantaggi dei file env che dovreste conoscere prima di utilizzarli nei vostri progetti.<\/p>\n<h5>Formattazione<\/h5>\n<p>I file <code>.env<\/code> memorizzano i segreti della vostra applicazione sotto forma di coppie chiave-valore. Il formato abituale per memorizzare le variabili d&#8217;ambiente in un file <code>.env<\/code> \u00e8:<\/p>\n<pre><code class=\"language-bash\">Key1=Value1\n<\/code><\/pre>\n<p>Dovrete attenervi rigorosamente a questo formato affinch\u00e9 la vostra app possa leggere con successo i segreti dell&#8217;applicazione. Se si commette un piccolo errore in mezzo a decine o centinaia di righe di variabili d&#8217;ambiente, l&#8217;intero file potrebbe non essere analizzato e il programma potrebbe restituire errori non correlati. Il fatto che ci sia un errore di parsing nel file <code>.env<\/code> potrebbe non essere nemmeno evidenziato. Ecco perch\u00e9 dovete fare attenzione quando utilizzate i file <code>.env<\/code>.<\/p>\n<h5>Rischio di Perdita Accidentale di Segreti Durante la Condivisione e l&#8217;Archiviazione<\/h5>\n<p>Poich\u00e9 i file <code>.env<\/code> sono file di testo semplice, sono vulnerabili all&#8217;esposizione accidentale quando vengono archiviati su un disco rigido condiviso o inviati tramite una rete non protetta. Per questo motivo \u00e8 necessario prestare particolare attenzione a non far trapelare i segreti della vostra app quando li memorizzate con i file <code>.env<\/code>.<\/p>\n<h3>Utilizzare l&#8217;Archiviazione delle Variabili Nativa della Piattaforma<\/h3>\n<p>Un&#8217;altra opzione popolare per memorizzare le variabili d&#8217;ambiente \u00e8 quella di affidarsi all&#8217;archiviazione delle variabili della piattaforma di distribuzione. La maggior parte degli ambienti di distribuzione, come Heroku, <a href=\"https:\/\/kinsta.com\/it\/alternativa-aws\/\">AWS<\/a>, Netlify e cos\u00ec via, offrono agli utenti uno spazio per caricare i segreti che vengono poi iniettati nel runtime dell&#8217;applicazione. \u00c8 possibile consultare la documentazione della piattaforma di deployment per sapere se la supporta e come iniziare a utilizzarla.<\/p>\n<p>Ecco una rapida occhiata allo strumento di gestione delle variabili d&#8217;ambiente di Netlify:<\/p>\n<figure id=\"attachment_125214\" aria-describedby=\"caption-attachment-125214\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125214 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/netlify-environment-variable-manager-1024x627.png\" alt=\"Strumento di gestione delle variabili d'ambiente di Netlify.\" width=\"1024\" height=\"627\"><figcaption id=\"caption-attachment-125214\" class=\"wp-caption-text\">Strumento di gestione delle variabili d&#8217;ambiente di Netlify.<\/figcaption><\/figure>\n<h4>Pro<\/h4>\n<p>Ecco perch\u00e9 dovreste prendere in considerazione l&#8217;utilizzo di soluzioni di archiviazione delle variabili native della piattaforma.<\/p>\n<h5>Altamente Sicura<\/h5>\n<p>Poich\u00e9 questa opzione \u00e8 gestita interamente dalla piattaforma di distribuzione, \u00e8 sicuramente pi\u00f9 sicura rispetto alla memorizzazione dei segreti in un <a href=\"https:\/\/kinsta.com\/it\/blog\/migliori-editor-di-testo\/\">file di testo<\/a>. \u00c8 possibile controllare chi pu\u00f2 accedere allo strumento di gestione delle variabili ed essere certi che i segreti non verranno mai inviati accidentalmente al VCS.<\/p>\n<h5>Facile da Aggiornare<\/h5>\n<p>Aggiornare le variabili d&#8217;ambiente quando sono memorizzate in modo indipendente \u00e8 pi\u00f9 semplice: non \u00e8 necessario modificare il codice sorgente e crearne una nuova versione. Basta semplicemente cambiare i valori nella piattaforma e ricostruire il progetto. Il progetto ricever\u00e0 i nuovi valori al successivo avvio.<\/p>\n<p>Anche la formattazione non \u00e8 pi\u00f9 un problema, poich\u00e9 la maggior parte dei gestori di distribuzione specifici per la piattaforma sottopongono le chiavi a lintering man mano che vengono inserite. In casi come quello di Netlify, \u00e8 possibile inserire i segreti in una forma pre-formattata, eliminando le possibilit\u00e0 di commettere errori di formattazione.<\/p>\n<h5>Consente la Collaborazione<\/h5>\n<p>Poich\u00e9 le piattaforme di distribuzione sono accessibili a tutto il team, \u00e8 facile condividere i segreti con le persone giuste senza dover inviare file di testo via internet. \u00c8 inoltre possibile controllare chi pu\u00f2 accedere al variable manager (nella maggior parte dei casi) e usarlo come archivio centrale per i segreti delle app.<\/p>\n<h4>Contro<\/h4>\n<p>Anche se gli strumenti di gestione delle variabili nativi della piattaforma sembrano essere la soluzione che fa per voi, ci sono alcuni aspetti da tenere a mente prima di sceglierli.<\/p>\n<h5>Dipendono dalla Piattaforma<\/h5>\n<p>Come dice il loro nome, sono altamente specifici per la piattaforma che si sta utilizzando. In alcuni casi, la piattaforma di distribuzione potrebbe non offrire questo servizio. Cambiare la piattaforma di distribuzione per avere accesso a questo servizio potrebbe non essere la decisione migliore.<\/p>\n<h5>Non uniforme<\/h5>\n<p>Poich\u00e9 sono offerti e gestiti completamente dalla piattaforma di distribuzione, questi servizi possono essere altamente non uniformi. Spostare le variabili da una piattaforma all&#8217;altra pu\u00f2 essere problematico. Non si pu\u00f2 nemmeno pensare che tutte le piattaforme di distribuzione offrano la possibilit\u00e0 di importare\/esportare le variabili d&#8217;ambiente. Anche se la maggior parte lo fa, \u00e8 tutto nelle mani della piattaforma. Se si ha un lungo elenco di variabili d&#8217;ambiente, ci sono molte probabilit\u00e0 di incorrere in un piccolo vendor lock-in.<\/p>\n<h5>Nessun Supporto Locale<\/h5>\n<p>Sebbene questi servizi siano ottimi per accedere alle variabili d&#8217;ambiente nelle distribuzioni della vostra applicazione, \u00e8 raro che si possano utilizzare durante lo sviluppo dell&#8217;applicazione in locale. Nella maggior parte dei casi, dovrete ricorrere alla gestione dei file <code>.env<\/code> locali. Pur raggiungendo lo scopo, questa soluzione complica inutilmente l&#8217;intera configurazione.<\/p>\n<h3>Utilizzare i Secret Manager<\/h3>\n<p>La terza opzione, attualmente in fase di sviluppo, \u00e8 quella di utilizzare dei secret manager dedicati. I secret manager sono servizi di terze parti che permettono di isolare completamente i segreti dell&#8217;applicazione dal codice sorgente o dalla distribuzione e di recuperarli quando necessario attraverso connessioni di rete sicure.<\/p>\n<h4>I Vantaggi<\/h4>\n<p>Ecco alcuni dei vantaggi che i secret manager offrono rispetto ad altri metodi di gestione dei segreti.<\/p>\n<h5>Altamente Sicuro<\/h5>\n<p>Dal momento che i segreti sono archiviati in un servizio completamente isolato, si pu\u00f2 essere certi che molto probabilmente non verranno mai divulgati accidentalmente mentre li si condivide con i colleghi o tramite i commit del controllo di versione. La piattaforma di terze parti si occupa di tenere al sicuro i segreti e di solito ha degli SLA piuttosto rigidi per quanto riguarda la sicurezza dei dati.<\/p>\n<p>Anche quando si accede ai segreti dall&#8217;interno della propria applicazione, la maggior parte dei secret manager fornisce il proprio codice client in grado di <a href=\"https:\/\/kinsta.com\/it\/blog\/sicurezza-cloud\/\">recuperare in modo sicuro<\/a> e di consentire l&#8217;accesso ai segreti quando necessario.<\/p>\n<h5>Uniforme in Tutti gli Ambienti<\/h5>\n<p>Poich\u00e9 i segreti sono ora indipendenti dalla base di codice e dagli ambienti di distribuzione, si potr\u00e0 godere di un&#8217;uniformit\u00e0 tra gli ambienti. Non si dovranno prendere provvedimenti particolare per l&#8217;onboarding di nuovi sviluppatori o adottare misure particolari prima di mettere in produzione la vostra applicazione: la maggior parte di questi aspetti sono semplificati o gestiti dal secret manager.<\/p>\n<h4>Contro<\/h4>\n<p>Anche se i secret manager sembrano essere la migliore soluzione possibile per la gestione delle variabili d&#8217;ambiente, hanno i loro limiti.<\/p>\n<h5>Costi<\/h5>\n<p>La gestione delle variabili d&#8217;ambiente \u00e8 parte delle attivit\u00e0 interne ai progetti da molto tempo, e la maggior parte delle piattaforme di distribuzione fornisce questa funzione gratuitamente, poich\u00e9 non prevede costi aggiuntivi.<\/p>\n<p>Tuttavia, poich\u00e9 i secret manager sono servizi completamente indipendenti, hanno un proprio costo operativo. Di conseguenza, gli utenti devono sostenere questo costo quando utilizzano questi servizi.<\/p>\n<h5>Fasi Iniziali della Tecnologia<\/h5>\n<p>Poich\u00e9 la tecnologia \u00e8 piuttosto nuova, non si pu\u00f2 essere sicuri di quanto sar\u00e0 adottata dal settore in futuro. Sebbene i secret manager siano molto promettenti in termini di sicurezza e facilit\u00e0 di gestione, il fattore costo e le preoccupazioni legate alla gestione dei dati potrebbero portare a un&#8217;adozione piuttosto lenta della tecnologia.<\/p>\n<h2>Come Lavorare con le Variabili d&#8217;Ambiente<\/h2>\n<p>Ora che avete compreso il concetto di variabili d&#8217;ambiente e i modi disponibili per implementarle in un&#8217;applicazione, vediamo come lavorarci tramite il terminale e nelle <a href=\"https:\/\/kinsta.com\/it\/blog\/app-node-js\/\">applicazioni basate su Node.js<\/a>.<\/p>\n<h3>Variabili d&#8217;Ambiente nel Terminale<\/h3>\n<p>Poich\u00e9 le variabili d&#8217;ambiente sono specifiche per i processi, \u00e8 possibile impostarle e cancellarle tramite il terminale in modo che vengano trasmesse ai processi generati dal terminale.<\/p>\n<h4>Trovare i Valori delle Variabili<\/h4>\n<p>Per visualizzare l&#8217;elenco delle variabili d&#8217;ambiente nel terminale, basta eseguire i seguenti comandi, specifici per sistema operativo.<\/p>\n<p>Su Windows:<\/p>\n<pre><code class=\"language-bash\">set\n<\/code><\/pre>\n<p>Su Linux o MacOS:<\/p>\n<pre><code class=\"language-bash\">env\n<\/code><\/pre>\n<p>Questa operazione stamper\u00e0 un elenco di tutte le variabili d&#8217;ambiente disponibili nel terminale in esecuzione.<\/p>\n<h4>Impostare Nuove Variabili<\/h4>\n<p>Per impostare nuove variabili tramite il terminale, \u00e8 sufficiente eseguire i seguenti comandi.<\/p>\n<p>Su Windows:<\/p>\n<pre><code class=\"language-bash\">set \"VAR_NAME=var_value\"\n<\/code><\/pre>\n<p>Su Linux o MacOS:<\/p>\n<pre><code class=\"language-bash\">VAR_NAME=var_value\n<\/code><\/pre>\n<h4>Cancellare le Variabili<\/h4>\n<p>Per eliminare una variabile d&#8217;ambiente, basta eseguire i seguenti comandi.<\/p>\n<p>Su Windows:<\/p>\n<pre><code class=\"language-bash\">set \"VAR_NAME=\"\n<\/code><\/pre>\n<p>Su Linux o MacOS:<\/p>\n<pre><code class=\"language-bash\">unset VAR_NAME\n<\/code><\/pre>\n<p>Tenete presente che i metodi sopra descritti servono solo a creare\/eliminare le variabili d&#8217;ambiente per la sessione corrente del terminale.<\/p>\n<h3>Variabili d&#8217;ambiente in Node.js<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-javascript\/\">JavaScript<\/a> \u00e8 uno dei linguaggi di programmazione pi\u00f9 popolari al momento. \u00c8 ampiamente utilizzato sia per creare <a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppatore-frontend\/\">applicazioni back-end che front-end<\/a>, il che lo rende uno dei linguaggi di programmazione pi\u00f9 versatili.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/node-js\/\">Node.js<\/a> \u00e8 uno dei <a href=\"https:\/\/kinsta.com\/it\/blog\/librerie-javascript\/\">framework JS<\/a> pi\u00f9 utilizzati per la creazione di applicazioni backend. Vediamo come gestire facilmente le variabili d&#8217;ambiente nelle applicazioni basate su Node.js.<\/p>\n<h4>Accedere Direttamente alle Variabili d&#8217;Ambiente<\/h4>\n<p>Node.js fornisce un riferimento alle variabili d&#8217;ambiente del processo corrente tramite <code>process.env<\/code>. \u00c8 possibile visualizzare le variabili d&#8217;ambiente disponibili stampando questo oggetto nella console.<\/p>\n<figure id=\"attachment_125215\" aria-describedby=\"caption-attachment-125215\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125215 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/printing-process-env-1024x579.png\" alt=\"Stampa dell'oggetto process.env.\" width=\"1024\" height=\"579\"><figcaption id=\"caption-attachment-125215\" class=\"wp-caption-text\">Stampa dell&#8217;oggetto process.env.<\/figcaption><\/figure>\n<p>Questo oggetto conterr\u00e0 le variabili disponibili per il processo Node in esecuzione. \u00c8 possibile aggiungere nuove variabili dichiarandole prima dell&#8217;esecuzione dell&#8217;applicazione, in modo simile a questo:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO=SOMETHING node index.js\n<\/code><\/pre>\n<figure id=\"attachment_125216\" aria-describedby=\"caption-attachment-125216\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125216 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/printing-process-env-new-variable-1024x614.png\" alt=\"Stampa dell'oggetto process.env dopo aver aggiunto una nuova variabile.\" width=\"1024\" height=\"614\"><figcaption id=\"caption-attachment-125216\" class=\"wp-caption-text\">Stampa dell&#8217;oggetto process.env dopo aver aggiunto una nuova variabile.<\/figcaption><\/figure>\n<p>Come si pu\u00f2 notare, la nuova variabile viene aggiunta all&#8217;oggetto <code>process.env<\/code>. Tuttavia, non \u00e8 possibile accedere a nessuna variabile definita in un file <code>.env<\/code> tramite questo metodo. Per farlo, \u00e8 necessario utilizzare un pacchetto come <code>dotenv<\/code> per caricare il file <code>.env<\/code> in fase di esecuzione.<\/p>\n<h4>Usare il Pacchetto dotenv per Accedere ai File .env<\/h4>\n<p>Il pacchetto <code>dotenv<\/code> aiuta a caricare le variabili d&#8217;ambiente memorizzate nei file <code>.env<\/code> nella root del progetto. Il suo utilizzo \u00e8 semplice: si comincia con l&#8217;installazione eseguendo il seguente comando:<\/p>\n<pre><code class=\"language-bash\">npm i dotenv@16.0.0\n<\/code><\/pre>\n<p>Successivamente, dovrete aggiungere la seguente riga di codice all&#8217;inizio del codice della vostra applicazione per inizializzare il pacchetto:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config()\n<\/code><\/pre>\n<p>Ecco fatto! Ora i segreti memorizzati in un file <code>.env<\/code> nella root del progetto saranno caricati nell&#8217;oggetto <code>process.env<\/code> non appena l&#8217;applicazione si avvia. Vedremo questo metodo in azione pi\u00f9 avanti nel seguente tutorial.<\/p>\n<h2>Tutorial sulle Variabili d&#8217;Ambiente<\/h2>\n<p>Il modo migliore per capire un concetto tecnico \u00e8 vederlo in azione. Ecco un rapido tutorial che vi aiuter\u00e0 a iniziare a conoscere le variabili d&#8217;ambiente e ad apprenderne l&#8217;uso in dettaglio.<\/p>\n<p>Nella seguente guida vi mostreremo come utilizzare le variabili d&#8217;ambiente attraverso tutti e tre i modi che abbiamo menzionato in precedenza: i file<code>.env<\/code>, i variable manager nativi della piattaforma e i secret manager. Tutti questi modi hanno in comune il punto di partenza, ovvero la creazione di un progetto Node.js di base.<\/p>\n<h3>Primo: Creare un Progetto Node.js<\/h3>\n<p>Per iniziare, assicuratevi di <a href=\"https:\/\/kinsta.com\/it\/blog\/come-installare-node-js\/\">aver installato Node.js<\/a> sul vostro sistema. Una volta installato sul sistema, avrete accesso a npm (abbreviazione di Node Package Manager). npm vi aiuta a installare i pacchetti node dal registro globale npm tramite la riga di comando. Vi sar\u00e0 utile per installare i pacchetti relativi al nostro progetto di prova.<\/p>\n<p>Quindi, aprite un terminale e create una nuova directory. Inizializzate un nuovo progetto Node al suo interno:<\/p>\n<pre><code class=\"language-bash\">mkdir my-app\ncd my-app\nnpm init\n<\/code><\/pre>\n<p>Continuate a premere invio durante le domande in arrivo per accettare le opzioni predefinite. Una volta fatto, il terminale avr\u00e0 un aspetto simile a questo:<\/p>\n<figure id=\"attachment_125217\" aria-describedby=\"caption-attachment-125217\" style=\"width: 1011px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125217 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/creating-new-project-1011x1024.png\" alt=\"Creazione di un nuovo progetto.\" width=\"1011\" height=\"1024\"><figcaption id=\"caption-attachment-125217\" class=\"wp-caption-text\">Creazione di un nuovo progetto.<\/figcaption><\/figure>\n<p>Ora potete aprire questo progetto utilizzando un IDE come Visual Studio Code o IntelliJ IDEA.<\/p>\n<p>Create un nuovo file nella cartella principale del progetto e salvatelo con il nome <code>index.js<\/code>. Questo sar\u00e0 il punto di partenza della vostra applicazione. Successivamente, installate Express per creare e testare rapidamente i server REST:<\/p>\n<pre><code class=\"language-bash\">npm i express\n<\/code><\/pre>\n<p>Una volta installato Express, incollate il seguente pezzo di codice nel file <code>index.js<\/code>:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n   res.send(\"Hello world!\")\n})\n\napp.listen(8080);\n<\/code><\/pre>\n<p>Questo \u00e8 uno snippet iniziale per un endpoint di base &#8220;Hello World&#8221; utilizzando Node.js ed Express. Eseguite il seguente comando sulla riga di comando:<\/p>\n<pre><code class=\"language-bash\">node index.js\n<\/code><\/pre>\n<p>Questo avvier\u00e0 la vostra applicazione node + express. Se navigate su http:\/\/localhost:8080 nel browser web, otterrete un risultato simile:<\/p>\n<figure id=\"attachment_125218\" aria-describedby=\"caption-attachment-125218\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125218 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/hello-world.png\" alt=\"Stampa Hello World!.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125218\" class=\"wp-caption-text\">Stampa Hello World!.<\/figcaption><\/figure>\n<p>Questo indica che avete configurato correttamente la vostra app! Il passo successivo consiste nell&#8217;aggiornare l&#8217;applicazione per utilizzare le variabili d&#8217;ambiente. Aggiornate il codice in <code>index.js<\/code> in modo che corrisponda al seguente frammento:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n  \n   \/\/ the responseMessage object extracts its values from environment variables\n   \/\/ If a value is not found, it instead stores the string \"not found\"\n   const responseMessage = {\n       environment: process.env.environment || \"Not found\",\n       apiBaseUrl: process.env.apiBaseUrl || \"Not found\"\n   }\n\n   res.send(responseMessage)\n})\n\napp.listen(8080);\n<\/code><\/pre>\n<p>Invece di inviare un messaggio &#8220;Hello world!&#8221; nella risposta, ora invieremo un oggetto JSON che contiene due informazioni:<\/p>\n<ul>\n<li><code>environment<\/code>: Indica l&#8217;ambiente attuale in cui l&#8217;applicazione \u00e8 distribuita<\/li>\n<li><code>apiBaseUrl<\/code>: Riporta l&#8217;URL di base di un&#8217;ipotetica API. Cambieremo il valore di questo URL in base all&#8217;ambiente in cui viene distribuita l&#8217;app.<\/li>\n<\/ul>\n<p>Nel caso in cui non sia possibile accedere alle variabili d&#8217;ambiente, l&#8217;oggetto conterr\u00e0 &#8220;Not found&#8221; (non trovato) come valori per le due chiavi descritte sopra. Prima di procedere, rieseguite il comando <code>node index.js<\/code> e riceverete il seguente output:<\/p>\n<figure id=\"attachment_125220\" aria-describedby=\"caption-attachment-125220\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125220 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-apibaseurl-not-found-1.png\" alt=\"Stampa dei valori predefiniti delle variabili di &lt;code&gt;env&lt;\/code&gt;.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125220\" class=\"wp-caption-text\">Stampa dei valori predefiniti delle variabili di <code>env<\/code>.<\/figcaption><\/figure>\n<p>Questo indica che la vostra applicazione non \u00e8 in grado di accedere alle variabili d&#8217;ambiente. Inoltre, non abbiamo nemmeno definito i valori di queste variabili. Nelle prossime sezioni vedremo i vari modi per farlo.<\/p>\n<h3>Tipo 1: Aggiungere le variabili d&#8217;ambiente tramite i file env<\/h3>\n<p>Iniziamo con il metodo pi\u00f9 semplice per aggiungere variabili d&#8217;ambiente: i file env. Nella root del progetto, create un nuovo file chiamato <code>.env<\/code> e inserite il seguente codice:<\/p>\n<pre><code class=\"language-bash\">environment=DEV\napiBaseUrl=http:\/\/dev.myApi.com:8080\/v1\n<\/code><\/pre>\n<p>Successivamente, riavviate l&#8217;applicazione eseguendo nuovamente il comando <code>node index.js<\/code> e verificate l&#8217;output:<\/p>\n<figure id=\"attachment_125220\" aria-describedby=\"caption-attachment-125220\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125220 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-apibaseurl-not-found-1.png\" alt=\"Stampa dei valori delle variabili di &lt;code&gt;env&lt;\/code&gt;.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125220\" class=\"wp-caption-text\">Stampa dei valori delle variabili di <code>env<\/code>.<\/figcaption><\/figure>\n<p>Vedrete che l&#8217;output rimane invariato. Questo perch\u00e9, anche se avete definito il valore delle variabili d&#8217;ambiente, non avete indicato all&#8217;applicazione dove trovarle. \u00c8 qui che pacchetti come <code>dotenv<\/code> ci vengono in aiuto.<\/p>\n<p>Eseguite il seguente comando per installare <code>dotenv<\/code>:<\/p>\n<pre><code class=\"language-bash\">npm i dotenv@16.0.0\n<\/code><\/pre>\n<p>Per iniziare a utilizzare <code>dotenv<\/code> nel vostro codice, aggiungete il seguente codice alla riga 2 del vostro index.js:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config()\n<\/code><\/pre>\n<p>Successivamente, riavviate l&#8217;applicazione e controllate l&#8217;output:<\/p>\n<figure id=\"attachment_125221\" aria-describedby=\"caption-attachment-125221\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125221 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-dev-apibaseurl-dev-myapi-com-1024x433.png\" alt=\"Stampa dei nuovi valori delle variabili di &lt;code&gt;env&lt;\/code&gt;.\" width=\"1024\" height=\"433\"><figcaption id=\"caption-attachment-125221\" class=\"wp-caption-text\">Stampa dei nuovi valori delle variabili di <code>env<\/code>.<\/figcaption><\/figure>\n<p>Come potete vedere, i valori delle variabili d&#8217;ambiente sono stati caricati dal file <code>.env<\/code>!<\/p>\n<p>Ora, per rendere le cose pi\u00f9 interessanti, rinominiamo il nostro file <code>.env<\/code> in <code>.env.dev<\/code> e creiamo un altro file con il nome <code>.env.staging<\/code>. Incollate il seguente pezzo di codice nel nuovo file:<\/p>\n<pre><code class=\"language-bash\">environment=STAGING\napiBaseUrl=http:\/\/staging.myApi.com:3000\/v1\n<\/code><\/pre>\n<p>Una volta terminato, sostituite la riga 2 del file <code>index.js<\/code> con il seguente codice:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config({\n   path: \"STAGING\" === process.env.NODE_ENV?.toUpperCase() ? '.\/.env.staging' : '.\/.env.dev'\n})\n\nconsole.log(process.env.NODE_ENV)\n<\/code><\/pre>\n<p>Ci\u00f2 che \u00e8 cambiato qui \u00e8 che ora stiamo istruendo il pacchetto <code>dotenv<\/code> a recuperare il contenuto delle variabili d&#8217;ambiente da uno dei due file disponibili in base a un&#8217;altra variabile d&#8217;ambiente chiamata <code>NODE_ENV<\/code>. Da dove proviene il valore di questa variabile d&#8217;ambiente? Dal vostro terminale.<\/p>\n<p>Per testare questa configurazione, eseguite la vostra applicazione con il seguente comando:<\/p>\n<pre><code class=\"language-bash\">NODE_ENV=DEV node index.js\n<\/code><\/pre>\n<p>Se ora andate su localhost:8080, noterete la seguente risposta:<\/p>\n<figure id=\"attachment_125221\" aria-describedby=\"caption-attachment-125221\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125221 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-dev-apibaseurl-dev-myapi-com-1024x433.png\" alt=\"Stampa dei valori env per l'ambiente dev.\" width=\"1024\" height=\"433\"><figcaption id=\"caption-attachment-125221\" class=\"wp-caption-text\">Stampa dei valori env per l&#8217;ambiente dev.<\/figcaption><\/figure>\n<p>Ora, chiudete l&#8217;applicazione in esecuzione ed eseguitela di nuovo con il seguente comando:<\/p>\n<pre><code class=\"language-bash\">NODE_ENV=STAGING node index.js\n<\/code><\/pre>\n<p>Collegandovi a localhost:8080 otterrete la seguente risposta:<\/p>\n<figure id=\"attachment_125222\" aria-describedby=\"caption-attachment-125222\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125222 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/dev-staging-apibaseurl-staging-myapi-com-1024x386.png\" alt=\"Stampa dei valori env per l'ambiente di staging.\" width=\"1024\" height=\"386\"><figcaption id=\"caption-attachment-125222\" class=\"wp-caption-text\">Stampa dei valori env per l&#8217;ambiente di staging.<\/figcaption><\/figure>\n<p>Ecco come potete utilizzare i file <code>.env<\/code> per accedere a diversi set di variabili in base a condizioni esterne. La condizione esterna in questo caso \u00e8 la variabile d&#8217;ambiente esterna <code>NODE_ENV<\/code> che \u00e8 essenzialmente una variabile d&#8217;ambiente dell&#8217;utente, mentre <code>environment<\/code> e <code>apiBaseUrl<\/code> sono variabili d&#8217;ambiente di runtime. Il profilo utente chiamante fornisce il valore della variabile <code>NODE_ENV<\/code> e l&#8217;applicazione lo utilizza per prendere decisioni interne.<\/p>\n<p>Se utilizzate Windows, potreste incontrare delle difficolt\u00e0 nell&#8217;eseguire i due comandi precedenti. Il terminale di Windows potrebbe non permettervi di assegnare al volo le variabili d&#8217;ambiente utente utilizzando la sintassi <code>KEY=VALUE<\/code> (a meno che non si tratti di Bash su Windows).<\/p>\n<p>Una soluzione rapida in questo caso \u00e8 quella di utilizzare gli script e <code>cross-env<\/code>.<\/p>\n<p>Installate <code>cross-env<\/code> eseguendo il seguente comando:<\/p>\n<pre><code class=\"language-bash\">npm i --save-dev cross-env\n<\/code><\/pre>\n<p>Successivamente, andate al vostro file <code>package.json<\/code> e aggiornate la chiave <code>scripts<\/code> in modo che corrisponda a questa:<\/p>\n<pre><code class=\"language-json\">\/\/ \u2026\n\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start-dev\": \"cross-env NODE_ENV=DEV node index.js\",\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n\/\/ \u2026\n<\/code><\/pre>\n<p>Ora potete eseguire i seguenti comandi per far funzionare la vostra applicazione con due diversi set di variabili d&#8217;ambiente:<\/p>\n<pre><code class=\"language-bash\">npm run start-dev\t\t# to start with dev variables\nnpm run start-staging\t\t# to start with staging variables\n<\/code><\/pre>\n<p>Questa \u00e8 una soluzione universale e potete utilizzare questi script anche su bash\/zsh.<\/p>\n<p>Vediamo ora come utilizzare un variable manager di terze parti.<\/p>\n<h3>Tipo 2: Utilizzare lo Strumento di Gestione di Variabili d&#8217;Ambiente Nativo di Heroku<\/h3>\n<p>Per poter seguire questa parte del tutorial, \u00e8 necessario avere un account Heroku. Createlo prima di procedere.<\/p>\n<p>Prima di distribuire l&#8217;applicazione su Heroku, dovrete apportare alcune modifiche al vostro codice. Prima di tutto, aggiungete un nuovo script nel sito <code>package.json<\/code> chiamato start:<\/p>\n<pre><code class=\"language-json\">\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start\": \"node index.js\",\n   \"start-dev\": \"cross-env NODE_ENV=DEV node index.js\",\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n<\/code><\/pre>\n<p>Questo script verr\u00e0 utilizzato da Heroku per eseguire l&#8217;applicazione una volta distribuita. Inoltre, andate all&#8217;ultima riga del file <code>index.js<\/code> e aggiornatela come segue:<\/p>\n<pre><code class=\"language-js\">app.listen(process.env.PORT || 3000);\n<\/code><\/pre>\n<p>Questo assicura che l&#8217;applicazione venga distribuita sulla porta specificata da Heroku.<\/p>\n<p>Successivamente, sar\u00e0 necessario <a href=\"https:\/\/devcenter.heroku.com\/articles\/heroku-cli#install-the-heroku-cli\">installare localmente la CLI Heroku<\/a> per poter accedere alle vostre app Heroku dalla riga di comando. Per questo tutorial, potete utilizzare il seguente comando per installare la CLI:<\/p>\n<pre><code class=\"language-bash\">npm i -g heroku\n<\/code><\/pre>\n<p>Tuttavia, i documenti di Heroku consigliano di installarla tramite uno degli altri modi elencati nel link sopra citato per ottenere un supporto migliore. Una volta installata, eseguite il seguente comando per accedere al vostro account Heroku:<\/p>\n<pre><code class=\"language-bash\">heroku login\n<\/code><\/pre>\n<p>Una volta fatto, andate su dashboard.heroku.com e accedete al vostro account. Quindi, create una nuova applicazione cliccando su <strong>Nuovo<\/strong> &gt; <strong>Crea nuova applicazione<\/strong>.<\/p>\n<figure id=\"attachment_125224\" aria-describedby=\"caption-attachment-125224\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125224 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-new-app-1024x250.png\" alt=\"Creazione di una nuova app.\" width=\"1024\" height=\"250\"><figcaption id=\"caption-attachment-125224\" class=\"wp-caption-text\">Creazione di una nuova app.<\/figcaption><\/figure>\n<p>Nella pagina successiva, cliccate sul pulsante <strong>Crea app<\/strong> senza inserire alcun dettaglio. In questo modo verr\u00e0 creata una nuova app heroku con un nome casuale.<\/p>\n<figure id=\"attachment_125225\" aria-describedby=\"caption-attachment-125225\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125225 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-naming-app-1024x371.png\" alt=\"Dare un nome all'app.\" width=\"1024\" height=\"371\"><figcaption id=\"caption-attachment-125225\" class=\"wp-caption-text\">Dare un nome all&#8217;app.<\/figcaption><\/figure>\n<p>Ecco come apparir\u00e0 la dashboard della vostra app:<\/p>\n<figure id=\"attachment_125226\" aria-describedby=\"caption-attachment-125226\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125226 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-new-app-dashboard-1024x583.png\" alt=\"La dashboard della nuova app.\" width=\"1024\" height=\"583\"><figcaption id=\"caption-attachment-125226\" class=\"wp-caption-text\">La dashboard della nuova app.<\/figcaption><\/figure>\n<p>Questa pagina contiene anche le istruzioni su come distribuire la vostra app su Heroku tramite la CLI. Ecco l&#8217;elenco dei comandi che dovrete eseguire per distribuire l&#8217;app su Heroku:<\/p>\n<pre><code class=\"language-bash\">git init\nheroku git:remote -a whispering-shelf-49396 # change whispering-shelf-49396 with the name of your app. You can get it in your dashboard\ngit add index.js package-lock.json package.json # do not push the <code>.env<\/code> files since we'll provide that via the in-app secrets manager git commit -am \"Initial commit\" git push heroku main <\/code><\/pre>\n<p>Una volta che la distribuzione \u00e8 stata completata con successo, potrete visualizzare l&#8217;app distribuita tramite la dashboard cliccando sul pulsante <strong>Apri app<\/strong><\/p>\n<p>Se avete eseguito tutto correttamente, vedrete la seguente risposta:<\/p>\n<figure id=\"attachment_125227\" aria-describedby=\"caption-attachment-125227\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125227 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-env-apibaseurl-not-found-1024x505.png\" alt=\"Accesso all'app distribuita.\" width=\"1024\" height=\"505\"><figcaption id=\"caption-attachment-125227\" class=\"wp-caption-text\">Accesso all&#8217;app distribuita.<\/figcaption><\/figure>\n<p>Perch\u00e9 succede questo? Perch\u00e9 non abbiamo ancora fornito le variabili d&#8217;ambiente alla nostra applicazione. Se controllate i comandi usati per distribuire l&#8217;applicazione, noterete che non abbiamo inviato i file <code>.env<\/code> al nostro controllo di versione. Inoltre, non abbiamo definito il valore <code>NODE_ENV<\/code> nello script di avvio.<\/p>\n<p>Per iniettare ora le variabili d&#8217;ambiente nell&#8217;applicazione, dovrete andare su <strong>Impostazioni<\/strong> &gt; <strong>Config Vars<\/strong> nella dashboard Heroku. Cliccando su <strong>Reveal Config Vars<\/strong>, vedrete una schermata simile:<\/p>\n<figure id=\"attachment_125228\" aria-describedby=\"caption-attachment-125228\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125228 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-app-config-vars-1024x593.png\" alt=\"Accedere alle vars di configurazione dell'applicazione.\" width=\"1024\" height=\"593\"><figcaption id=\"caption-attachment-125228\" class=\"wp-caption-text\">Accedere alle vars di configurazione dell&#8217;applicazione.<\/figcaption><\/figure>\n<p>Ora \u00e8 possibile inserire il contenuto del file <code>.env<\/code>:<\/p>\n<figure id=\"attachment_125229\" aria-describedby=\"caption-attachment-125229\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125229 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-app-config-vars-filled-1024x593.png\" alt=\"Inserire le variabili di ambiente in Heroku.\" width=\"1024\" height=\"593\"><figcaption id=\"caption-attachment-125229\" class=\"wp-caption-text\">Inserire le variabili di ambiente in Heroku.<\/figcaption><\/figure>\n<p>Tornando indietro e aggiornando l&#8217;URL dell&#8217;applicazione, noterete che i valori sono stati aggiornati:<\/p>\n<figure id=\"attachment_125230\" aria-describedby=\"caption-attachment-125230\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125230 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-env-production-apibaseurl-prod-myapi-com-1024x374.png\" alt=\"L'app distribuita su Heroku pu\u00f2 ora accedere alle variabili d'ambiente.\" width=\"1024\" height=\"374\"><figcaption id=\"caption-attachment-125230\" class=\"wp-caption-text\">L&#8217;app distribuita su Heroku pu\u00f2 ora accedere alle variabili d&#8217;ambiente.<\/figcaption><\/figure>\n<p>In questo modo potete utilizzare il gestore dei segreti di una piattaforma di distribuzione per gestire le variabili d&#8217;ambiente. Tuttavia, questo richiede che le variabili d&#8217;ambiente siano gestite manualmente attraverso la dashboard della piattaforma. Come si pu\u00f2 notare, per Heroku non esiste un&#8217;opzione per importare un grande dump di variabili d&#8217;ambiente da un file, il che costringe l&#8217;utente a inserirle una per una. Questo a volte pu\u00f2 risultare decisamente scomodo.<\/p>\n<p>La prossima sezione presenta un metodo pi\u00f9 efficiente per gestire i segreti delle app: i secret manager.<\/p>\n<h3>Tipo 3: Usare Doppler per Gestire le Variabili d&#8217;Ambiente<\/h3>\n<p>I metodi discussi in precedenza non garantiscono l&#8217;uniformit\u00e0 tra le varie piattaforme. Di solito non ci si affida ai file env quando si distribuisce in produzione e non \u00e8 possibile utilizzare gli strumenti di gestione di variabili nativi della piattaforma quando si lavora in locale. I secret manager come Doppler colmano questa lacuna.<\/p>\n<p>Per provarlo personalmente, dovrete prima creare un account gratuito su <a href=\"https:\/\/dashboard.doppler.com\/login\" target=\"_blank\" rel=\"noopener noreferrer\">Doppler<\/a>.<\/p>\n<p>Una volta fatto, potrete proseguire. Molto probabilmente Doppler creer\u00e0 automaticamente un progetto di esempio con il nome di progetto-esempio. Per semplicit\u00e0, lasciamolo da parte e creiamo un nuovo progetto per il nostro caso d&#8217;uso.<\/p>\n<p>Vai alla dashboard e clicca sull&#8217;icona pi\u00f9 accanto a Progetti.<\/p>\n<figure id=\"attachment_125231\" aria-describedby=\"caption-attachment-125231\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125231 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-projects-1024x461.png\" alt=\"I vostri progetti in Doppler.\" width=\"1024\" height=\"461\"><figcaption id=\"caption-attachment-125231\" class=\"wp-caption-text\">I vostri progetti in Doppler.<\/figcaption><\/figure>\n<p>Inserite il nome &#8220;my-app&#8221; e procedete. Ecco come dovrebbe apparire il progetto una volta pronto:<\/p>\n<figure id=\"attachment_125232\" aria-describedby=\"caption-attachment-125232\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125232 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-project-env-1024x321.png\" alt=\"Gli ambienti e le variabili del vostro progetto.\" width=\"1024\" height=\"321\"><figcaption id=\"caption-attachment-125232\" class=\"wp-caption-text\">Gli ambienti e le variabili del vostro progetto.<\/figcaption><\/figure>\n<p>Cliccate sulla voce dell&#8217;elenco dev config. Fate clic su <strong>Aggiungi nuovo segreto<\/strong> e aggiungete due segreti come segue:<\/p>\n<figure id=\"attachment_125233\" aria-describedby=\"caption-attachment-125233\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125233 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-dev-env-vars-filled-1024x486.png\" alt=\"Aggiungere le variabili dev a Doppler.\" width=\"1024\" height=\"486\"><figcaption id=\"caption-attachment-125233\" class=\"wp-caption-text\">Aggiungere le variabili dev a Doppler.<\/figcaption><\/figure>\n<p>Cliccate sul pulsante Salva per salvare le modifiche. Notate che Doppler non supporta il camel casing quando si nominano i segreti. Sebbene sia generalmente preferibile mantenere i nomi dei segreti in maiuscolo, l&#8217;utilizzo di Doppler non lascia alternative. Per identificare i segreti che vengono recuperati da Doppler, li abbiamo preceduti da <code>DP_<\/code><\/p>\n<p>Ora che le variabili sono state create e memorizzate in Doppler, integriamole nella nostra base di codice. Per farlo, dovete <a href=\"https:\/\/docs.doppler.com\/docs\/install-cli\">configurare la CLI di Doppler<\/a>. Ecco un breve riassunto di ci\u00f2 che dovete fare.<\/p>\n<p>Prima di tutto, installate la CLI in locale seguendo le <a href=\"https:\/\/docs.doppler.com\/docs\/install-cli#installation\" target=\"_blank\" rel=\"noopener noreferrer\">istruzioni specifiche per il vostro sistema operativo<\/a>. Successivamente, accedete alla Doppler CLI con l&#8217;account appena creato utilizzando il seguente comando:<\/p>\n<pre><code class=\"language-bash\">doppler login\n<\/code><\/pre>\n<p>Una volta effettuato l&#8217;accesso, esegui il seguente comando per connetterti al progetto Doppler remoto dalla tua CLI:<\/p>\n<pre><code class=\"language-bash\">doppler setup\n<\/code><\/pre>\n<p>Una volta collegati al progetto giusto, potrete accedere ai segreti con il seguente comando:<\/p>\n<pre><code class=\"language-bash\">doppler run\n<\/code><\/pre>\n<p>Tuttavia, non eseguiremo questo comando direttamente. Lo aggiungeremo invece a uno dei nostri script di esecuzione in modo che venga eseguito automaticamente all&#8217;avvio dell&#8217;applicazione. Aggiorniamo il file <code>package.json<\/code> con il nuovo script di esecuzione per l&#8217;ambiente <code>dev<\/code>:<\/p>\n<pre><code class=\"language-json\">\/\/ \u2026\n\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start\": \"node index.js\",\n   \"start-dev\": \"doppler run -- node index.js\", \/\/ This has to be updated\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n\/\/ \u2026\n<\/code><\/pre>\n<p>Ricordate inoltre che in Doppler abbiamo creato nuovi nomi di variabili che iniziano con <code>DP_<\/code>. Quindi dovremo aggiornare il nostro file <code>index.js<\/code> per visualizzare anche questa variabile:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\nrequire('dotenv').config({\n   path: \"STAGING\" === process.env.NODE_ENV?.toUpperCase() ? '.\/.env.staging' : '.\/.env.dev'\n})\n\nconsole.log(process.env.NODE_ENV)\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n  \n   \/\/ the responseMessage object extracts its values from environment variables\n   \/\/ If a value is not found, it instead stores the string \"not found\"\n   const responseMessage = {\n       environment: process.env.environment || \"Not found\",\n       apiBaseUrl: process.env.apiBaseUrl || \"Not found\",\n       DP_ENVIRONMENT: process.env.DP_ENVIRONMENT || \"Not found\" \/\/ Add the new variable here\n   }\n\n   res.send(responseMessage)\n})\n\napp.listen(process.env.PORT || 3000);\n<\/code><\/pre>\n<p>Per vedere tutto in azione, eseguite il seguente comando:<\/p>\n<pre><code class=\"language-bash\">npm run start-dev\n<\/code><\/pre>\n<p>Ecco come dovrebbe apparire ora http:\/\/localhost:3000:<\/p>\n<figure id=\"attachment_125234\" aria-describedby=\"caption-attachment-125234\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125234 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-env-dev-apibaseurl-dev-myapi-com-dpenv-dev-1024x402.png\" alt=\"Accesso ai segreti Doppler in un'applicazione in esecuzione locale.\" width=\"1024\" height=\"402\"><figcaption id=\"caption-attachment-125234\" class=\"wp-caption-text\">Accesso ai segreti Doppler in un&#8217;applicazione in esecuzione locale.<\/figcaption><\/figure>\n<p>La terza variabile dell&#8217;elenco (<code>DP_ENVIRONMENT<\/code>) viene prelevata direttamente da Doppler.<\/p>\n<p>Quindi, \u00e8 ora possibile connettere Doppler con la propria piattaforma di distribuzione per accedere a questi segreti tramite l&#8217;app distribuita. Per farlo, iniziamo creando un nuovo ambiente in Doppler per un nuovo set di segreti di distribuzione.<\/p>\n<p>Tornate alla pagina iniziale del progetto my-app. Cliccate sull&#8217;unica voce dell&#8217;elenco <strong>Staging<\/strong>:<\/p>\n<figure id=\"attachment_125235\" aria-describedby=\"caption-attachment-125235\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125235 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-projects-vars-filled-1024x381.png\" alt=\"La dashboard della vostra app.\" width=\"1024\" height=\"381\"><figcaption id=\"caption-attachment-125235\" class=\"wp-caption-text\">La dashboard della vostra app.<\/figcaption><\/figure>\n<p>Noterete che le due variabili segrete che avete definito nell&#8217;ambiente <code>dev<\/code> sono gi\u00e0 disponibili qui, ma mancano dei valori:<\/p>\n<figure id=\"attachment_125236\" aria-describedby=\"caption-attachment-125236\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125236 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-stg-vars-empty-1024x559.png\" alt=\"Le variabili d'ambiente dell'app per l'ambiente di staging.\" width=\"1024\" height=\"559\"><figcaption id=\"caption-attachment-125236\" class=\"wp-caption-text\">Le variabili d&#8217;ambiente dell&#8217;app per l&#8217;ambiente di staging.<\/figcaption><\/figure>\n<p>Aggiungete i seguenti valori e cliccate su <strong>Salva<\/strong>:<\/p>\n<figure id=\"attachment_125237\" aria-describedby=\"caption-attachment-125237\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125237 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-stg-vars-filled-1024x397.png\" alt=\"Le variabili di ambiente dell'app per l'ambiente di staging.\" width=\"1024\" height=\"397\"><figcaption id=\"caption-attachment-125237\" class=\"wp-caption-text\">Le variabili di ambiente dell&#8217;app per l&#8217;ambiente di staging.<\/figcaption><\/figure>\n<p>Una volta terminato, cliccate sulla scheda <strong>Integrazioni<\/strong> e su <strong>Aggiungi sincronizzazione<\/strong> in questa pagina per iniziare a connettervi alla vostra piattaforma di distribuzione. Riceverete un elenco di piattaforme con cui Doppler pu\u00f2 integrarsi:<\/p>\n<figure id=\"attachment_125238\" aria-describedby=\"caption-attachment-125238\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125238 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-integrations-set-up-1024x574.png\" alt=\"Connessione della vostra app Doppler a Heroku.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125238\" class=\"wp-caption-text\">Connessione della vostra app Doppler a Heroku.<\/figcaption><\/figure>\n<p>Dato che la nostra app \u00e8 distribuita su Heroku, facciamo clic su Heroku. Seguite i passaggi sullo schermo per collegare il vostro account Heroku a Doppler e fornire i ruoli di accesso richiesti. Una volta connesso, si aprir\u00e0 una schermata simile:<\/p>\n<figure id=\"attachment_125239\" aria-describedby=\"caption-attachment-125239\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125239 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-integration-1024x574.png\" alt=\"Fornire i dettagli della propria app per integrarla con Heroku.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125239\" class=\"wp-caption-text\">Fornire i dettagli della propria app per integrarla con Heroku.<\/figcaption><\/figure>\n<p>Selezionate il <strong>Tipo di progetto<\/strong> come <strong>App<\/strong>, scegliete la vostra app Heroku nell&#8217;elenco delle app disponibili, scegliete stg come <strong>Config da sincronizzare<\/strong> e <strong>Non importare<\/strong> nelle <strong>Opzioni di importazione<\/strong>, poich\u00e9 non vogliamo importare alcun segreto da Heroku a Doppler.<\/p>\n<p>Una volta finito, cliccate su <strong>Imposta integrazione<\/strong>. Quando l&#8217;integrazione sar\u00e0 andata a buon fine, si aprir\u00e0 una schermata simile:<\/p>\n<figure id=\"attachment_125240\" aria-describedby=\"caption-attachment-125240\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125240 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-integration-heroku-1024x574.png\" alt=\"Le integrazioni dell'app Doppler con Heroku.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125240\" class=\"wp-caption-text\">Le integrazioni dell&#8217;app Doppler con Heroku.<\/figcaption><\/figure>\n<p>Controllando la sezione <strong>Config Vars<\/strong> nella dashboard della vostra app Heroku, noterete che le variabili di Doppler sono state aggiunte automaticamente alle config vars della distribuzione Heroku:<\/p>\n<figure id=\"attachment_125241\" aria-describedby=\"caption-attachment-125241\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125241 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-dopper-config-vars-1024x334.png\" alt=\"I segreti di Doppler sono ora sincronizzati con Heroku.\" width=\"1024\" height=\"334\"><figcaption id=\"caption-attachment-125241\" class=\"wp-caption-text\">I segreti di Doppler sono ora sincronizzati con Heroku.<\/figcaption><\/figure>\n<p>Noterete anche che le due variabili d&#8217;ambiente originali (<code>environment<\/code> e <code>apiBaseUrl<\/code>) sono state rimosse. Questo \u00e8 successo perch\u00e9 abbiamo scelto di <strong>non importare<\/strong> nelle <strong>opzioni<\/strong> <strong>di<\/strong> <strong>importazione<\/strong>. Se necessario, \u00e8 possibile aggiungerle di nuovo in Heroku.<\/p>\n<p>Sebbene la presenza delle nuove variabili d&#8217;ambiente nella sezione <strong>Config Vars<\/strong> di Heroku dimostri che avete configurato Doppler per gestire i segreti sia localmente nell&#8217;ambiente di sviluppo sia nell&#8217;ambiente di distribuzione, potete procedere con il deployment del codice aggiornato su Heroku per visualizzare le modifiche nell&#8217;applicazione distribuita. Ecco come apparir\u00e0 una volta finito:<\/p>\n<figure id=\"attachment_125242\" aria-describedby=\"caption-attachment-125242\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125242 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-doppler-env-staging-apibaseurl-staging-myapi-com-dpenv-staging-1024x383.png\" alt=\"Accesso ai segreti Doppler in un'app distribuita su Heroku.\" width=\"1024\" height=\"383\"><figcaption id=\"caption-attachment-125242\" class=\"wp-caption-text\">Accesso ai segreti Doppler in un&#8217;app distribuita su Heroku.<\/figcaption><\/figure>\n<p>Questo completa il tutorial per impostare le variabili d&#8217;ambiente in un progetto Node.js utilizzando tre metodi molto popolari. Diamo ora un&#8217;occhiata ad alcuni modi in cui potete assicurarvi che le variabili d&#8217;ambiente e i loro file restino sicuri mentre li si utilizza.<\/p>\n<h2>Come Mantenere Sicuri i File delle Variabili d&#8217;Ambiente<\/h2>\n<p>Sebbene le variabili d&#8217;ambiente siano una risorsa utile nelle moderne pratiche DevOps, \u00e8 necessario essere consapevoli delle implicazioni di sicurezza che possono causare. Ecco alcuni suggerimenti da utilizzare per mantenere i file di variabili d&#8217;ambiente sicuri e lontani da occhi indiscreti.<\/p>\n<h3>Tenere i File env Fuori dal Controllo di Versione<\/h3>\n<p>Una delle cose pi\u00f9 importanti da tenere a mente quando si gestisce qualsiasi segreto \u00e8 di tenerlo lontano dal controllo di versione. Il controllo di versione serve esclusivamente a tracciare le modifiche apportate al codice sorgente della tua applicazione. Tutto ci\u00f2 che viene inserito in un sistema di controllo delle versioni vi rimane fino a quando non viene cancellato esplicitamente e la maggior parte del vostro team ha accesso a questi dati storici a scopo di riferimento.<\/p>\n<p>Se avete memorizzato le chiavi del vostro bucket di storage AWS o di un servizio API a pagamento in un file env da utilizzare nella vostra applicazione, non vorrete condividerlo con tutto il vostro team di sviluppo a meno che non sia necessario che vi abbiano accesso. Se il vostro progetto \u00e8 open-sourced su una <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-github\/\">piattaforma come GitHub<\/a>, aggiungere file env al vostro VCS potrebbe significare condividerlo con tutto il mondo! I file env sono destinati ad essere memorizzati localmente. \u00c8 possibile fornire a ogni ambiente di distribuzione i file env pertinenti tramite metodi dedicati.<\/p>\n<p>Aggiungete sempre il file env al vostro file <strong>.gitignore<\/strong> (se utilizzate git per il controllo di versione) o utilizzate qualsiasi altro modo per far s\u00ec che il vostro VCS ignori i file env durante il commit delle modifiche. Si potrebbe in considerazione l&#8217;aggiunta di un file env modello al vostro VCS in modo che qualsiasi altro membro del team possa utilizzarlo come riferimento per creare i propri file env a livello locale.<\/p>\n<h3>Controllare il Nome del Pacchetto Prima dell&#8217;Installazione<\/h3>\n<p>Dato che di solito si installa la maggior parte dei pacchetti da NPM quando si lavora con un&#8217;applicazione Node.js, \u00e8 necessario prestare molta attenzione nel farlo. \u00c8 risaputo che chiunque pu\u00f2 creare e distribuire un pacchetto NPM. Inoltre, non sorprende che le persone commettano spesso degli errori quando digitano il nome di un pacchetto che vogliono installare.<\/p>\n<p>Sono stati riscontrati <a href=\"https:\/\/therecord.media\/another-set-of-malicious-npm-packages-caught-stealing-discord-tokens-environment-variables\/\" target=\"_blank\" rel=\"noopener noreferrer\">numerosi casi<\/a> in cui pacchetti dannosi con nomi simili a quelli di alcuni pacchetti popolari sono stati accidentalmente installati dagli utenti a causa di errori di digitazione. Questi pacchetti sono progettati per accedere alle variabili d&#8217;ambiente della vostra applicazione e inviarle via internet ai loro creatori.<\/p>\n<p>L&#8217;unico modo per salvarsi \u00e8 stare attenti quando si installano nuovi pacchetti da internet.<\/p>\n<h3>Preferire i Secret Manager ai File env<\/h3>\n<p>A causa di problemi come la perdita accidentale durante la condivisione e gli errori di formattazione, i file env non sono certo la migliore opzione disponibile per la gestione dei segreti. Ecco che entrano in gioco i secret manager. I secret manager come Doppler vi permettono di isolare completamente i segreti delle tue app dal codice sorgente e di gestirli in una piattaforma dedicata.<\/p>\n<p>\u00c8 possibile concedere al proprio team l&#8217;accesso a questi segreti direttamente sulla piattaforma e la propria app pu\u00f2 accedervi tramite connessioni criptate su internet. Risolve tutti i problemi associati ai file env e permette di mantenere una serie di segreti in base agli ambienti della tua applicazione.<\/p>\n<p>Tuttavia, anche in questo caso ci sono delle avvertenze. I secret manager sono in una fase iniziale del loro sviluppo tecnologico. Inoltre, i secret manager sono piattaforme di terze parti che sono soggette a una serie di problemi di sicurezza. Per questo motivo \u00e8 importante un&#8217;attenta valutazione e selezione del giusto secret manager. Inoltre, se la vostra applicazione, il vostro team di sviluppo o il numero di segreti dell&#8217;applicazione non sono tantissimi, i secret manager potrebbero essere una soluzione eccessiva per voi.<\/p>\n<h2>Tabella di Riferimento delle Variabili d&#8217;Ambiente<\/h2>\n<p>Ecco una rapida tabella di riferimento per aiutarvi a familiarizzare con le variabili d&#8217;ambiente e il loro utilizzo:<\/p>\n<div class=\"\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td>Definizione delle variabili d&#8217;ambiente<\/td>\n<td>Variabili fornite ai processi dai processi chiamanti<\/td>\n<\/tr>\n<tr>\n<td>Scopo<\/td>\n<td>\n<ul>\n<li>Memorizzare e proteggere i segreti dell&#8217;app<\/li>\n<li>Gestire i dati di configurazione specifici dell&#8217;ambiente<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Tipi<\/td>\n<td>Solo per Windows:<\/p>\n<ul>\n<li>Sistema<\/li>\n<li>Utente<\/li>\n<li>Runtime\/Processo<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Esempi popolari di casi d&#8217;uso<\/td>\n<td>\n<ul>\n<li>Chiavi private<\/li>\n<li>Nomi di ambiente<\/li>\n<li>URL di base delle API, ecc<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Come implementarli nella vostra applicazione?<\/td>\n<td>\n<ul>\n<li>file .env<\/li>\n<li>Gestori di segreti nativi della piattaforma<\/li>\n<li>Servizio di gestione dei segreti dedicato<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h2>Riepilogo<\/h2>\n<p>Le variabili d&#8217;ambiente sono importanti per isolare i dati sensibili dalla vostra applicazione. Aiutano a proteggere i segreti della vostra applicazione e vi permettono di passare facilmente da un set di segreti all&#8217;altro a seconda dell&#8217;ambiente dell&#8217;applicazione. Tuttavia, la loro gestione aggiunge un altro compito alla vostra lista.<\/p>\n<p>Esistono diversi modi per proteggere le variabili d&#8217;ambiente, come abbiamo detto sopra. Esplorateli tutti e scoprite quali sono i pi\u00f9 adatti a rendere pi\u00f9 veloce il vostro progetto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se avete gi\u00e0 lavorato allo sviluppo di un&#8217;applicazione, avrete sicuramente sentito parlare del termine &#8220;variabili d&#8217;ambiente&#8221;. Le variabili d&#8217;ambiente sono utilizzate per memorizzare i segreti dell&#8217;applicazione &#8230;<\/p>\n","protected":false},"author":238,"featured_media":57342,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[25648,25627,25635],"topic":[25992],"class_list":["post-57341","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-javascript","tag-node-js","tag-sviluppo","topic-suggerimenti-tecnici"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Variabili d&#039;Ambiente: Cosa Sono e Come Utilizzarle<\/title>\n<meta name=\"description\" content=\"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Variabili d&#039;Ambiente: Cosa Sono e Come Utilizzarle\" \/>\n<meta property=\"og:description\" content=\"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-11T07:02:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:46:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kumar Harsh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kumar Harsh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"36 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\"},\"author\":{\"name\":\"Kumar Harsh\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\"},\"headline\":\"Variabili d&#8217;Ambiente: Cosa Sono e Come Utilizzarle\",\"datePublished\":\"2022-07-11T07:02:14+00:00\",\"dateModified\":\"2025-10-01T19:46:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\"},\"wordCount\":6759,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg\",\"keywords\":[\"JavaScript\",\"node.js\",\"sviluppo\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\",\"name\":\"Variabili d'Ambiente: Cosa Sono e Come Utilizzarle\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg\",\"datePublished\":\"2022-07-11T07:02:14+00:00\",\"dateModified\":\"2025-10-01T19:46:36+00:00\",\"description\":\"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Suggerimenti Tecnici\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/suggerimenti-tecnici\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Variabili d&#8217;Ambiente: Cosa Sono e Come Utilizzarle\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\",\"name\":\"Kumar Harsh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"caption\":\"Kumar Harsh\"},\"description\":\"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.\",\"sameAs\":[\"https:\/\/kumarharsh.me\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/kumarharsh\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Variabili d'Ambiente: Cosa Sono e Come Utilizzarle","description":"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/","og_locale":"it_IT","og_type":"article","og_title":"Variabili d'Ambiente: Cosa Sono e Come Utilizzarle","og_description":"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.","og_url":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2022-07-11T07:02:14+00:00","article_modified_time":"2025-10-01T19:46:36+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg","type":"image\/jpeg"}],"author":"Kumar Harsh","twitter_card":"summary_large_image","twitter_description":"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Kumar Harsh","Tempo di lettura stimato":"36 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/"},"author":{"name":"Kumar Harsh","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9"},"headline":"Variabili d&#8217;Ambiente: Cosa Sono e Come Utilizzarle","datePublished":"2022-07-11T07:02:14+00:00","dateModified":"2025-10-01T19:46:36+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/"},"wordCount":6759,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg","keywords":["JavaScript","node.js","sviluppo"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/","url":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/","name":"Variabili d'Ambiente: Cosa Sono e Come Utilizzarle","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg","datePublished":"2022-07-11T07:02:14+00:00","dateModified":"2025-10-01T19:46:36+00:00","description":"La Knowledge Base di Kinsta risponde a qualsiasi domanda, da quelle relative agli account e alla fatturazione a quelle generali su WordPress e sul supporto.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/what-is-an-environment-variable.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Suggerimenti Tecnici","item":"https:\/\/kinsta.com\/it\/argomenti\/suggerimenti-tecnici\/"},{"@type":"ListItem","position":3,"name":"Variabili d&#8217;Ambiente: Cosa Sono e Come Utilizzarle"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9","name":"Kumar Harsh","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","caption":"Kumar Harsh"},"description":"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.","sameAs":["https:\/\/kumarharsh.me"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/kumarharsh\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/57341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=57341"}],"version-history":[{"count":14,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/57341\/revisions"}],"predecessor-version":[{"id":64785,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/57341\/revisions\/64785"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57341\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57341\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57341\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57341\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57341\/translations\/es"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57341\/translations\/de"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57341\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/57342"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=57341"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=57341"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=57341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}