Creare un'app Web Node.js in Azure

In questa guida introduttiva si apprenderà come creare e distribuire la prima app Web Node.js (Express) in Servizio app di Azure. servizio app supporta diverse versioni di Node.js sia in Linux che in Windows.

Questa guida introduttiva configura un'app servizio app nel livello Gratuito e non comporta alcun costo per la sottoscrizione di Azure.

Configurare l'ambiente iniziale

  • Avere a disposizione un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
  • Installare Node.js LTS e npm. Eseguire il comando node --version per verificare che Node.js sia installato.
  • Installare l'interfaccia della riga di comando di Azure, con cui si eseguono comandi in qualsiasi shell per effettuare il provisioning e configurare le risorse di Azure.

Creare l'applicazione Node.js

In questo passaggio si crea un'applicazione di base Node.js e si verifica che venga eseguita nel computer.

Suggerimento

Se è già stata completata l'esercitazione su Node.js, è possibile passare alla sezione sulla distribuzione in Azure.

  1. Creare un'applicazione Node.js usando Express Generator, installata per impostazione predefinita con Node.js e NPM.

    npx express-generator myExpressApp --view ejs
    
  2. Passare alla directory dell'applicazione e installare i pacchetti NPM.

    cd myExpressApp && npm install
    
  3. Avviare il server di sviluppo con informazioni di debug.

    DEBUG=myexpressapp:* npm start
    
  4. In un browser passare a http://localhost:3000. L'output dovrebbe essere simile al seguente:

    Running Express Application

Distribuisci in Azure

Prima di continuare, assicurarsi che tutti i prerequisiti siano installati e configurati.

Nota

Affinché l'applicazione Node.js venga eseguita in Azure, deve essere in ascolto sulla porta fornita dalla PORT variabile di ambiente. Nell'app Express generata questa variabile di ambiente è già usata nel bin/www dello script di avvio (cercare process.env.PORT).

Accedere ad Azure

  1. Nel terminale assicurarsi di essere nella directory myExpressApp, quindi avviare Visual Studio Codice con il comando seguente:

    code .
    
  2. In Visual Studio Codice selezionare il logo di Azure nella barra delle attività.

  3. In Esplora servizio app selezionare Accedi ad Azure e seguire le istruzioni.

    In Visual Studio Code dovrebbe essere visualizzato l'indirizzo di posta elettronica di Azure nella barra di stato e nella sottoscrizione nello strumento di esplorazione del servizio app di Azure.

    sign in to Azure

Configurare l'app servizio app e distribuire il codice

  1. Nell'area servizio app selezionare l'icona Distribuisci nell'app Web.

    Screenshot of the Azure App service in Visual Studio Code showing the blue arrow icon selected.

  2. Selezionare la cartella myExpressApp .

  1. Selezionare Crea una nuova app Web. Un contenitore Linux viene usato per impostazione predefinita.

  2. Digitare un nome univoco a livello globale per l'app Web e premere INVIO. Il nome deve essere univoco in tutte le risorse di Azure e usare solo caratteri alfanumerici (' A-Z ',' a-z ' è 0-9') e trattini ('-').

  3. In Selezionare uno stack di runtime selezionare la versione Node.js desiderata. È consigliabile usare una versione LTS.

  4. In Selezionare un piano tariffario selezionare Gratuito (F1) e attendere il provisioning delle risorse in Azure.

  5. Nella finestra popup Distribuire sempre l'area di lavoro "myExpressApp" in <app-name>", selezionare . In questo modo, purché ci si trovi nella stessa area di lavoro, Visual Studio Codice viene distribuito nella stessa app servizio app ogni volta.

    Mentre Visual Studio Code effettua il provisioning delle risorse di Azure e distribuisce il codice, visualizza le notifiche di stato.

  6. Al termine della distribuzione, selezionare Sfoglia sito Web nel popup di notifica. Il browser dovrebbe visualizzare la pagina predefinita Express.

Nel terminale assicurarsi di essere nella directory myExpressApp e di distribuire il codice nella cartella locale (myExpressApp) usando il comando az webapp up :

az webapp up --sku F1 --name <app-name>
  • Se il az comando non viene riconosciuto, assicurarsi di avere installato l'interfaccia della riga di comando di Azure come descritto in Configurare l'ambiente iniziale.
  • Sostituire <app_name> con un nome univoco nell'ambito di Azure (i caratteri validi sono a-z, 0-9 e - ). Un criterio valido consiste nell'usare una combinazione del nome della società e di un identificatore dell'app.
  • L'argomento --sku F1 crea l'app Web nel piano tariffario Gratuito, che comporta un costo aggiuntivo.
  • Facoltativamente, è possibile includere l'argomento --location <location-name>, dove <location_name> è un'area di Azure disponibile. Per recuperare un elenco di aree consentite per l'account Azure, è possibile eseguire il comando az account list-locations.
  • Il comando crea un'app Linux per Node.js per impostazione predefinita. Per creare invece un'app Windows, usare l'argomento --os-type .
  • Se viene visualizzato l'errore "Non è stato possibile rilevare automaticamente lo stack di runtime dell'app", assicurarsi di eseguire il comando nella directory myExpressApp (vedere Risoluzione dei problemi di rilevamento automatico con az webapp up).

Il completamento del comando può richiedere alcuni minuti. Durante l'esecuzione, fornisce messaggi sulla creazione del gruppo di risorse, sul piano servizio app e sulla risorsa dell'app, sulla configurazione della registrazione e sull'esecuzione della distribuzione ZIP. Viene quindi visualizzato il messaggio che indica che è possibile avviare l'app all'indirizzo http://<nome-app>.azurewebsites.net, ovvero l'URL dell'app in Azure.

The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/cephas/myExpressApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at http://<app-name>.azurewebsites.net
{
  "URL": "http://<app-name>.azurewebsites.net",
  "appserviceplan": "<app-service-plan-name>",
  "location": "centralus",
  "name": "<app-name>",
  "os": "<os-type>",
  "resourcegroup": "<group-name>",
  "runtime_version": "node|10.14",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "//home//cephas//myExpressApp"
}

Nota

Il comando az webapp up esegue le azioni seguenti:

  • Creare un gruppo di risorse predefinito.

  • Creare un piano di servizio app predefinito.

  • Creare un'app con il nome specificato.

  • Zip distribuisce tutti i file dalla directory di lavoro corrente , con automazione di compilazione abilitata.

  • Memorizzare nella cache i parametri in locale nel file con estensione azure/config in modo che non sia necessario specificarli di nuovo durante la distribuzione in un secondo momento con az webapp up o altri az webapp comandi dalla cartella del progetto. I valori memorizzati nella cache vengono usati automaticamente per impostazione predefinita.

Accedere al portale di Azure

Accedere al portale di Azure all'indirizzo https://portal.azure.com.

Creare le risorse di Azure

  1. Digitare i servizi app nella ricerca. In Servizi selezionare Servizi app.

    Screenshot of portal search

  2. Nella pagina Servizi app selezionare Crea.

  3. Nella scheda Nozioni di base, in Project dettagli, assicurarsi che sia selezionata la sottoscrizione corretta e quindi selezionare Crea nuovo gruppo di risorse. Immettere myResourceGroup come nome.

    Screenshot of the Project details section showing where you select the Azure subscription and the resource group for the web app

  4. In Dettagli istanza digitare un nome univoco globale per l'app Web e selezionare Codice. Selezionare Node 14 LTSRuntime stack, un sistema operativo e un'area da cui si vuole servire l'app.

    Screenshot of the Instance details section where you provide a name for the virtual machine and select its region, image and size

  5. In servizio app Piano selezionare Crea nuovo piano di servizio app. Digitare myAppServicePlan per il nome. Per passare al livello gratuito, selezionare Modifica dimensione, selezionare Scheda Sviluppo/Test , selezionare F1 e selezionare il pulsante Applica nella parte inferiore della pagina.

    Screenshot of the Administrator account section where you provide the administrator username and password

  6. Selezionare il pulsante Rivedi e crea nella parte inferiore della pagina.

    Screenshot showing the Review and create button at the bottom of the page

  7. Dopo l'esecuzione della convalida, selezionare il pulsante Crea nella parte inferiore della pagina.

  8. Al termine della distribuzione, selezionare Vai alla risorsa.

    Screenshot showing the next step of going to the resource

Ottenere le credenziali FTP

Servizio app di Azure supporta due tipi di credenziali per la distribuzione FTP/S. Queste credenziali non sono uguali alle credenziali della sottoscrizione di Azure. In questa sezione vengono disponibili le credenziali dell'ambito applicazione da usare con FileZilla.

  1. Nella pagina dell'app servizio app selezionare Centro distribuzione nel menu a sinistra e selezionare la scheda Credenziali FTPS.

    FTPS deployment credentials

  2. Aprire FileZilla e creare un nuovo sito.

  3. Nella scheda credenziali FTPS copiare l'endpoint FTPS, il nome utente e la password in FileZilla.

    FTPS connection details

  4. Selezionare Connessione in FileZilla.

Distribuire file con FTP

  1. Copiare tutti i file e le directory nella directory /site/wwwroot in Azure.

    FileZilla deploy files

  2. Passare all'URL dell'app per verificare che l'applicazione venga eseguita correttamente.

Ridistribuire gli aggiornamenti

È possibile distribuire le modifiche a questa app eseguendo modifiche in Visual Studio Codice, salvando i file e quindi ridistribuendo l'app di Azure. Ad esempio:

  1. Dal progetto di esempio aprire visualizzazioni/index.ejs e modificare

    <p>Welcome to <%= title %></p>
    

    to

    <p>Welcome to Azure</p>
    
  1. Nell'servizio app explorer selezionare di nuovo l'icona Distribuisci nell'app Web, confermare facendo clic di nuovo su Distribuisci.

  2. Attendere il completamento della distribuzione, quindi selezionare Sfoglia sito Web nel popup di notifica. Verrà visualizzato che il Welcome to Express messaggio è stato modificato in Welcome to Azure!.

  1. Salvare le modifiche, quindi ridistribuire l'app usando nuovamente il comando az webapp up senza argomenti:

    az webapp up
    

    Questo comando usa i valori memorizzati nella cache localmente nel file .azure/config, ad esempio il nome dell'app, il gruppo di risorse e il piano di servizio app.

  2. Al termine della distribuzione, aggiornare la pagina Web http://<app-name>.azurewebsites.net. Verrà visualizzato che il Welcome to Express messaggio è stato modificato in Welcome to Azure!.

  1. Salvare le modifiche, quindi ridistribuire l'app usando di nuovo il client FTP.

  2. Al termine della distribuzione, aggiornare la pagina Web http://<app-name>.azurewebsites.net. Verrà visualizzato che il Welcome to Express messaggio è stato modificato in Welcome to Azure!.

Trasmetti log

È possibile trasmettere l'output del log (chiamate a console.log()) dall'app di Azure direttamente nella finestra di output del codice Visual Studio.

  1. Nel servizio app Explorer fare clic con il pulsante destro del mouse sul nodo dell'app e selezionare Avvia log di streaming.

    Start Streaming Logs

  2. Se richiesto di riavviare l'app, selezionare . Dopo il riavvio dell'app, viene visualizzata la finestra di output del codice Visual Studio con una connessione al flusso di log.

  3. Dopo alcuni secondi, nella finestra di output verrà visualizzato un messaggio che indica che si è connessi al servizio di streaming dei log. È possibile generare altre attività di output aggiornando la pagina nel browser.

     Connecting to log stream...
     2020-03-04T19:29:44  Welcome, you are now connected to log-streaming service. The default timeout is 2 hours.
     Change the timeout with the App Setting SCM_LOGSTREAM_TIMEOUT (in seconds).
     

È possibile accedere ai log della console generati dall'interno dell'app e del contenitore in cui è in esecuzione. I log includono qualsiasi output generato dalle chiamate a console.log().

Per trasmettere in streaming i log, eseguire il comando az webapp log tail:

az webapp log tail

Il comando usa il nome del gruppo di risorse memorizzato nella cache nel file .azure/config.

È anche possibile includere il --logs parametro con il comando az webapp up per aprire automaticamente il flusso di log nella distribuzione.

Aggiornare l'app nel browser per generare i log della console, che includeranno messaggi che descrivono le richieste HTTP per l'app. Se non viene visualizzato immediatamente un output, riprovare dopo 30 secondi.

Per interrompere lo streaming di log in qualsiasi momento, premere CTRL+C nel terminale.

È possibile accedere ai log della console generati dall'interno dell'app e del contenitore in cui è in esecuzione. È possibile trasmettere l'output del log (chiamate a console.log()) dall'app Node.js direttamente nella portale di Azure.

  1. Nella stessa pagina servizio app per l'app usare il menu a sinistra per scorrere fino alla sezione Monitoraggio e selezionare Log stream.

    Screenshot of Log stream in Azure App service.

  2. Dopo alcuni secondi, nella finestra di output verrà visualizzato un messaggio che indica che si è connessi al servizio di streaming dei log. È possibile generare altre attività di output aggiornando la pagina nel browser.

     Connecting...
     2021-10-26T21:04:14  Welcome, you are now connected to log-streaming service.
     Starting Log Tail -n 10 of existing logs ----
     /appsvctmp/volatile/logs/runtime/81b1b83b27ea1c3d598a1cdec28c71c4074ce66c735d0be57f15a8d07cb3178e.log
     2021-10-26T21:04:08.614384810Z: [INFO]
     2021-10-26T21:04:08.614393710Z: [INFO]  # Enter the source directory to make sure the script runs where the user expects
     2021-10-26T21:04:08.614399010Z: [INFO]  cd "/home/site/wwwroot"
     2021-10-26T21:04:08.614403210Z: [INFO]
     2021-10-26T21:04:08.614407110Z: [INFO]  export NODE_PATH=/usr/local/lib/node_modules:$NODE_PATH
     2021-10-26T21:04:08.614411210Z: [INFO]  if [ -z "$PORT" ]; then
     2021-10-26T21:04:08.614415310Z: [INFO]          export PORT=8080
     2021-10-26T21:04:08.614419610Z: [INFO]  fi
     2021-10-26T21:04:08.614423411Z: [INFO]
     2021-10-26T21:04:08.614427211Z: [INFO]  node /opt/startup/default-static-site.js
     Ending Log Tail of existing logs ---
     

Pulire le risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. La procedura di creazione in questa guida introduttiva inserisce tutte le risorse in questo gruppo di risorse. Per pulire, è sufficiente rimuovere il gruppo di risorse.

  1. Nell'estensione di Azure di Visual Studio espandere Esplora gruppi di risorse.

  2. Espandere la sottoscrizione, fare clic con il pulsante destro del mouse sul gruppo di risorse creato in precedenza e scegliere Elimina.

    Screenshot of the Visual Studio Code navigation to delete a resource that contains App Service resources.

  3. Quando richiesto, confermare l'eliminazione immettendo il nome del gruppo di risorse che si sta eliminando. Dopo aver confermato, il gruppo di risorse viene eliminato e viene visualizzata una notifica al termine.

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Il gruppo di risorse ha un nome simile a "appsvc_rg_Linux_CentralUS", a seconda della località scelta.

Se non si prevede di usare queste risorse in futuro, eliminare i gruppi di risorse eseguendo questo comando:

az group delete --no-wait

Il comando usa il nome del gruppo di risorse memorizzato nella cache nel file .azure/config.

Con l'argomento --no-wait, il comando restituisce il risultato prima del completamento dell'operazione.

Quando non è più necessario, è possibile eliminare il gruppo di risorse, il servizio app e tutte le risorse correlate.

  1. Nella pagina di panoramica servizio app selezionare il gruppo di risorse creato nel passaggio Crea risorse di Azure.

    Resource group in App Service overview page

  2. Nella pagina gruppo di risorse selezionare Elimina gruppo di risorse. Confermare il nome del gruppo di risorse da terminare eliminando le risorse.

    Delete resource group

Passaggi successivi

L'argomento avvio rapido è stato completato.

Vedere le altre estensioni di Azure.

In alternativa, è possibile ottenere tutte queste soluzioni installando il pacchetto di estensioni Node per Azure.