Distribuera filer till App Service
Kommentar
Från och med den 1 juni 2024 har alla nyligen skapade App Service-appar möjlighet att generera ett unikt standardvärdnamn med hjälp av namngivningskonventionen <app-name>-<random-hash>.<region>.azurewebsites.net
. Befintliga appnamn förblir oförändrade.
Exempel: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Mer information finns i Unikt standardvärdnamn för App Service-resurs.
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
, , bower
gulp
, composer
och ) och pip
ser 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
(se anteckning överst).
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.
Nyckel | 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.