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:
- Kör appen direkt från ZIP-paketetutan att packa upp den.
- Stoppa appen eller aktivera offlineläge för den under distributionen. Mer information finns i Hantera låsta filer under distributionen.
- Distribuera till en mellanlagringsplats med automatisk växling aktiverat.
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.