Distribuire file in servizio app

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

Prerequisiti

Per completare i passaggi descritti in questo articolo, creare un'app servizio app o 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'è per servizio app. GitHub aggiunge altre directory annidate al livello superiore, che non funzionano con 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 non si voglia servizio app eseguire automaticamente l'automazione della distribuzione, eseguire tutte le attività di compilazione ( ad esempio , npm, composerbowergulp, , e pip) e assicurarsi di disporre di tutti i file necessari per eseguire l'app. Questo passaggio è obbligatorio se si vuole eseguire direttamente il pacchetto.

Creare un archivio ZIP per tutti gli elementi del progetto. Per dotnet i progetti, questo è tutto nella directory di output del dotnet publish comando (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, servizio app decomprime il relativo contenuto nel percorso predefinito dell'app (D:\home\site\wwwroot per Windows, /home/site/wwwroot per Linux).

Questa distribuzione di pacchetti ZIP usa lo stesso servizio Kudu che supporta distribuzioni continue basate sull'integrazione. Kudu supporta le funzionalità seguenti per la distribuzione di pacchetti 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 deploy UI in Kudu

Nel browser passare a https://<app_name>.scm.azurewebsites.net/ZipDeployUI.

Caricare il pacchetto ZIP creato in Creare un pacchetto ZIP di progetto trascinandolo nell'area esplora file nella 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 servizio app Linux. È consigliabile usare FTP o l'API di distribuzione ZIP.

Senza zip deploy UI 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 e può essere completamente personalizzato.

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 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 in 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 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 --type parametro .

Se si distribuisce uno script di avvio in questo modo, servizio app 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 e 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 per proteggerlo.

Usare il az webapp deploy comando come nelle altre sezioni, ma usare --src-url invece di --src-path. Nell'esempio seguente viene usato il --src-url parametro per specificare l'URL di un file ZIP ospitato in un account 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 publish Kudu consente di specificare gli stessi parametri del comando dell'interfaccia della riga di comando dei 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.

Key Valori consentiti Descrizione Obbligatorio 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 target-path parametro viene ignorato
- type=ear: distribuire un pacchetto EAR in /home/site/wwwroot/app.ear. Il target-path parametro 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 che servizio app usa automaticamente 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 WEBSITE_STACK variabile di ambiente 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