Bestanden implementeren naar App Service

In dit artikel wordt beschreven hoe u uw code implementeert als een ZIP-, WAR-, JAR- of EAR-pakketvoor Azure App Service. U ziet ook hoe u afzonderlijke bestanden implementeert in App Service, gescheiden van uw toepassingspakket.

Vereisten

Als u de stappen in dit artikel wilt voltooien, maakt u App Service appof gebruikt u een app die u hebt gemaakt voor een andere zelfstudie.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Een ZIP-projectpakket maken

Notitie

Als u de bestanden in een ZIP-pakket hebt gedownload, moet u eerst de bestanden uitpakken. Als u bijvoorbeeld een ZIP-pakket hebt gedownload van GitHub, kunt u dat bestand niet implementeren zoals het is. GitHub voegt extra geneste directories toe, die niet werken met App Service.

Navigeer in een lokaal terminalvenster naar de hoofdmap van uw app-project.

Deze map moet het invoerbestand voor uw web-app bevatten, zoals index.html, index.php en app.js. Het kan ook pakketbeheerbestanden bevatten zoals project.js op , composer.js op , package.js op , bower.js op en requirements.txt.

Tenzij u App Service implementatieautomatisering voor u wilt uitvoeren, moet u alle buildtaken (bijvoorbeeld , , , en ) uitvoeren en ervoor zorgen dat u alle bestanden hebt die u nodig hebt om de app uit te npm bower gulp composer pip voeren. Deze stap is vereist als u uw pakket rechtstreeks wilt uitvoeren.

Maak een ZIP-archief van alle bestanden in uw project. Voor dotnet projecten is deze map de uitvoermap van de opdracht dotnet publish . De volgende opdracht maakt gebruik van het standaardhulpprogramma in de terminal:

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

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

Een ZIP-pakket implementeren

Wanneer u een ZIP-pakket implementeert, App Service de inhoud ervan uit in het standaardpad voor uw app D:\home\site\wwwroot (voor Windows, /home/site/wwwroot voor Linux).

Deze ZIP-pakketimplementatie maakt gebruik van dezelfde Kudu-service die continue implementaties op basis van integratie mogelijk maakt. Kudu ondersteunt de volgende functionaliteit voor de implementatie van ZIP-pakketten:

  • Het verwijderen van bestanden die zijn overgenomen van een vorige implementatie.
  • Optie om het standaard buildproces in te stellen, waaronder pakketherstel.
  • Implementatieaanpassing, inclusief het uitvoeren van implementatiescripts.
  • Implementatielogboeken.
  • Een pakketgroottelimiet van 2048 MB.

Zie onze Kudu-documentatie voor meer informatie.

Notitie

Bestanden in het ZIP-pakket worden alleen gekopieerd als de tijdstempels niet overeenkomen met wat al is geïmplementeerd. Het genereren van een zip met behulp van een buildproces dat uitvoer in de cache opgeslagen, kan leiden tot snellere implementaties. Zie Implementeren vanuit een ZIP-bestand of URLvoor meer informatie.

Implementeer een ZIP-pakket in uw web-app met behulp van de opdracht az webapp deploy. De CLI-opdracht maakt gebruik van de Kudu-publicatie-API om de bestanden te implementeren en kan volledig worden aangepast.

In het volgende voorbeeld wordt een ZIP-pakket naar uw site pusht. Geef het pad op naar uw lokale ZIP-pakket voor --src-path .

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

Met deze opdracht wordt de app opnieuw gestart nadat het ZIP-pakket is geïmplementeerd.

Afhankelijk van de netwerkconfiguratie van uw web-apps wordt directe toegang tot de site vanuit uw lokale omgeving mogelijk geblokkeerd. Als u uw code in dit scenario wilt implementeren, kunt u uw ZIP publiceren naar een opslagsysteem dat toegankelijk is vanuit de web-app en de app activeren om de ZIP-code op te halen uit de opslaglocatie, in plaats van het ZIP-bestand naar de web-app te pushen. Zie dit artikel over het implementeren naar web-apps die zijn beveiligd met het netwerk voor meer informatie.

In het volgende voorbeeld wordt de parameter gebruikt om de URL op te geven van --src-url een Azure Storage-account waar de site het ZIP-bestand uit moet halen.

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

Buildautomatisering inschakelen voor ZIP-implementatie

Standaard gaat de implementatie-engine ervan uit dat een ZIP-pakket gereed is om te worden uitgevoerd zoals het is en dat er geen buildautomatisering wordt uitgevoerd. Als u dezelfde buildautomatisering wilt inschakelen als in een Git-implementatie,stelt u de app-instelling in door de volgende opdracht uit te voeren in de SCM_DO_BUILD_DURING_DEPLOYMENT Cloud Shell:

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

Zie onze Kudu-documentatie voor meer informatie.

Wat gebeurt er met mijn app tijdens de implementatie?

Alle officieel ondersteunde implementatiemethoden brengen wijzigingen aan in de bestanden in de map /home/site/wwwroot van uw app. Deze bestanden worden gebruikt om uw app uit te voeren. De implementatie kan dus mislukken vanwege vergrendelde bestanden. De app gedraagt zich mogelijk ook onvoorspelbaar tijdens de implementatie, omdat de bestanden niet allemaal op hetzelfde moment worden bijgewerkt. Dit gedrag is ongewenst voor een klantgerichte app. Er zijn een aantal manieren om deze problemen te voorkomen:

WAR/JAR/EAR-pakketten implementeren

U kunt uw WAR-, JAR-of EAR-pakket implementeren in App Service om uw Java-web-app uit te voeren met behulp van de Azure CLI, PowerShell of de Kudu-publicatie-API.

Het implementatieproces plaatst het pakket correct op het gedeelde bestandsstation (zie Kudu publish API reference (Api-verwijzing voor Kudu-publicatie). Daarom wordt het niet aanbevolen WAR/JAR/EAR-pakketten te implementeren met FTP of WebDeploy.

Implementeer een WAR-pakket in Tomcat of JBoss EAP met behulp van de opdracht az webapp deploy. Geef het pad op naar uw lokale Java-pakket voor --src-path .

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

Afhankelijk van de netwerkconfiguratie van uw web-apps wordt directe toegang tot de site vanuit uw lokale omgeving mogelijk geblokkeerd. Als u uw code in dit scenario wilt implementeren, kunt u uw ZIP publiceren naar een opslagsysteem dat toegankelijk is vanuit de web-app en de app activeren om de ZIP-code op te halen uit de opslaglocatie, in plaats van het ZIP-bestand naar de web-app te pushen. Zie dit artikel over het implementeren naar web-apps die zijn beveiligd met het netwerk voor meer informatie.

In het volgende voorbeeld wordt de parameter gebruikt om de URL op te geven van --src-url een Azure Storage-account waar de web-app het ZIP-bestand uit moet halen.

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

De CLI-opdracht maakt gebruik van de Kudu-publicatie-API om het pakket te implementeren en kan volledig worden aangepast.

Afzonderlijke bestanden implementeren

Implementeer een opstartscript, bibliotheek en statisch bestand in uw web-app met behulp van de opdracht az webapp deploy met de parameter --type .

Als u een opstartscript op deze manier implementeert, App Service uw script automatisch gebruikt om uw app te starten.

De CLI-opdracht maakt gebruik van de Kudu-publicatie-API om de bestanden te implementeren en kan volledig worden aangepast.

Een opstartscript implementeren

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

Een bibliotheekbestand implementeren

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

Een statisch bestand implementeren

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

Api-naslaginformatie voor Kudu-publicatie

Met publish de Kudu-API kunt u dezelfde parameters van de CLI-opdracht opgeven als URL-queryparameters. Als u wilt verifiëren met de Kudu-API, kunt u basisverificatie gebruiken met de implementatiereferenties van uw app.

In de onderstaande tabel ziet u de beschikbare queryparameters, de toegestane waarden en beschrijvingen.

Sleutel Toegestane waarden Beschrijving Vereist Type
type war|jar|ear|lib|startup|static|zip Het type artefact dat wordt geïmplementeerd. Hiermee stelt u het standaarddoelpad in en informeert u de web-app hoe de implementatie moet worden verwerkt.
- type=zip: Implementeer een ZIP-pakket door de inhoud uit te pak in /home/site/wwwroot . path parameter is optioneel.
- type=war: Implementeer een WAR-pakket. Standaard wordt het WAR-pakket geïmplementeerd in /home/site/wwwroot/app.war . Het doelpad kan worden opgegeven met path .
- type=jar: Implementeer een JAR-pakket in /home/site/wwwroot/app.jar . De path parameter wordt genegeerd
- type=ear: Implementeer een EAR-pakket in /home/site/wwwroot/app.ear . De path parameter wordt genegeerd
- type=lib: Implementeer een JAR-bibliotheekbestand. Het bestand wordt standaard geïmplementeerd in /home/site/libs . Het doelpad kan worden opgegeven met path .
- type=static: Implementeer een statisch bestand (bijvoorbeeld een script). Het bestand wordt standaard geïmplementeerd in /home/site/scripts . Het doelpad kan worden opgegeven met path .
- type=startup: Implementeer een script dat App Service gebruikt als opstartscript voor uw app. Standaard wordt het script geïmplementeerd in voor D:\home\site\scripts\<name-of-source> Windows en home/site/wwwroot/startup.sh voor Linux. Het doelpad kan worden opgegeven met path .
Ja Tekenreeks
restart true|false De API start de app standaard opnieuw op na de implementatiebewerking ( restart=true ). Als u meerdere artefacten wilt implementeren, voorkomt u opnieuw opstarten op alle, behalve de uiteindelijke implementatie, door in te restart=false stellen. Nee Booleaans
clean true|false Hiermee geeft u op of de doelimplementatie moet worden opsschoond (verwijderd) voordat het artefact daar wordt geïmplementeerd. Nee Booleaans
ignorestack true|false De publicatie-API gebruikt de WEBSITE_STACK omgevingsvariabele om veilige standaardinstellingen te kiezen, afhankelijk van de taalstack van uw site. Als u deze parameter in false op instelt, worden alle taalspecifieke standaardwaarden uitgeschakeld. Nee Booleaans
path "<absolute-path>" Het absolute pad om het artefact in te implementeren. Bijvoorbeeld "/home/site/deployments/tools/driver.jar" , "/home/site/scripts/helper.sh" . Nee Tekenreeks

Volgende stappen

Voor meer geavanceerde implementatiescenario's kunt u proberen om in Azure te implementeren met Git. Met git-implementatie in Azure kunt u versiebeheer, pakketherstel, MSBuild en meer gebruiken.

Meer bronnen