Condividi tramite


Distribuire file nel servizio app di Azure

Questo articolo illustra come distribuire il codice come pacchetto ZIP, WAR, JAR o EAR nel Servizio app di Azure. Illustra anche come distribuire singoli file nel servizio app, separati dal pacchetto dell'applicazione.

Prerequisiti

Per completare i passaggi descritti in questo articolo, creare un'app del Servizio app di Azureo usare un'app creata per un'altra esercitazione.

Se non si ha un account Azure, creare un account gratuito prima di iniziare.

Creare un pacchetto ZIP del progetto

Importante

Quando si crea il pacchetto ZIP per la distribuzione, non includere la directory radice. Includere solo i file e le directory nella directory radice. Se si scarica un repository GitHub come file ZIP, non è possibile distribuire il file così com'è nel servizio app. GitHub aggiunge directory annidate al livello superiore, il che non funziona con il servizio app.

In una finestra terminale locale, vai alla cartella principale del tuo progetto dell'app.

Questa directory deve contenere il file di immissione nell'app Web, ad esempio index.html, index.phpe app.js. Può anche contenere file di gestione dei pacchetti come project.json, composer.jsonpackage.json, bower.json, e requirements.txt.

Se non si vuole che il servizio app esegua automaticamente l'automazione della distribuzione, eseguire tutte le attività di compilazione. Ad esempio: npm, bower, gulp, composere pip. Assicurarsi di avere tutti i file necessari per eseguire l'app. Questo passaggio è obbligatorio se si desidera eseguire direttamente il pacchetto.

Creare un archivio ZIP per tutti gli elementi del progetto. Per i progetti dotnet, aggiungere tutti gli elementi nella directory di output del comando dotnet publish, con l’esclusione della directory di output stessa. Ad esempio, immettere il comando seguente nel terminale per creare un pacchetto ZIP che includa il contenuto della directory corrente:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

Distribuire un pacchetto ZIP

Quando si distribuisce un pacchetto ZIP, il servizio app decomprime il relativo contenuto nel percorso predefinito per l'app: D:\home\site\wwwroot per Windows e /home/site/wwwroot per Linux.

La distribuzione tramite pacchetto ZIP utilizza lo stesso servizio Kudu usato per le distribuzioni basate su integrazione continua. Kudu supporta le funzionalità seguenti per la distribuzione del pacchetto ZIP:

  • Eliminazione di file rimasti da una distribuzione precedente
  • Opzione per attivare il processo di compilazione predefinito, che include il ripristino del pacchetto
  • Personalizzazione della distribuzione, inclusi gli script di distribuzione in esecuzione
  • Log di distribuzione
  • Limite di dimensioni del pacchetto di 2.048 megabyte

Nota

I file nel pacchetto ZIP vengono copiati solo se i timestamp non corrispondono a ciò che è già distribuito.

Distribuire utilizzando l'interfaccia utente di distribuzione ZIP in Kudu

  1. Aprire l'app nel portale di Azure e selezionare Strumenti> di sviluppoStrumenti avanzati e quindi selezionare Vai.
  2. In Kudu selezionare Strumenti>Distribuzione Push Zip.
  3. Caricare il pacchetto ZIP creato in Creare un pacchetto ZIP del progetto. Trascinarlo nell'area esplora file nella pagina Web.

Quando la distribuzione è in corso, un'icona nell'angolo superiore destro mostra la percentuale di avanzamento. La pagina visualizza anche i messaggi per l'operazione sotto l'area Esplora file . Al termine della distribuzione, l'ultimo messaggio dovrebbe indicare "Distribuzione riuscita".

Questo endpoint non funziona attualmente per il servizio app in Linux. È invece consigliabile usare FTP o l'API di distribuzione ZIP.

Senza zip implementare l'interfaccia utente in Kudu

Distribuire un pacchetto ZIP nell'app Web usando il az webapp deploy comando . Il comando dell'interfaccia della riga di comando usa l'API di pubblicazione Kudu per distribuire i file ed è pienamente personalizzabile.

Nell'esempio seguente viene eseguito il push di un pacchetto ZIP nel sito. Specificare il percorso del pacchetto ZIP locale per --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

Questo comando riavvia l'app dopo aver distribuito il pacchetto ZIP.

Abilitare l'automazione della compilazione per la distribuzione ZIP

Per impostazione predefinita, il motore di distribuzione presuppone che un pacchetto ZIP sia pronto per essere eseguito così com'è e non esegue alcun processo di automazione della compilazione. Per abilitare la stessa automazione di compilazione usata in una distribuzione Git, impostare l'impostazione dell'app SCM_DO_BUILD_DURING_DEPLOYMENT . Eseguire il comando seguente in Azure Cloud Shell:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

Per altre informazioni, vedere Documentazione Kudu.

Distribuire pacchetti WAR, JAR o EAR

È possibile distribuire il pacchetto WAR, JAR o EAR nel servizio app per eseguire l'app Web Java usando l'interfaccia della riga di comando di Azure, PowerShell o l'API di pubblicazione Kudu.

Il processo di distribuzione illustrato di seguito inserisce il pacchetto nella condivisione di contenuto dell'app con la convenzione di denominazione e la struttura di directory corretta. Per altre informazioni, vedere Informazioni di riferimento sull'API di pubblicazione kudu. È consigliabile adottare questo approccio. Se si distribuiscono invece pacchetti WAR, JAR o EAR usando FTP o Distribuzione Web, potrebbero verificarsi errori sconosciuti a causa di errori nella denominazione o nella struttura.

Distribuire un pacchetto WAR in Tomcat o JBoss EAP usando il az webapp deploy comando . Specificare il percorso del pacchetto Java locale per --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

Il comando dell'interfaccia della riga di comando usa l'API di pubblicazione Kudu per distribuire il pacchetto e può essere completamente personalizzato.

Distribuire singoli file

Distribuire uno script di avvio, una libreria e un file statico nell'app Web usando il az webapp deploy comando con il --type parametro .

Se si distribuisce uno script di avvio in questo modo, il Servizio app di Azure usa automaticamente lo script per avviare l'app.

Il comando dell'interfaccia della riga di comando usa l'API di pubblicazione Kudu per distribuire i file. Il comando può essere completamente personalizzato.

Distribuire uno script di avvio

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

Distribuire un file di libreria

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

Distribuire un file statico

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

Distribuire in app protette dalla rete

A seconda della configurazione di rete dell'app Web, l'accesso diretto all'app dall'ambiente di sviluppo potrebbe essere bloccato. Vedere Distribuzione in siti protetti dalla rete e distribuzione in siti protetti dalla rete, parte 2. Anziché eseguire direttamente il push del pacchetto o del file nell'app Web, è possibile pubblicarlo in un sistema di archiviazione accessibile dall'app Web e attivare l'app per eseguire il pull del file ZIP dal percorso di archiviazione.

L'URL remoto può essere qualsiasi posizione accessibile pubblicamente, ma è consigliabile usare un contenitore di archiviazione BLOB con una chiave di firma di accesso condiviso (SAS) per proteggerlo.

Usare il comando az webapp deploy come nelle altre sezioni, ma usare --src-url anziché --src-path. L'esempio seguente usa il parametro --src-url per specificare l'URL di un file ZIP ospitato in un account di archiviazione di Azure.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

Informazioni di riferimento sulle API di pubblicazione Kudu

L'API Kudu publish consente di specificare gli stessi parametri del comando CLI come parametri di query nell'URL. Per eseguire l'autenticazione con l'API REST Kudu, è consigliabile usare l'autenticazione basata su token, ma è anche possibile usare l'autenticazione di base con le credenziali di distribuzione dell'app.

Nella tabella seguente vengono illustrati i parametri di query disponibili, i relativi valori consentiti e le descrizioni.

Chiave Valori consentiti Descrizione Obbligatoria Tipo
type war|jar|ear|lib|startup|static|zip Questo è il tipo di artefatto da implementare. Imposta il percorso di destinazione predefinito e informa l'app Web come deve essere gestita la distribuzione.

type=zip: distribuire un pacchetto ZIP decomprimendo il contenuto in /home/site/wwwroot. Il parametro target-path è facoltativo.

type=war: distribuire un pacchetto WAR. Per impostazione predefinita, il pacchetto WAR viene distribuito in /home/site/wwwroot/app.war. Il percorso di destinazione può essere specificato con target-path.

type=jar: distribuire un pacchetto JAR in /home/site/wwwroot/app.jar. Il parametro target-path viene ignorato.

type=ear: distribuire un pacchetto EAR in /home/site/wwwroot/app.ear. Il parametro target-path viene ignorato.

type=lib: distribuire un file di libreria JAR. Per impostazione predefinita, il file viene distribuito in /home/site/libs. Il percorso di destinazione può essere specificato con target-path.

type=static: distribuire un file statico, ad esempio uno script. Per impostazione predefinita, il file viene distribuito in /home/site/wwwroot.

type=startup: distribuisci uno script che il Servizio App utilizza automaticamente come script di avvio per la tua app. Per impostazione predefinita, lo script viene distribuito in D:\home\site\scripts\<name-of-source> per Windows e home/site/wwwroot/startup.sh per Linux. Il percorso di destinazione può essere specificato con target-path.
Stringa
restart true|false Per impostazione predefinita, l'API riavvia l'app dopo l'operazione di distribuzione (restart=true). Quando si distribuiscono più artefatti, è possibile impedire i riavvii su tutte le distribuzioni tranne quella finale impostando restart=false. NO Booleano
clean true|false Specifica se pulire (eliminare) la distribuzione di destinazione prima di distribuire l'artefatto. NO Booleano
ignorestack true|false L'API di pubblicazione usa la variabile di ambiente WEBSITE_STACK per scegliere impostazioni predefinite sicure a seconda dello stack di linguaggio del sito. L'impostazione di questo parametro su false disabilita le impostazioni predefinite specifiche della lingua. NO Booleano
target-path Percorso assoluto Percorso assoluto in cui distribuire l'artefatto. Ad esempio, /home/site/deployments/tools/driver.jar o /home/site/scripts/helper.sh. NO Stringa

Per scenari di distribuzione più avanzati, provare a eseguire la distribuzione in Azure con Git. La distribuzione basata su Git in Azure abilita il controllo della versione, il ripristino del pacchetto, MSBuild e altro ancora.