Creazione e distribuzione di un'applicazione Node.js a un servizio cloud di AzureBuild and deploy a Node.js application to an Azure Cloud Service

Questa esercitazione illustra come creare una semplice applicazione Node.js in esecuzione in un servizio cloud di Azure.This tutorial shows how to create a simple Node.js application running in an Azure Cloud Service. Servizi cloud è costituito da blocchi predefiniti di applicazioni cloud scalabili in Azure.Cloud Services are the building blocks of scalable cloud applications in Azure. Consentono la separazione e la gestione indipendente e la scalabilità dei componenti front-end e back-end dell'applicazione.They allow the separation and independent management and scale-out of front-end and back-end components of your application. Servizi cloud offre una potente macchina virtuale dedicata per ospitare ogni ruolo in modo affidabile.Cloud Services provide a robust dedicated virtual machine for hosting each role reliably.

Per altre informazioni su Servizi cloud e sulle differenze rispetto ai servizi Siti Web e Macchine virtuali di Azure, vedere Confronto tra siti Web, servizi cloud e macchine virtuali.For more information on Cloud Services, and how they compare to Azure Websites and Virtual machines, see Azure Websites, Cloud Services and Virtual Machines comparison.

Suggerimento

Come creare un semplice sito WebLooking to build a simple website? Se lo scenario prevede un semplice sito Web front-end, è possibile usare un'app Web leggera.If your scenario involves just a simple website front-end, consider using a lightweight web app. È possibile procedere all'aggiornamento a un Servizio cloud con facilità, in base alla crescita dell’app Web e all'insorgere di nuove esigenze.You can easily upgrade to a Cloud Service as your web app grows and your requirements change.

Questa esercitazione consente di creare una semplice applicazione Web ospitata in un ruolo Web.By following this tutorial, you will build a simple web application hosted inside a web role. 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.You will use the compute emulator to test your application locally, then deploy it using PowerShell command-line tools.

L'applicazione è una semplice applicazione "hello world":The application is a simple "hello world" application:

Finestra del browser in cui è visualizzata la pagina Web Hello World

PrerequisitiPrerequisites

Nota

Questa esercitazione usa Azure PowerShell, che richiede Windows.This tutorial uses Azure PowerShell, which requires Windows.

Creare un progetto di Servizi cloud di AzureCreate an Azure Cloud Service project

Per creare un nuovo progetto di Servizi cloud di Azure, oltre allo scaffolding di Node.js è necessario eseguire queste operazioni:Perform the following tasks to create a new Azure Cloud Service project, along with basic Node.js scaffolding:

  1. Eseguire Windows PowerShell come amministratore. Dal menu Start o nella schermata Start cercare Windows PowerShell.Run Windows PowerShell as Administrator; from the Start Menu or Start Screen, search for Windows PowerShell.
  2. Connettere PowerShell alla sottoscrizione.Connect PowerShell to your subscription.
  3. Immettere il seguente cmdlet di PowerShell per creare il progetto:Enter the following PowerShell cmdlet to create to create the project:

     New-AzureServiceProject helloworld
    

    Risultato del comando New-AzureService helloworld

    Il cmdlet New-AzureServiceProject genera una struttura di base per la pubblicazione di un'applicazione Node.js in un servizio cloud.The New-AzureServiceProject cmdlet generates a basic structure for publishing a Node.js application to a Cloud Service. Contiene i file di configurazione necessari per la pubblicazione in Azure.It contains configuration files necessary for publishing to Azure. Il cmdlet modifica inoltre la directory di lavoro nella directory per il servizio.The cmdlet also changes your working directory to the directory for the service.

    Il cmdlet crea i seguenti file:The cmdlet creates the following files:

    • ServiceConfiguration.Cloud.cscfg, ServiceConfiguration.Local.cscfg e ServiceDefinition.csdef sono file specifici di Azure, necessari per la pubblicazione dell'applicazione.ServiceConfiguration.Cloud.cscfg, ServiceConfiguration.Local.cscfg and ServiceDefinition.csdef: Azure-specific files necessary for publishing your application. Per altre informazioni, vedere Creazione di un servizio ospitato per Azure.For more information, see Overview of Creating a Hosted Service for Azure.
    • deploymentSettings.json: archivia le impostazioni locali utilizzate dai cmdlet di distribuzione di Azure PowerShell.deploymentSettings.json: Stores local settings that are used by the Azure PowerShell deployment cmdlets.
  4. Immettere il seguente comando per aggiungere un nuovo ruolo Web:Enter the following command to add a new web role:

    Add-AzureNodeWebRole
    

    Output del comando Add-AzureNodeWebRole

    Il cmdlet Add-AzureNodeWebRole crea un'applicazione Node.js di base.The Add-AzureNodeWebRole cmdlet creates a basic Node.js application. Modifica anche i file con estensione csfg e csdef per aggiungere voci di configurazione per il nuovo ruolo.It also modifies the .csfg and .csdef files to add configuration entries for the new role.

    Nota

    Se non si specifica un nome di ruolo, viene usato un nome predefinito.If you do not specify a role name, a default name is used. È possibile specificare un nome come primo parametro di cmdlet: Add-AzureNodeWebRole MyRoleYou can provide a name as the first cmdlet parameter: Add-AzureNodeWebRole MyRole

L'app Node.js è definita nel file server.js, contenuto nella directory per il ruolo Web (WebRole1 per impostazione predefinita).The Node.js app is defined in the file server.js, located in the directory for the web role (WebRole1 by default). Il codice è il seguente:Here is the code:

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.This code is essentially the same as the "Hello World" sample on the nodejs.org website, except it uses the port number assigned by the cloud environment.

Distribuzione dell'applicazione in AzureDeploy the application to Azure

Nota

Per completare l'esercitazione, è necessario un account Azure.To complete this tutorial, you need an Azure account. È possibile attivare i benefici della sottoscrizione MSDN o iscriversi per un account gratuito.You can activate your MSDN subscriber benefits or sign up for a free account.

Scaricare le impostazioni di pubblicazione di AzureDownload the Azure publishing settings

Per distribuire l'applicazione in Azure, è necessario prima di tutto scaricare le impostazioni di pubblicazione per la sottoscrizione di Azure.To deploy your application to Azure, you must first download the publishing settings for your Azure subscription.

  1. Eseguire questo cmdlet di Azure PowerShell:Run the following Azure PowerShell cmdlet:

    Get-AzurePublishSettingsFile
    

    Il browser verrà così utilizzato per passare alla pagina di download delle impostazioni di pubblicazione.This will use your browser to navigate to the publish settings download page. È possibile che venga richiesto di effettuare l'accesso con un account Microsoft.You may be prompted to log in with a Microsoft Account. In tal caso, usare l'account associato alla sottoscrizione di Azure.If so, use the account associated with your Azure subscription.

    Salvare il profilo scaricato in un percorso di file facilmente accessibile.Save the downloaded profile to a file location you can easily access.

  2. Eseguire questo cmdlet per importare il profilo di pubblicazione che è stato scaricato:Run following cmdlet to import the publishing profile you downloaded:

    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.After importing the publish settings, consider deleting the downloaded .publishSettings file, because it contains information that could allow someone to access your account.

Pubblicare l'applicazionePublish the application

Quindi, eseguire i comandi seguenti:To publish, run the following commands:

  $ServiceName = "NodeHelloWorld" + $(Get-Date -Format ('ddhhmm'))
Publish-AzureServiceProject -ServiceName $ServiceName  -Location "East US" -Launch
  • -ServiceName specifica il nome per la distribuzione.-ServiceName specifies the name for the deployment. Deve essere un nome univoco, in caso contrario il processo di pubblicazione avrà esito negativo.This must be a unique name, otherwise the publish process will fail. Il comando Get Data consente di tracciare una stringa di data/ora che rende il nome univoco.The Get-Date command tacks on a date/time string that should make the name unique.
  • -Location specifica il datacenter su cui viene ospitata l'applicazione.-Location specifies the datacenter that the application will be hosted in. Per visualizzare un elenco dei datacenter disponibili, usare il cmdlet Get-AzureLocation .To see a list of available datacenters, use the Get-AzureLocation cmdlet.
  • -Launch apre una finestra del browser e passa al servizio ospitato dopo che è stata completata la distribuzione.-Launch opens a browser window and navigates to the hosted service after deployment has completed.

Al termine della pubblicazione, verrà visualizzata una risposta simile alla seguente:After publishing succeeds, you will see a response similar to the following:

Output del comando Publish-AzureService

Nota

Possono essere necessari alcuni minuti per la distribuzione dell'applicazione e prima che questa sia disponibile dopo la prima pubblicazione.It can take several minutes for the application to deploy and become available when first published.

Al termine della distribuzione, verrà visualizzata una finestra del browser che consente di passare al servizio cloud.Once the deployment has completed, a browser window will open and navigate to the cloud service.

Finestra del browser che visualizza la pagina hello world. L'URL indica che la pagina è ospitata in Azure.

L'applicazione è in esecuzione su Azure.Your application is now running on Azure.

Il cmdlet Publish-AzureServiceProject esegue le operazioni seguenti:The Publish-AzureServiceProject cmdlet performs the following steps:

  1. Crea un pacchetto da distribuire.Creates a package to deploy. Il pacchetto contiene tutti i file della cartella dell'applicazione.The package contains all the files in your application folder.
  2. Crea un nuovo account di archiviazione nel caso non ne esista uno.Creates a new storage account if one does not exist. L'account di archiviazione di Azure viene utilizzato per archiviare il pacchetto dell'applicazione durante la distribuzione.The Azure storage account is used to store the application package during deployment. L'account di archiviazione può essere eliminato dopo il completamento della distribuzione.You can safely delete the storage account after deployment is done.
  3. Crea un nuovo servizio cloud nel caso in cui non ne esista già uno.Creates a new cloud service if one does not already exist. Un servizio cloud è il contenitore nel quale l'applicazione è ospitata quando viene distribuita in Azure.A cloud service is the container in which your application is hosted when it is deployed to Azure. Per altre informazioni, vedere Creazione di un servizio ospitato per Azure.For more information, see Overview of Creating a Hosted Service for Azure.
  4. Pubblica il pacchetto di distribuzione in Azure.Publishes the deployment package to Azure.

Arrestare ed eliminare l'applicazioneStopping and deleting your application

Dopo aver distribuito l'applicazione, è possibile disabilitarla per evitare costi aggiuntivi.After deploying your application, you may want to disable it so you can avoid extra costs. Azure addebita le istanze del ruolo Web al consumo, in base all'utilizzo di tempo del server su base oraria.Azure bills web role instances per hour of server time consumed. Un'applicazione distribuita utilizza tempo del server anche se le istanze non sono in esecuzione e sono in stato arrestato.Server time is consumed once your application is deployed, even if the instances are not running and are in the stopped state.

  1. Nella finestra di Windows PowerShell arrestare la distribuzione del servizio creato nella sezione precedente con il cmdlet seguente:In the Windows PowerShell window, stop the service deployment created in the previous section with the following cmdlet:

    Stop-AzureService
    

    L'arresto del servizio può richiedere diversi minuti.Stopping the service may take several minutes. Dopo l'arresto del servizio, viene visualizzato un messaggio di conferma dell'arresto.When the service is stopped, you receive a message indicating that it has stopped.

    The status of the Stop-AzureService command

  2. Per eliminare il servizio, chiamare il cmdlet seguente:To delete the service, call the following cmdlet:

    Remove-AzureService
    

    Quando richiesto, immettere Y per eliminare il servizio.When prompted, enter Y to delete the service.

    L'eliminazione del servizio può richiedere diversi minuti.Deleting the service may take several minutes. Al termine dell'eliminazione del servizio, verrà visualizzato un messaggio di conferma dell'eliminazione.After the service has been deleted you receive a message indicating that the service was deleted.

    Stato del comando Remove-AzureService

    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.Deleting the service does not delete the storage account that was created when the service was initially published, and you will continue to be billed for storage used. Se nient'altro sta usando lo spazio di archiviazione, è possibile eliminarlo.If nothing else is using the storage, you may want to delete it.

Passaggi successiviNext steps

Per ulteriori informazioni, vedere il Centro per sviluppatori di Node. js.For more information, see the Node.js Developer Center.