Distribuire un'app Web Node.js in Azure

Questa guida introduttiva illustra come creare e distribuire la prima app Web Node.js (Express) nel servizio app di Azure. Il servizio app supporta diverse versioni di Node.js sia in Linux che in Windows.

I passaggi di interfaccia della riga di comando di Azure in questo quickstart utilizzano il livello premium a pagamento v3. I passaggi in Visual Studio Code e nel portale di Azure mostrano come utilizzare il livello gratuito.

Questo video illustra come distribuire un'app Web Node.js in Azure.

I passaggi del video sono descritti anche nelle sezioni seguenti.

Configurare l'ambiente iniziale

  • Avere a disposizione un account Azure con una sottoscrizione attiva. Se non si ha un account, è possibile crearne uno gratuito.
  • Installare Node.js LTS. Eseguire il comando node --version per verificare che Node.js sia installato.
  • Installare l'interfaccia della riga di comando di Azure, che è possibile usare per eseguire comandi in una shell per creare e configurare le risorse di Azure.
  • Avere a disposizione un account Azure con una sottoscrizione attiva. Se non si ha un account, è possibile crearne uno gratuito.
  • Installare Node.js LTS. Eseguire il comando node --version per verificare che Node.js sia installato.
  • Disporre di un client FTP, ad esempio FileZilla, per trasferire i file nel servizio app.

Creare l'applicazione Node.js

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

Suggerimento

Se hai già completato l'esercitazione Node.js, puoi passare direttamente a Distribuire su Azure.

  1. Creare un'applicazione Node.js usando il generatore di applicazioni express, installato per impostazione predefinita con Node.js e npm.

    npx express-generator myExpressApp --view ejs
    

    Se questa è la prima volta che è stato installato il generatore, npx chiede di accettare l'installazione.

  2. Passare alla directory dell'applicazione e installare i pacchetti npm.

    cd myExpressApp && npm install
    
  3. Aggiornare le dipendenze alla versione più sicura.

    npm audit fix --force
    
  4. Avviare il server di sviluppo con informazioni di debug.

    DEBUG=myexpressapp:* npm start
    
  5. In un browser passare a http://localhost:3000. Verrà visualizzata una schermata analoga alla seguente:

    Screenshot di un'applicazione Express in esecuzione in un browser.

Distribuisci in Azure

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

Note

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

Accedere ad Azure

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

    code .
    
  2. Nella barra attività in Visual Studio Code selezionare il logo di Azure.

  3. Assicurati di aver eseguito l'accesso con il tuo account Azure.

Configurare l'app del servizio app e distribuire il codice

  1. Fare clic con il pulsante destro del mouse su Servizi app e scegliere Crea nuova app Web. Per impostazione predefinita, viene usato un contenitore Linux.

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

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

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

  5. Nella finestra popup Distribuisci sempre l'area di lavoro "myExpressApp" in <nome app>" selezionare Sì. In questo modo, purché ci si trovi nella stessa area di lavoro, Visual Studio Code viene distribuito ogni volta nella stessa app del servizio app.

    Mentre Visual Studio Code crea le risorse di Azure e distribuisce il codice, mostra notifiche sullo stato di avanzamento.

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

Nel terminale, assicurati di essere nella directory myExpressApp . Sostituisci <app-name> con un nome globalmente unico, poi crea il gruppo risorse, il piano App Service e l'app. Imposta SCM_DO_BUILD_DURING_DEPLOYMENT in modo che App Service installi le dipendenze e costruisca l'app quando distribuisci l'archivio sorgente.

az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "NODE:24-lts"
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
  • Se il comando az non viene riconosciuto, assicurarsi di aver installato l'interfaccia della riga di comando di Azure come descritto in Configurare l'ambiente iniziale.
  • Sostituisci <app-name> con un nome unico in tutto Azure (i caratteri validi sono a-z, 0-9, e -).
  • L'argomento --sku P0v3 seleziona il livello di prezzo a pagamento Premium v3. Sostituisci eastus con la tua regione preferita; elenca le regioni disponibili con az account list-locations.
  • --is-linux seleziona un piano Linux. Non includerlo in un piano Windows, come mostrato nella scheda Windows.

Crea un archivio ZIP dei file in myExpressApp, non della cartella che lo racchiude. Su Linux o macOS, esegui zip -r ../app.zip . -x '*/node_modules/*' '*/.git/*' '*/.env*' da myExpressApp. Su Windows, esegui Compress-Archive -Path (Get-ChildItem -Force -Name | Where-Object { $_ -notin @('node_modules', '.git') -and $_ -notlike '.env*' }) -DestinationPath ..\app.zip in PowerShell da myExpressApp. Poi distribuisci l'archivio:

az webapp deploy --resource-group myResourceGroup --name <app-name> --src-path ../app.zip --type zip

Vai a https://<app-name>.azurewebsites.net per vedere l'app.

Creare le risorse di Azure

  1. Accedere al portale di Azure.

  2. Per iniziare a creare un'app Node.js, passare a https://portal.azure.com/#create/Microsoft.WebSite.

  3. Nella scheda Informazioni di base verificare in Dettagli progetto che sia selezionata la sottoscrizione corretta e quindi selezionare l'opzione Crea nuovo per creare un gruppo di risorse. Immettere myResourceGroup come nome.

    Screenshot della sezione Dettagli progetto che mostra dove selezionare la sottoscrizione di Azure e il gruppo di risorse per l'app Web.

  4. In Dettagli istanza digitare un nome univoco globale per l'app Web e selezionare Codice. Selezionare Node 24 LTS nello stack di runtime, un sistema operativoe un'area da cui si vuole gestire l'app.

    Screenshot della sezione Dettagli istanza.

  5. In Piani tariffari selezionare Crea nuovo per creare un piano di servizio app. Digitare myAppServicePlan per il nome. Per passare al livello Gratuito, selezionare Gratuito F1 nell'elenco Piano tariffario .

    Screenshot della sezione Piano di servizio app.

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

    Screenshot che mostra il pulsante Rivedi e crea nella parte inferiore della pagina

  7. Dopo l'esecuzione della convalida, selezionare il pulsante Creare in fondo alla pagina.

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

    Screenshot che mostra il pulsante Vai alla risorsa.

Ottenere le credenziali FTPS

Servizio app di Azure supporta due tipi di credenziali per la distribuzione FTP/S. Queste credenziali sono diverse dalle credenziali della sottoscrizione di Azure. In questa sezione si ottengono le credenziali dell'ambito applicazione da usare con il client FTP.

  1. Nella pagina app del servizio app selezionare Centro distribuzione in Distribuzione nel menu della barra laterale e quindi selezionare la scheda Credenziali FTPS .

    Screenshot che mostra la scheda delle credenziali di distribuzione FTPS.

  2. Aprire il client FTP e passare alla cartella myExpressApp .

  3. Nella scheda Credenziali FTPS copiare l'endpoint FTPS, il nome utente e la password nel client FTP.

    Screenshot dei dettagli della connessione FTPS.

  4. Selezionare Connetti nel client FTP.

Distribuire file con FTPS

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

    Schermata della directory radice WWW.

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

Ridistribuire gli aggiornamenti

È possibile distribuire le modifiche a questa app apportando modifiche in Visual Studio Code, salvando i file e quindi ripetendo la distribuzione nell'app Azure. Ad esempio:

  1. Dal progetto di esempio aprire views/index.ejs e apportare modifiche

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

    to

    <p>Welcome to Azure</p>
    
  1. Nello strumento di esplorazione del Servizio app selezionare di nuovo l'icona Distribuisci nell'app Web e confermare facendo di nuovo clic su Distribuisci.

  2. Attendere il completamento della distribuzione, quindi selezionare Esplora sito Web nel popup di notifica. Si noterà che il Welcome to Express messaggio è stato modificato in Welcome to Azure.

  1. Salva le tue modifiche, ricrea .. /app.zip dai file dell'app come descritto in Deploy to Azure, e ridistribui:

    az webapp deploy --resource-group myResourceGroup --name <app-name> --src-path ../app.zip --type zip
    

    Sostituisci <app-name> con il nome che hai usato quando hai creato l'app web.

  2. Al termine della distribuzione, aggiornare la pagina Web. Si noterà che il Welcome to Express messaggio è stato modificato in Welcome to Azure.

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

  2. Al termine della distribuzione, aggiornare la pagina Web. Si noterà che il Welcome to Express messaggio è stato modificato in Welcome to Azure.

Eseguire lo streaming dei log

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

  1. In Risorse in Visual Studio Code fare clic con il pulsante destro del mouse sul nodo dell'app e quindi scegliere Avvia streaming log.

    Screenshot dell'opzione Avviare i log di streaming.

  2. Se viene chiesto di riavviare l'app, selezionare Sì. Dopo il riavvio dell'app, verrà aperta la finestra di output di Visual Studio Code 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:

  • Abilita prima il loging: su Linux, esegui az webapp log config --resource-group myResourceGroup --name <app-name> --docker-container-logging filesystem; su Windows, esegui az webapp log config --resource-group myResourceGroup --name <app-name> --application-logging filesystem.
az webapp log tail --resource-group myResourceGroup --name <app-name>

Sostituisci <app-name> con il nome che hai usato quando hai creato l'app web.

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 arrestare lo streaming di log in qualsiasi momento, selezionare 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 nel portale di Azure.

  1. Nella stessa pagina App Service dell'app, usare il menu della barra laterale per scorrere fino alla sezione Monitoraggio e selezionare Log stream.

    Screenshot di Flusso di registrazione nel Servizio app di Azure.

  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 descritta in questa guida introduttiva inserisce tutte le risorse in questo gruppo di risorse. Per eseguire la pulizia, è sufficiente rimuovere il gruppo di risorse.

  1. Nell'estensione di Azure di Visual Studio Code, nell'elenco Raggruppa per, selezionare Raggruppa per gruppo di risorse.

  2. Nell'elenco Risorse espandere la sottoscrizione, fare clic con il pulsante destro del mouse sul gruppo di risorse creato in precedenza e quindi scegliere Elimina gruppo di risorse.

    Screenshot dello spostamento in Visual Studio Code per eliminare una risorsa che contiene le risorse del servizio app.

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

Nei passaggi precedenti della CLI, hai creato risorse Azure in myResourceGroup.

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

az group delete --name myResourceGroup --no-wait

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

È possibile eliminare il gruppo di risorse, il servizio app e tutte le risorse correlate quando non sono più necessari.

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

    Screenshot del gruppo di risorse nella pagina panoramica di App Service.

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

    Screenshot di Cancella il gruppo di risorse.

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.