Distribuera filer till App Service

Den här artikeln visar hur du distribuerar koden som ett ZIP-, WAR-, JAR- eller EAR-paket till Azure App Service. Den visar också hur du distribuerar enskilda filer till App Service, separat från ditt programpaket.

Förutsättningar

Om du vill slutföra stegen i den här artikeln skapar du en App Service-app eller använder en app som du har skapat för en annan självstudie.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Skapa ett projekt-ZIP-paket

Viktigt!

När du skapar ZIP-paketet för distribution ska du inte ta med rotkatalogen, utan bara filerna och katalogerna i den. Om du laddar ned en GitHub-lagringsplats som en ZIP-fil kan du inte distribuera filen som den är till App Service. GitHub lägger till ytterligare kapslade kataloger på den översta nivån, som inte fungerar med App Service.

I ett lokalt terminalfönster navigerar du till rotkatalogen för ditt appprojekt.

Den här katalogen bör innehålla postfilen till webbappen, till exempel index.html, index.php och app.js. Den kan också innehålla pakethanteringsfiler som project.json, composer.json, package.json, bower.json och requirements.txt.

Om du inte vill att App Service ska köra distributionsautomation åt dig kör du alla bygguppgifter (till exempel npm, , bowergulp, composeroch ) och pipser till att du har alla filer som du behöver för att köra appen. Det här steget krävs om du vill köra paketet direkt.

Skapa ett ZIP-arkiv med allt i projektet. För dotnet projekt är detta allt i utdatakatalogen för dotnet publish kommandot (exklusive själva utdatakatalogen). Följande kommando i terminalen för att skapa ett ZIP-paket med innehållet i den aktuella katalogen:

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

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

Distribuera ett ZIP-paket

När du distribuerar ett ZIP-paket packar App Service upp innehållet i standardsökvägen för din app (D:\home\site\wwwroot för Windows, /home/site/wwwroot för Linux).

Den här ZIP-paketdistributionen använder samma Kudu-tjänst som driver kontinuerliga integreringsbaserade distributioner. Kudu har stöd för följande funktioner för distribution av ZIP-paket:

  • Borttagning av filer som har lämnats över från en tidigare distribution.
  • Alternativ för att aktivera standardversionsprocessen, som innehåller paketåterställning.
  • Distributionsanpassning, inklusive körning av distributionsskript.
  • Distributionsloggar.
  • En paketstorleksgräns på 2 048 MB.

Kommentar

Filer i ZIP-paketet kopieras endast om deras tidsstämplar inte matchar det som redan har distribuerats.

Med zip deploy UI i Kudu

I webbläsaren navigerar du till https://<app_name>.scm.azurewebsites.net/ZipDeployUI.

Ladda upp ZIP-paketet som du skapade i Skapa ett projekt-ZIP-paket genom att dra det till utforskarens område på webbsidan.

När distribueringen pågår visar en ikon i det övre högra hörnet förloppet i procent. På sidan visas även utförliga meddelanden för åtgärden under utforskarområdet. När distributionen är klar ska det sista meddelandet stå Deployment successful.

Slutpunkten ovan fungerar inte för Linux App Services just nu. Överväg att använda FTP eller ZIP-distributions-API:et i stället.

Utan zip-distribution av användargränssnittet i Kudu

Distribuera ett ZIP-paket till webbappen med hjälp av kommandot az webapp deploy . CLI-kommandot använder Kudu-publicerings-API:et för att distribuera filerna och kan anpassas helt.

I följande exempel skickas ett ZIP-paket till din webbplats. Ange sökvägen till ditt lokala ZIP-paket för --src-path.

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

Det här kommandot startar om appen när zip-paketet har distribuerats.

Aktivera byggautomatisering för zip-distribution

Som standard förutsätter distributionsmotorn att ett ZIP-paket är redo att köras som det är och inte kör någon byggautomatisering. Om du vill aktivera samma byggautomatisering som i en Git-distribution anger du appinställningen SCM_DO_BUILD_DURING_DEPLOYMENT genom att köra följande kommando i Cloud Shell:

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

Mer information finns i Kudu-dokumentationen.

Distribuera WAR/JAR/EAR-paket

Du kan distribuera ditt WAR-, JAR- eller EAR-paket till App Service för att köra din Java-webbapp med azure CLI, PowerShell eller Kudu-publicerings-API:et.

Distributionsprocessen som visas här placerar paketet på appens innehållsresurs med rätt namngivningskonvention och katalogstruktur (se Kudu publicera API-referens) och det är den rekommenderade metoden. Om du distribuerar WAR/JAR/EAR-paket med FTP eller WebDeploy i stället kan du se okända fel på grund av misstag i namngivningen eller strukturen.

Distribuera ett WAR-paket till Tomcat eller JBoss EAP med hjälp av kommandot az webapp deploy . Ange sökvägen till ditt lokala Java-paket för --src-path.

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

CLI-kommandot använder Kudu-publicerings-API:et för att distribuera paketet och kan anpassas helt.

Distribuera enskilda filer

Distribuera ett startskript, ett bibliotek och en statisk fil till webbappen med hjälp av kommandot az webapp deploy med parametern --type .

Om du distribuerar ett startskript på det här sättet använder App Service automatiskt skriptet för att starta appen.

CLI-kommandot använder Kudu-publicerings-API:et för att distribuera filerna och kan anpassas helt.

Distribuera ett startskript

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

Distribuera en biblioteksfil

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

Distribuera en statisk fil

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

Distribuera till nätverksskyddade appar

Beroende på webbappens nätverkskonfiguration kan direktåtkomst till appen från utvecklingsmiljön blockeras (se Distribuera till nätverksskyddade platser och Distribuera till nätverksskyddade platser, del 2). I stället för att skicka paketet eller filen direkt till webbappen kan du publicera det till ett lagringssystem som är tillgängligt från webbappen och utlösa appen för att hämta ZIP-filen från lagringsplatsen.

Fjärr-URL:en kan vara valfri offentligt tillgänglig plats, men det är bäst att använda en bloblagringscontainer med en SAS-nyckel för att skydda den.

Använd kommandot az webapp deploy som du skulle göra i de andra avsnitten, men använd --src-url i stället för --src-path. I följande exempel används parametern --src-url för att ange URL:en för en ZIP-fil som finns i ett Azure Storage-konto.

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

Kudu publicera API-referens

Med publish Kudu-API:et kan du ange samma parametrar från CLI-kommandot som URL-frågeparametrar. För att autentisera med Kudu REST API är det bäst att använda tokenautentisering, men du kan också använda grundläggande autentisering med appens autentiseringsuppgifter för distribution.

I följande tabell visas tillgängliga frågeparametrar, deras tillåtna värden och beskrivningar.

Key Tillåtna värden beskrivning Obligatoriskt Typ
type war|jar|ear|lib|startup|static|zip Typen av artefakt som distribueras anger standardmålsökvägen och informerar webbappen om hur distributionen ska hanteras.
- type=zip: Distribuera ett ZIP-paket genom att packa upp innehållet till /home/site/wwwroot. target-path parametern är valfri.
- type=war: Distribuera ett WAR-paket. Som standard distribueras WAR-paketet till /home/site/wwwroot/app.war. Målsökvägen kan anges med target-path.
- type=jar: Distribuera ett JAR-paket till /home/site/wwwroot/app.jar. Parametern target-path ignoreras
- type=ear: Distribuera ett EAR-paket till /home/site/wwwroot/app.ear. Parametern target-path ignoreras
- type=lib: Distribuera en JAR-biblioteksfil. Som standard distribueras filen till /home/site/libs. Målsökvägen kan anges med target-path.
- type=static: Distribuera en statisk fil (till exempel ett skript). Som standard distribueras filen till /home/site/wwwroot.
- type=startup: Distribuera ett skript som App Service automatiskt använder som startskript för din app. Som standard distribueras skriptet till D:\home\site\scripts\<name-of-source> för Windows och home/site/wwwroot/startup.sh för Linux. Målsökvägen kan anges med target-path.
Ja String
restart true|false Som standard startar API:et om appen efter distributionsåtgärden (restart=true). Om du vill distribuera flera artefakter förhindrar du omstarter av alla utom den slutliga distributionen genom att ange restart=false. Nej Booleskt
clean true|false Anger om måldistributionen ska rensas (tas bort) innan artefakten distribueras där. Nej Booleskt
ignorestack true|false Publicerings-API:et WEBSITE_STACK använder miljövariabeln för att välja säkra standardvärden beroende på webbplatsens språkstack. Om du ställer in den här parametern på false inaktiveras alla språkspecifika standardvärden. Nej Booleskt
target-path En absolut sökväg Den absoluta sökväg som artefakten ska distribueras till. Till exempel "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh". Nej String

Nästa steg

Om du vill ha mer avancerade distributionsscenarier kan du prova att distribuera till Azure med Git. Git-baserad distribution till Azure möjliggör versionskontroll, paketåterställning, MSBuild med mera.

Fler resurser