Freigeben über


Bereitstellen von Dateien in Azure App Service

In diesem Artikel erfahren Sie, wie Sie Ihren Code als ZIP-, WAR-, JAR- oder EAR-Paket für Azure App Service bereitstellen. Außerdem wird gezeigt, wie Sie einzelne Dateien in App Service bereitstellen, getrennt von Ihrem Anwendungspaket.

Voraussetzungen

Um die Schritte in diesem Artikel durchzuführen, erstellen Sie eine App Service-App, oder verwenden Sie eine App, die Sie für ein anderes Tutorial erstellt haben.

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Erstellen eines ZIP-Pakets für das Projekt

Wichtig

Wenn Sie das ZIP-Paket für die Bereitstellung erstellen, schließen Sie das Stammverzeichnis nicht ein. Fügen Sie nur die Dateien und Verzeichnisse in das Stammverzeichnis ein. Wenn Sie ein GitHub-Repository als ZIP-Datei herunterladen, können Sie diese Datei nicht unverändert in App Service bereitstellen. GitHub fügt geschachtelte Verzeichnisse auf oberster Ebene hinzu, was nicht mit App Service funktioniert.

Navigieren Sie in einem lokalen Terminalfenster zum Stammverzeichnis Ihres App-Projekts.

Dieses Verzeichnis sollte die Einstiegsdatei für Ihre Web-App enthalten, z. B. index.html, index.php und app.js. Sie kann auch Paketverwaltungsdateien wie project.json, composer.json, package.json, bower.json und requirements.txt enthalten.

Wenn Sie nicht möchten, dass Der App-Dienst die Bereitstellungsautomatisierung für Sie ausführt, führen Sie alle Buildaufgaben aus. Beispiel: npm, , bower, gulp, composerund pip. Stellen Sie sicher, dass Sie über alle Dateien verfügen, die Sie zum Ausführen der App benötigen. Dieser Schritt ist erforderlich, wenn Sie Ihr Paket direkt ausführen möchten.

Erstellen Sie ein ZIP-Archiv mit allen Elementen Ihres Projekts. Fügen Sie für dotnet-Projekte alles im Ausgabeverzeichnis des Befehls dotnet publish hinzu, mit Ausnahme des Ausgabeverzeichnisses selbst. Geben Sie beispielsweise den folgenden Befehl in Ihr Terminal ein, um ein ZIP-Paket zu erstellen, das den Inhalt des aktuellen Verzeichnisses enthält:

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

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

Bereitstellen eines ZIP-Pakets

Wenn Sie ein ZIP-Paket bereitstellen, entpackt Der App-Dienst seinen Inhalt im Standardpfad für Ihre App: D:\home\site\wwwroot für Windows und /home/site/wwwroot für Linux.

Bei dieser Bereitstellung per ZIP-Paket wird der gleiche Kudu-Dienst verwendet, der auch bei der Continuous Integration-basierten Bereitstellungen zum Einsatz kommt. Kudu unterstützt die folgenden Funktionen für die Bereitstellung per ZIP-Paket:

  • Löschen von Dateien, die aus einer vorherigen Bereitstellung übrig bleiben
  • Option zum Aktivieren des Standardmäßigen Buildprozesses, einschließlich Paketwiederherstellung
  • Bereitstellungsanpassung, einschließlich der Ausführung von Bereitstellungsskripts
  • Bereitstellungsprotokolle
  • Ein Paketgrößenlimit von 2.048 MB

Hinweis

Dateien im ZIP-Paket werden nur kopiert, wenn ihre Zeitstempel nicht mit dem übereinstimmen, was bereits bereitgestellt wurde.

Bereitstellen mit ZIP-Bereitstellungsbenutzeroberfläche in Kudu

  1. Öffnen Sie Ihre App im Azure-Portal, und wählen Sie Entwicklungstools>Erweiterte Tools aus, dann wählen Sie Öffnen.
  2. Wählen Sie in Kudu "Tools>ZIP Push Deploy" aus.
  3. Laden Sie das ZIP-Paket hoch, das Sie in "Projekt-ZIP-Paket erstellen" erstellt haben. Ziehen Sie es in den Datei-Explorer-Bereich auf der Webseite.

Wenn die Bereitstellung gerade ausgeführt wird, zeigt ein Symbol in der oberen rechten Ecke den Status in Prozent an. Auf der Seite werden auch Meldungen für den Vorgang unterhalb des Datei-Explorer-Bereichs angezeigt. Wenn die Bereitstellung abgeschlossen ist, sollte die letzte Meldung "Bereitstellung erfolgreich" sagen.

Dieser Endpunkt funktioniert derzeit nicht für App Service unter Linux. Verwenden Sie stattdessen FTP oder die ZIP Deploy-API.

Bereitstellen ohne ZIP-Bereitstellungsbenutzeroberfläche in Kudu

Stellen Sie mithilfe des az webapp deploy Befehls ein ZIP-Paket in Ihrer Web-App bereit. Der CLI-Befehl verwendet die Kudu-Veröffentlichungs-API zum Bereitstellen der Dateien und kann vollständig angepasst werden.

Im folgenden Beispiel wird ein ZIP-Paket an Ihre Website gepusht. Geben Sie den Pfad zu Ihrem lokalen ZIP-Paket für --src-path an.

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

Mit diesem Befehl wird die App nach der Bereitstellung des ZIP-Pakets neu gestartet.

Aktivieren der Buildautomatisierung für die ZIP-Bereitstellung

Standardmäßig geht die Bereitstellungs-Engine davon aus, dass ein ZIP-Paket ohne weitere Maßnahmen ausführungsfähig ist, und führt deshalb auch keine Buildautomatisierung aus. Um dieselbe Buildautomatisierung zu aktivieren, die in einer Git-Bereitstellung verwendet wird, legen Sie die SCM_DO_BUILD_DURING_DEPLOYMENT App-Einstellung fest. Führen Sie den folgenden Befehl in Azure Cloud Shell aus:

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

Weitere Informationen finden Sie in der Kudu-Dokumentation.

WAR-, JAR- oder EAR-Pakete bereitstellen

Sie können Ihr WAR-, JAR- oder EAR-Paket für App Service bereitstellen, um Ihre Java-Web-App mit der Azure CLI, PowerShell oder kudu-Veröffentlichungs-API auszuführen.

Der hier gezeigte Bereitstellungsprozess platziert das Paket unter Verwendung der richtigen Namenskonvention und Verzeichnisstruktur im Inhaltsbereich der App. Weitere Informationen finden Sie in der Referenz zur Kudu-Veröffentlichungs-API. Dieser Ansatz wird empfohlen. Wenn Sie stattdessen WAR-, JAR- oder EAR-Pakete mithilfe von FTP oder Web Deploy bereitstellen, werden möglicherweise unbekannte Fehler aufgrund von Fehlern in der Benennung oder Struktur angezeigt.

Stellen Sie mithilfe des az webapp deploy Befehls ein WAR-Paket für Tomcat oder JBoss EAP bereit. Geben Sie den Pfad zu Ihrem lokalen Java-Paket für --src-path an.

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

Der CLI-Befehl verwendet die Kudu-Veröffentlichungs-API zum Bereitstellen des Pakets und kann vollständig angepasst werden.

Bereitstellen einzelner Dateien

Stellen Sie ein Startskript, eine Bibliothek und eine statische Datei mithilfe des Befehls mit dem az webapp deploy--type Parameter in Ihrer Web-App bereit.

Wenn Sie ein Startskript auf diese Weise bereitstellen, verwendet App Service automatisch Ihr Skript, um Ihre App zu starten.

Der CLI-Befehl verwendet die Kudu-Veröffentlichungs-API zum Bereitstellen der Dateien. Der Befehl kann vollständig angepasst werden.

Bereitstellen eines Startskripts

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

Bereitstellen einer Bibliotheksdatei

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

Bereitstellen einer statischen Datei

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

Bereitstellen in netzwerkgeschützten Apps

Je nach Netzwerkkonfiguration Ihrer Web-App kann der direkte Zugriff auf die App aus Ihrer Entwicklungsumgebung blockiert werden. (Siehe Bereitstellen in durch das Netzwerk gesicherten Standorten und Bereitstellen in durch das Netzwerk gesicherten Standorten, Teil 2.) Anstatt das Paket oder die Datei direkt an die Web-App zu übertragen, können Sie es in einem Speichersystem veröffentlichen, auf das über die Web-App zugegriffen werden kann, und die App auslösen, um die ZIP-Datei aus dem Speicherort abzurufen.

Die Remote-URL kann ein beliebiger öffentlich zugänglicher Speicherort sein, aber es ist am besten, einen BLOB-Speichercontainer mit einem SAS-Schlüssel (Shared Access Signature) zu verwenden, um ihn zu schützen.

Verwenden Sie den Befehl az webapp deploy wie in den anderen Abschnitten, verwenden Sie jedoch --src-url anstelle von --src-path. Im folgenden Beispiel wird der --src-url-Parameter verwendet, um die URL einer ZIP-Datei anzugeben, die in einem Azure Storage-Konto gehostet wird.

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

Referenz zur Kudu-Veröffentlichungs-API

Mit der publish Kudu-API können Sie die gleichen Parameter aus dem CLI-Befehl wie URL-Abfrageparameter angeben. Es wird empfohlen, zur Authentifizierung bei der Kudu-REST-API die Tokenauthentifizierung zu verwenden. Sie können aber auch die Standardauthentifizierung mit den Anmeldeinformationen für die Bereitstellung Ihrer App verwenden.

Die folgende Tabelle zeigt die verfügbaren Abfrageparameter, ihre zulässigen Werte und Beschreibungen.

Schlüssel Zulässige Werte Beschreibung Erforderlich Typ
type war|jar|ear|lib|startup|static|zip Dies ist der Typ des Artefakts, das bereitgestellt wird. Er legt den Standardzielpfad fest und informiert die Web-App, wie die Bereitstellung durchgeführt werden soll.

type=zip: Bereitstellen eines ZIP-Pakets durch Entzippen des Inhalts in /home/site/wwwroot. Der Parameter target-path ist optional.

type=war: Bereitstellen eines WAR-Pakets. Standardmäßig wird das WAR-Paket in /home/site/wwwroot/app.war bereitgestellt. Der Zielpfad kann mit target-path angegeben werden.

type=jar: Bereitstellen eines JAR-Pakets auf /home/site/wwwroot/app.jar. Der Parameter target-path wird ignoriert.

type=ear: Implementieren eines EAR-Pakets auf /home/site/wwwroot/app.ear. Der Parameter target-path wird ignoriert.

type=lib: Stellen Sie eine JAR-Bibliotheksdatei bereit. Standardmäßig wird die Datei in /home/site/libs bereitgestellt. Der Zielpfad kann mit target-path angegeben werden.

type=static: Stellen Sie eine statische Datei bereit, z. B. ein Skript. Standardmäßig wird die Datei in /home/site/wwwroot bereitgestellt.

type=startup: Stellen Sie ein Skript bereit, das App Service automatisch als Startskript für Ihre App verwendet. Standardmäßig wird das Skript in D:\home\site\scripts\<name-of-source> für Windows und home/site/wwwroot/startup.sh für Linux bereitgestellt. Der Zielpfad kann mit target-path angegeben werden.
Ja Schnur
restart true|false Standardmäßig startet die API die App nach dem Bereitstellungsvorgang (restart=true) neu. Wenn Sie mehrere Artefakte bereitstellen, können Sie Neustarts für alle außer der endgültigen Bereitstellung verhindern, indem Sie festlegen restart=false. Nein Boolescher Wert
clean true|false Gibt an, ob die Zielbereitstellung bereinigt (gelöscht) werden soll, bevor das Artefakt dort bereitgestellt wird Nein Boolescher Wert
ignorestack true|false Die Veröffentlichungs-API verwendet die Umgebungsvariable WEBSITE_STACK, um je nach Sprachstapel Ihrer Website sichere Standardwerte zu wählen. Wenn Sie diesen Parameter auf false festlegen, werden alle sprachspezifischen Standardwerte deaktiviert. Nein Boolescher Wert
target-path Ein absoluter Pfad Der absolute Pfad, in dem das Artefakt bereitgestellt werden soll Zum Beispiel: /home/site/deployments/tools/driver.jar oder /home/site/scripts/helper.sh. Nein Schnur

Für komplexere Bereitstellungsszenarien versuchen Sie die Bereitstellung in Azure mit Git. Die Git-basierte Bereitstellung in Azure ermöglicht Versionskontrolle, Paketwiederherstellung, MSBuild und mehr.