Condividi tramite


Distribuire file in Servizio app

Nota

A partire dal 1° giugno 2024, tutte le app del Servizio app di Azure appena create avranno la possibilità di generare un nome host predefinito univoco usando la convenzione di denominazione <app-name>-<random-hash>.<region>.azurewebsites.net. I nomi delle app esistenti rimarranno invariati.

Esempio: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Per altri dettagli, vedere Nome host predefinito univoco per la risorsa del 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 una sottoscrizione di Azure, creare un account Azure 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, ma solo i file e le directory in esso contenuti. Se si scarica un repository GitHub come file ZIP, non è possibile distribuire il file così com'è nel servizio app. GitHub aggiunge altre directory annidate al livello superiore che non funzionano con il servizio app.

In una finestra terminale locale, passare alla directory radice del progetto dell'app.

Questa directory deve contenere il file di ingresso dell'app Web, ad esempio index.html, index.php e app.js. Può inoltre contenere file di gestione del pacchetto come project.json, composer.json, package.json, bower.json e requirements.txt.

A meno che il Servizio app di Azure non esegua automaticamente l'automazione della distribuzione, eseguire tutte le attività di compilazione ( ad esempio, npm, bower, gulp, composer e pip) e assicurarsi di disporre di 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, questo è tutto nella directory di output del comando dotnet publish (escluso la directory di output stessa). Ad esempio, il comando seguente nel terminale per creare un pacchetto ZIP del 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 di Azure decomprime il relativo contenuto nel percorso predefinito dell'app (D:\home\site\wwwroot per Windows, /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 dei file rimasti da una distribuzione precedente.
  • Opzione per attivare il processo di compilazione predefinito, che include il ripristino del pacchetto.
  • Personalizzazione della distribuzione, inclusa l'esecuzione di script di distribuzione.
  • Log di distribuzione.
  • Limite di dimensioni del pacchetto di 2048 MB.

Nota

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

Con zip implementare l'interfaccia utente in Kudu

Nel browser andare ahttps://<app_name>.scm.azurewebsites.net/ZipDeployUI (vedere la nota in alto).

Caricare il pacchetto ZIP creato in Creare un pacchetto ZIP del progetto trascinandolo nell'area di esplorazione dei file sulla pagina Web.

Quando è in corso lo sviluppo, un'icona nell'angolo superiore destro mostra la percentuale di avanzamento. La pagina mostra anche messaggi dettagliati per l'operazione sotto l'area di esplorazione. Al termine della distribuzione, l'ultimo messaggio deve indicare Deployment successful.

L'endpoint precedente non funziona attualmente per i servizi app 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 comando az webapp deploy. 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, la distribuzione ZIP, il motore di distribuzione presuppone che un pacchetto ZIP sia pronto per l'esecuzione così com'è e non esegua alcuna automazione di compilazione. Per abilitare la stessa automazione di compilazione di una distribuzione Git, impostare l'impostazione dell'app SCM_DO_BUILD_DURING_DEPLOYMENT eseguendo il comando seguente in 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/EAR

È possibile distribuire il pacchetto WAR, JAR o EAR nel Servizio app di Azure 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 qui inserisce il pacchetto nella condivisione del contenuto dell'app con la convenzione di denominazione e la struttura di directory corrette (vedere Informazioni di riferimento sull'API di pubblicazione Kudu) ed è l'approccio consigliato. Se si distribuiscono invece pacchetti WAR/JAR/EAR usando FTP o WebDeploy, potrebbero verificarsi errori sconosciuti a causa di errori nella denominazione o nella struttura.

Distribuire un pacchetto WAR in Tomcat o JBoss EAP usando il comando az webapp deploy. 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 comando az webapp deploy con il parametro --type.

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 ed è pienamente personalizzabile.

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 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 dell'interfaccia della riga di comando come parametri di query URL. Per eseguire l'autenticazione con l'API REST Kudu, è consigliabile usare l'autenticazione 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 Richiesto Type
type war|jar|ear|lib|startup|static|zip Il tipo di artefatto distribuito, 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: distribuire uno script usato automaticamente dal Servizio app di Azure come script di avvio per l'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.
String
restart true|false Per impostazione predefinita, l'API riavvia l'app dopo l'operazione di distribuzione (restart=true). Per distribuire più artefatti, impedire i riavvii in tutti gli elementi, ma la distribuzione 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", "/home/site/scripts/helper.sh". No String

Passaggi successivi

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.

Altre risorse