Creare e distribuire un'applicazione Node.js in un servizio cloud di Azure (versione classica)
Importante
Servizi cloud (versione classica) è ora deprecato per tutti i clienti a partire dal 1° settembre 2024. Eventuali distribuzioni esistenti in esecuzione saranno arrestate e chiuse da Microsoft e i dati andranno persi in modo permanente a partire da ottobre 2024. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager Azure Servizi cloud (supporto esteso).
Questa esercitazione illustra come creare un’applicazione Node.js in esecuzione in un servizio cloud di Azure. Servizi cloud è costituito da blocchi predefiniti di applicazioni cloud scalabili in Azure. Consentono la separazione e la gestione indipendente e la scalabilità dei componenti front-end e back-end dell'applicazione. Servizi cloud offre una potente macchina virtuale dedicata per ospitare ogni ruolo in modo affidabile.
Suggerimento
Stai cercando di creare un sito Web? Se lo scenario prevede un semplice sito Web front-end, è possibile usare un'app Web leggera. È possibile procedere all'aggiornamento a un Servizio cloud con facilità, in base alla crescita dell’app Web e all'insorgere di nuove esigenze.
Seguendo questa esercitazione, si crea un'applicazione Web ospitata all'interno di un ruolo Web. Si utilizzerà l'emulatore di calcolo per testare in locale l'applicazione, che verrà quindi distribuita con gli strumenti della riga di comando di PowerShell.
L'applicazione è un’applicazione "hello world":
Prerequisiti
Nota
Questa esercitazione usa Azure PowerShell, che richiede Windows.
- Installare e configurare Azure PowerShell.
- Scaricare e installare [Azure SDK for .NET 2.7]. Nel programma di installazione, selezionare:
- MicrosoftAzureAuthoringTools
- MicrosoftAzureComputeEmulator
Creare un progetto di Servizi cloud di Azure
Per creare un nuovo progetto di Servizi cloud di Azure, oltre allo scaffolding di Node.js è necessario eseguire queste operazioni:
Eseguire Windows PowerShell come amministratore. Dal menu Start o nella schermata Start cercare Windows PowerShell.
Connettere PowerShell alla sottoscrizione.
Immettere il seguente cmdlet di PowerShell per creare il progetto:
New-AzureServiceProject helloworld
Il cmdlet New-AzureServiceProject genera una struttura di base per la pubblicazione di un'applicazione Node.js in un servizio cloud. Contiene i file di configurazione necessari per la pubblicazione in Azure. Il cmdlet modifica inoltre la directory di lavoro nella directory per il servizio.
Il cmdlet crea i seguenti file:
- ServiceConfiguration.Cloud.cscfg, ServiceConfiguration.Local.cscfg e ServiceDefinition.csdef sono file specifici di Azure, necessari per la pubblicazione dell'applicazione. Per altre informazioni, vedere Creazione di un servizio ospitato per Azure.
- deploymentSettings.json: archivia le impostazioni locali utilizzate dai cmdlet di distribuzione di Azure PowerShell.
Immettere il seguente comando per aggiungere un nuovo ruolo Web:
Add-AzureNodeWebRole
Il cmdlet Add-AzureNodeWebRole crea un'applicazione Node.js di base. Modifica anche i file con estensione csfg e csdef per aggiungere voci di configurazione per il nuovo ruolo.
Nota
Se non si specifica un nome di ruolo, viene usato un nome predefinito. È possibile specificare un nome come primo parametro di cmdlet:
Add-AzureNodeWebRole MyRole
L'app Node.js è definita nel file server.js, contenuto nella directory per il ruolo Web (WebRole1 per impostazione predefinita). Ecco il codice:
var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
Questo codice è essenzialmente lo stesso dell'esempio "Hello World" nel sito Web nodejs.org , si differenzia solo perché usa il numero di porta assegnato dall'ambiente cloud.
Distribuire l'applicazione in Azure
Nota
Per completare l'esercitazione, è necessario un account Azure. È possibile attivare i vantaggi della sottoscrizione MSDN o registrarsi per ottenere un account gratuito.
Scaricare le impostazioni di pubblicazione di Azure
Per distribuire l'applicazione in Azure, è necessario prima di tutto scaricare le impostazioni di pubblicazione per la sottoscrizione di Azure.
Eseguire questo cmdlet di Azure PowerShell:
Get-AzurePublishSettingsFile
Questo comando usa il browser per passare alla pagina di download delle impostazioni di pubblicazione. Potrebbe essere richiesto di accedere con un account Microsoft. In tal caso, usare l'account associato alla sottoscrizione di Azure.
Salvare il profilo scaricato in un percorso di file facilmente accessibile.
Eseguire questo cmdlet per importare il profilo di pubblicazione che è stato scaricato:
Import-AzurePublishSettingsFile [path to file]
Nota
Dopo aver importato le impostazioni di pubblicazione, è consigliabile eliminare il file con estensione publishsettings, perché contiene informazioni che potrebbero consentire l'accesso all'account.
Pubblicare l'applicazione
Quindi, eseguire i comandi seguenti:
$ServiceName = "NodeHelloWorld" + $(Get-Date -Format ('ddhhmm'))
Publish-AzureServiceProject -ServiceName $ServiceName -Location "East US" -Launch
- -ServiceName specifica il nome per la distribuzione. Questo valore deve essere un nome univoco; in caso contrario, il processo di pubblicazione non riesce. Il comando Get Data consente di tracciare una stringa di data/ora che rende il nome univoco.
- -Posizione specifica il data center che ospita l'applicazione. Per visualizzare un elenco dei datacenter disponibili, usare il cmdlet Get-AzureLocation .
- -Avvio apre una finestra del browser e passa al servizio ospitato al termine della distribuzione.
Al termine della pubblicazione, viene visualizzata una risposta simile allo screenshot:
Nota
Possono essere necessari alcuni minuti per la distribuzione dell'applicazione e prima che questa sia disponibile dopo la prima pubblicazione.
Al termine della distribuzione, viene aperta una finestra del browser e si passa al servizio cloud.
L'applicazione è in esecuzione su Azure.
Il cmdlet Publish-AzureServiceProject esegue le operazioni seguenti:
- Crea un pacchetto da distribuire. Il pacchetto contiene tutti i file della cartella dell'applicazione.
- Crea un nuovo account di archiviazione se non ne esiste uno. L'account di archiviazione di Azure viene utilizzato per archiviare il pacchetto dell'applicazione durante la distribuzione. L'account di archiviazione può essere eliminato dopo il completamento della distribuzione.
- Crea un nuovo servizio cloud se non ne esiste già uno. Un servizio cloud è il contenitore nel quale l'applicazione è ospitata quando viene distribuita in Azure. Per altre informazioni, vedere Creazione di un servizio ospitato per Azure.
- Pubblica il pacchetto di distribuzione in Azure.
Arrestare ed eliminare l'applicazione
Dopo aver distribuito l'applicazione, è possibile disabilitarla per evitare costi aggiuntivi. Azure addebita le istanze del ruolo Web al consumo, in base all'utilizzo di tempo del server su base oraria. Un'applicazione distribuita utilizza tempo del server anche se le istanze non sono in esecuzione e sono in stato arrestato.
Nella finestra di Windows PowerShell arrestare la distribuzione del servizio creato nella sezione precedente con il cmdlet seguente:
Stop-AzureService
L'arresto del servizio può richiedere diversi minuti. Dopo l'arresto del servizio, viene visualizzato un messaggio di conferma dell'arresto.
Per eliminare il servizio, chiamare il cmdlet seguente:
Remove-AzureService
Quando richiesto, immettere Y per eliminare il servizio.
L'eliminazione del servizio può richiedere diversi minuti. Dopo aver eliminato il servizio, viene visualizzato un messaggio che indica che il servizio è stato eliminato.
Nota
L'eliminazione del servizio non comporta l'eliminazione dell'account di archiviazione creato quando il servizio è stato pubblicato e lo spazio di archiviazione usato continuerà a essere addebitato. Se nient'altro sta usando lo spazio di archiviazione, è possibile eliminarlo.
Passaggi successivi
Per ulteriori informazioni, vedere il Centro per sviluppatori di Node.js.