Distribuera filer till App Service

Den här artikeln visar hur du distribuerar din kod 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 programpaketet.

Förutsättningar

Slutför stegen i den här artikeln genom att skapa en App Service eller användaen app som du har skapat för en annan självstudie.

Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.

Skapa ett ZIP-projektpaket

Anteckning

Om du har laddat ned filerna i ett ZIP-paket extraherar du filerna först. Om du till exempel har laddat ned ett ZIP-paket GitHub kan du inte distribuera filen som den är. GitHub lägger till ytterligare kapslade kataloger, som inte fungerar med App Service.

I ett lokalt terminalfönster navigerar du till approjektets rotkatalog.

Den här katalogen ska innehålla postfilen till webbappen, till exempelindex.html, index.php och app.js. Den kan också innehålla pakethanteringsfiler somproject.js på , composer.jspå, package.js på , bower.jspå och requirements.txt.

Om du inte App Service att köra distributionsautomatisering åt dig, kör du alla bygguppgifter (till exempel , , , och ) och ser till att du har alla filer som du behöver för att köra npm bower gulp composer pip 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 den här mappen utdatamappen för kommandot dotnet publish . Följande kommando använder standardverktyget i terminalen:

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

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

Distribuera ett ZIP-paket

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

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

  • Borttagning av filer som är kvar från en tidigare distribution.
  • Alternativ för att aktivera standardbyggprocessen, vilket innefattar paketåterställning.
  • Distributionsanpassning, inklusive körning av distributionsskript.
  • Distributionsloggar.
  • En paketstorleksgräns på 2 048 MB.

Mer information finns i Kudu-dokumentationen.

Anteckning

Filer i ZIP-paketet kopieras bara om deras tidsstämplar inte matchar det som redan har distribuerats. Att generera en zip-fil med hjälp av en byggprocess som cachelagrar utdata kan resultera i snabbare distributioner. Mer information finns i Distribuera från en ZIP-fileller URL.

Distribuera ett ZIP-paket till din webbapp 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 push-pushar vi ett ZIP-paket till webbplatsen. 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.

Beroende på dina webbappars nätverkskonfiguration kan direktåtkomst till webbplatsen från din lokala miljö blockeras. Om du vill distribuera din kod i det här scenariot kan du publicera zip-filen till ett lagringssystem som är tillgängligt från webbappen och utlösa appen för att hämta ZIP-filen från lagringsplatsen i stället för att skicka ZIP-filen till webbappen. Mer information finns i den här artikeln om att distribuera till nätverkssäkra webbappar.

I följande exempel används --src-url parametern för att ange URL:en för ett Azure Storage-konto som platsen ska hämta ZIP-filen från.

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

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-distributionanger du appinställningen genom att SCM_DO_BUILD_DURING_DEPLOYMENT 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.

Vad händer med min app under distributionen?

Alla distributionsmetoder som stöds officiellt gör ändringar i filerna i mappen /home/site/wwwroot i din app. De här filerna används för att köra din app. Distributionen kan därför misslyckas på grund av låsta filer. Appen kan också bete sig oförutsägbart under distributionen eftersom alla filer inte uppdateras samtidigt. Det här beteendet är oönskat för en kundriktad app. Det finns några sätt att undvika dessa problem:

Distribuera WAR/JAR/EAR-paket

Du kan distribuera war-, JAR-eller EAR-paketet till App Service att köra Java-webbappen med hjälp av Azure CLI, PowerShell eller Kudu-publicerings-API:et.

Distributionsprocessen placerar paketet på den delade filenheten korrekt (se Kudu-publicerings-API-referens). Därför rekommenderas inte distribution av WAR/JAR/EAR-paket med FTP eller WebDeploy.

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

Beroende på dina webbappars nätverkskonfiguration kan direktåtkomst till webbplatsen från din lokala miljö blockeras. Om du vill distribuera din kod i det här scenariot kan du publicera zip-filen till ett lagringssystem som är tillgängligt från webbappen och utlösa appen för att hämta ZIP-filen från lagringsplatsen i stället för att skicka ZIP-filen till webbappen. Mer information finns i den här artikeln om att distribuera till nätverkssäkra webbappar.

I följande exempel används --src-url parametern för att ange URL:en för ett Azure Storage-konto som webbappen ska hämta ZIP-filen från.

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

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 --type parametern .

Om du distribuerar ett startskript på det här sättet 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

Api-referens för Kudu-publicering

Med publish Kudu-API:et kan du ange samma parametrar från CLI-kommandot som URL-frågeparametrar. Om du vill autentisera med Kudu-API:et kan du använda grundläggande autentisering med appens autentiseringsuppgifter för distribution.

Tabellen nedan visar tillgängliga frågeparametrar, deras tillåtna värden och beskrivningar.

Nyckel Tillåtna värden Beskrivning Krävs Typ
type war|jar|ear|lib|startup|static|zip Typen av artefakt som distribueras anger standardsökvägen för målet och informerar webbappen om hur distributionen ska hanteras.
- type=zip: Distribuera ett ZIP-paket genom att packa upp innehållet till /home/site/wwwroot . 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 path .
- type=jar: Distribuera ett JAR-paket till /home/site/wwwroot/app.jar . Parametern path ignoreras
- type=ear: Distribuera ett EAR-paket till /home/site/wwwroot/app.ear . Parametern path ignoreras
- type=lib: Distribuera en JAR-biblioteksfil. Som standard distribueras filen till /home/site/libs . Målsökvägen kan anges med path .
- type=static: Distribuera en statisk fil (t.ex. ett skript). Som standard distribueras filen till /home/site/scripts . Målsökvägen kan anges med path .
- type=startup: Distribuera ett skript som App Service automatiskt använder som startskript för din app. Som standard distribueras skriptet till för D:\home\site\scripts\<name-of-source> Windows home/site/wwwroot/startup.sh och för Linux. Målsökvägen kan anges med path .
Ja Sträng
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 . Inga Boolesk
clean true|false Anger om måldistributionen ska rensas (tas bort) innan artefakten distribueras där. Inga Boolesk
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 anger den false här parametern till inaktiveras eventuella språkspecifika standardinställningar. Inga Boolesk
path "<absolute-path>" Den absoluta sökvägen att distribuera artefakten till. Till exempel "/home/site/deployments/tools/driver.jar" , "/home/site/scripts/helper.sh" . Inga Sträng

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