Lokale Git-Bereitstellung in Azure App ServiceLocal Git deployment to Azure App Service

In dieser Anleitung erfahren Sie, wie Sie Ihre App aus einem Git-Repository auf dem lokalen Computer in Azure App Service bereitstellen.This how-to guide shows you how to deploy your app to Azure App Service from a Git repository on your local computer.

VoraussetzungenPrerequisites

Ausführen der Schritte in dieser Anleitung:To follow the steps in this how-to guide:

  • Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

  • Git installieren.Install Git.

  • Über ein lokales Git-Repository mit dem Code verfügen, den Sie bereitstellen möchten.Have a local Git repository with code you want to deploy. Führen Sie zum Herunterladen eines Beispielrepositorys den folgenden Befehl in Ihrem lokalen Terminalfenster aus:To download a sample repository, run the following command in your local terminal window:

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

Vorbereiten Ihres RepositorysPrepare your repository

Um automatische Builds vom Azure App Service-Kudu-Buildserver zu erhalten, muss das Stammverzeichnis Ihres Repositorys die richtigen Dateien enthalten.To get automatic builds from Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

TypRuntime StammverzeichnisdateienRoot directory files
ASP.NET (nur Windows)ASP.NET (Windows only) *.sln, *.csproj oder default.aspx*.sln, *.csproj, or default.aspx
ASP.NET CoreASP.NET Core *.sln oder *.csproj*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (nur Linux)Ruby (Linux only) GemfileGemfile
Node.jsNode.js server.js, app.js oder package.json mit einem Startskriptserver.js, app.js, or package.json with a start script
PythonPython *.py, requirements.txt oder runtime.txt*.py, requirements.txt, or runtime.txt
HTMLHTML default.htm, default.html, default.asp, index.htm, index.html oder iisstart.htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
WebJobsWebJobs <job_name>/run.<extension><job_name>/run.<extension> unter App_Data/jobs/continuous (für fortlaufende WebJobs) oder App_Data/jobs/triggered (für ausgelöste WebJobs).under App_Data/jobs/continuous for continuous WebJobs, or App_Data/jobs/triggered for triggered WebJobs. Weitere Informationen finden Sie in der Kudu-Dokumentation zu WebJobs.For more information, see Kudu WebJobs documentation.
FunctionsFunctions Siehe Kontinuierliche Bereitstellung für Azure Functions.See Continuous deployment for Azure Functions.

Zum Anpassen Ihrer Bereitstellung schließen Sie eine Datei vom Typ .deployment im Repositorystamm ein.To customize your deployment, include a .deployment file in the repository root. Weitere Informationen finden Sie unter Anpassen von Bereitstellungen und Benutzerdefiniertes Bereitstellungsskript.For more information, see Customize deployments and Custom deployment script.

Hinweis

Wenn Sie in Visual Studio entwickeln, kann Visual Studio ein Repository für Sie erstellen.If you develop in Visual Studio, let Visual Studio create a repository for you. Das Projekt kann sofort über Git bereitgestellt werden.The project is immediately ready to be deployed by using Git.

Verwenden von Azure Cloud ShellUse Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Starten von Azure Cloud Shell:To start Azure Cloud Shell:

OptionOption Beispiel/LinkExample/Link
Klicken Sie in der rechten oberen Ecke eines Codeblocks auf Ausprobieren.Select Try It in the upper-right corner of a code block. Durch die Auswahl von Ausprobieren wird der Code nicht automatisch in Cloud Shell kopiert.Selecting Try It doesn't automatically copy the code to Cloud Shell. Beispiel für „Testen Sie es.“ für Azure Cloud Shell
Rufen Sie https://shell.azure.com auf, oder wählen Sie die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Starten von Cloud Shell in einem neuen FensterLaunch Cloud Shell in a new window
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Cloud Shell-Schaltfläche im Azure-Portal

Ausführen des Codes in diesem Artikel in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Starten Sie Cloud Shell.Start Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren für einen Codeblock, um den Code zu kopieren.Select the Copy button on a code block to copy the code.

  3. Fügen Sie den Code mit STRG+UMSCHALT+V unter Windows und Linux oder Cmd+UMSCHALT+V unter macOS in die Cloud Shell-Sitzung ein.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Drücken Sie die EINGABETASTE, um den Code auszuführen.Select Enter to run the code.

Bereitstellen mit Kudu-BuildserverDeploy with Kudu build server

Die einfachste Möglichkeit zum Aktivieren einer lokalen Git-Bereitstellung für Ihre App mit dem Kudu App Service-Buildserver ist die Verwendung von Azure Cloud Shell.The easiest way to enable local Git deployment for your app with the Kudu App Service build server is to use Azure Cloud Shell.

Konfigurieren eines BereitstellungsbenutzersConfigure a deployment user

Für die Bereitstellung in einer Azure-Web-App über FTP oder ein lokales Git kann ein Bereitstellungsbenutzer verwendet werden.FTP and local Git can deploy to an Azure web app by using a deployment user. Nach der Konfiguration des Bereitstellungsbenutzers können Sie ihn für alle Azure-Bereitstellungen verwenden.Once you configure your deployment user, you can use it for all your Azure deployments. Der Benutzername und das Kennwort für die Bereitstellung auf Kontoebene unterscheiden sich von den Anmeldeinformationen für Ihr Azure-Abonnement.Your account-level deployment username and password are different from your Azure subscription credentials.

Führen Sie zum Konfigurieren des Bereitstellungsbenutzers den Befehl az webapp deployment user set in Azure Cloud Shell aus.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Ersetzen Sie <username> und <password> durch Ihren Benutzernamen bzw. Ihr Kennwort für die Bereitstellung.Replace <username> and <password> with a deployment user username and password.

  • Der Benutzername muss in Azure eindeutig sein und darf bei lokalen Git-Pushes nicht das Symbol „@“ enthalten.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • Das Kennwort muss mindestens acht Zeichen lang sein und zwei der folgenden drei Elemente enthalten: Buchstaben, Zahlen und Symbole.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

In der JSON-Ausgabe wird das Kennwort als null angezeigt.The JSON output shows the password as null. Wenn Sie den Fehler 'Conflict'. Details: 409 erhalten, müssen Sie den Benutzernamen ändern.If you get a 'Conflict'. Details: 409 error, change the username. Wenn Sie den Fehler 'Bad Request'. Details: 400 erhalten, müssen Sie ein sichereres Kennwort verwenden.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Notieren Sie Ihren Benutzernamen und Ihr Kennwort für die Bereitstellung Ihrer Web-Apps.Record your username and password to use to deploy your web apps.

Abrufen der Bereitstellungs-URLGet the deployment URL

Um die URL zum Aktivieren der lokalen Git-Bereitstellung für eine vorhandene App abzurufen, führen Sie az webapp deployment source config-local-git in Cloud Shell aus.To get the URL to enable local Git deployment for an existing app, run az webapp deployment source config-local-git in the Cloud Shell. Ersetzen Sie <app-name> und <group-name> durch die Namen Ihrer App und der zugehörigen Azure-Ressourcengruppe.Replace <app-name> and <group-name> with the names of your app and its Azure resource group.

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

Hinweis

Wenn Sie einen Linux-App Service-Plan verwenden, müssen Sie diesen Parameter hinzufügen: --runtime python|3.7If you are using a linux app-service-plan, you need to add this parameter: --runtime python|3.7

Oder führen Sie zum Erstellen einer neuen Git-fähigen App az webapp create in Cloud Shell mit dem Parameter --deployment-local-git aus.Or, to create a new Git-enabled app, run az webapp create in the Cloud Shell with the --deployment-local-git parameter. Ersetzen Sie <app-name>, <group-name> und <plan-name> durch die Namen für Ihre neue Git-App, die zugehörige Azure-Ressourcengruppe und den zugehörigen Azure App Service-Plan.Replace <app-name>, <group-name>, and <plan-name> with the names for your new Git app, its Azure resource group, and its Azure App Service plan.

az webapp create --name <app-name> --resource-group <group-name> --plan <plan-name> --deployment-local-git

Beide Befehle geben eine URL zurück wie https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git.Either command returns a URL like: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Verwenden Sie diese URL zum Bereitstellen Ihrer App im nächsten Schritt.Use this URL to deploy your app in the next step.

Statt diese URL auf Kontoebene zu verwenden, können Sie auch lokales Git mithilfe von Anmeldeinformationen auf App-Ebene aktivieren.Instead of using this account-level URL, you can also enable local Git by using app-level credentials. Azure App Service generiert diese Anmeldeinformationen automatisch für jede App.Azure App Service automatically generates these credentials for every app.

Rufen Sie die App-Anmeldeinformationen ab, indem Sie den folgenden Befehl in Cloud Shell ausführen.Get the app credentials by running the following command in the Cloud Shell. Ersetzen Sie <app-name> und <group-name> durch die Namen Ihrer App und der zugehörigen Azure-Ressourcengruppe.Replace <app-name> and <group-name> with your app's name and Azure resource group name.

az webapp deployment list-publishing-credentials --name <app-name> --resource-group <group-name> --query scmUri --output tsv

Verwenden Sie die zurückgegebene URL im nächsten Schritt zum Bereitstellen Ihrer App.Use the URL that returns to deploy your app in the next step.

Bereitstellen der Web-AppDeploy the web app

  1. Öffnen Sie ein lokales Terminalfenster, und fügen Sie Ihrem lokalen Git-Repository ein Azure-Remoterepository hinzu.Open a local terminal window to your local Git repository, and add an Azure remote. Ersetzen Sie im folgenden Befehl <url> durch die benutzerspezifische URL für die Bereitstellung oder die App-spezifische URL, die Sie im vorherigen Schritt abgerufen haben.In the following command, replace <url> with the deployment user-specific URL or app-specific URL you got from the previous step.

    git remote add azure <url>
    
  2. Übertragen Sie mithilfe von Push mit git push azure master zum Azure-Remoterepository.Push to the Azure remote with git push azure master.

  3. Geben Sie im Fenster Git-Anmeldeinformationsverwaltung Ihr Benutzerkennwort für die Bereitstellung und nicht Ihr Azure-Kennwort für die Anmeldung ein.In the Git Credential Manager window, enter your deployment user password, not your Azure sign-in password.

  4. Überprüfen Sie die Ausgabe.Review the output. Sie enthält möglicherweise eine laufzeitspezifische Automatisierung wie MSBuild für ASP.NET, npm install für Node.js und pip install für Python.You may see runtime-specific automation, such as MSBuild for ASP.NET, npm install for Node.js, and pip install for Python.

  5. Navigieren Sie im Azure-Portal zu Ihrer App, um zu überprüfen, ob der Inhalt bereitgestellt wurde.Browse to your app in the Azure portal to verify that the content is deployed.

Bereitstellen mit Azure Pipelines-BuildsDeploy with Azure Pipelines builds

Wenn Ihr Konto über die erforderlichen Berechtigungen verfügt, können Sie Azure Pipelines (Vorschau) einrichten, um die lokale Git-Bereitstellung für Ihre App zu aktivieren.If your account has the necessary permissions, you can set up Azure Pipelines (Preview) to enable local Git deployment for your app.

  • Ihr Azure-Konto muss über Berechtigungen zum Schreiben in Azure Active Directory und zum Erstellen eines Diensts verfügen.Your Azure account must have permissions to write to Azure Active Directory and create a service.

  • Ihr Azure-Konto muss in Ihrem Azure-Abonnement über die Rolle Besitzer verfügen.Your Azure account must have the Owner role in your Azure subscription.

  • Sie müssen ein Administrator in dem Azure DevOps-Projekt sein, das Sie verwenden möchten.You must be an administrator in the Azure DevOps project you want to use.

So aktivieren Sie die lokale Git-Bereitstellung für Ihre App mit Azure Pipelines (Vorschau):To enable local Git deployment for your app with Azure Pipelines (Preview):

  1. Suchen Sie im Azure-Portal nach App Services, und wählen Sie den Eintrag aus.In the Azure portal, search for and select App Services.

  2. Wählen Sie Ihre Azure App Service-App und dann im linken Menü Bereitstellungscenter aus.Select your Azure App Service app and select Deployment Center in the left menu.

  3. Wählen Sie auf der Seite Bereitstellungscenter nacheinander Lokales Git und dann Weiter aus.On the Deployment Center page, select Local Git, and then select Continue.

    „Lokales Git“ und dann „Weiter“ auswählen

  4. Wählen Sie auf der Seite Buildanbieter nacheinander Azure Pipelines (Vorschau) und dann Weiter aus.On the Build provider page, select Azure Pipelines (Preview), and then select Continue.

    „Azure Pipelines (Vorschau)“ und dann „Weiter“ auswählen

  5. Konfigurieren Sie auf der Seite Konfigurieren eine neue Azure DevOps-Organisation, oder geben Sie eine vorhandene Organisation an. Wählen Sie dann Weiter aus.On the Configure page, configure a new Azure DevOps organization, or specify an existing organization, and then select Continue.

    Hinweis

    Wenn Ihre vorhandene Azure DevOps-Organisation nicht aufgeführt ist, müssen Sie sie möglicherweise mit Ihrem Azure-Abonnement verknüpfen.If your existing Azure DevOps organization isn't listed, you may need to link it to your Azure subscription. Weitere Informationen finden Sie unter Definieren Ihrer CD-Releasepipeline.For more information, see Define your CD release pipeline.

  6. Abhängig vom Tarif Ihres App Service-Plans wird ggf. auch eine Seite Für Staging bereitstellen angezeigt.Depending on your App Service plan pricing tier, you may see a Deploy to staging page. Wählen Sie, ob Bereitstellungsslots aktiviert werden sollen, und wählen Sie Weiter aus.Choose whether to enable deployment slots, and then select Continue.

  7. Überprüfen Sie auf der Seite Zusammenfassung die Einstellungen, und wählen Sie Weiter aus.On the Summary page, review the settings, and then select Finish.

  8. Wenn die Azure-Pipeline bereit ist, kopieren Sie die Git-Repository-URL von der Seite Bereitstellungscenter, um sie im nächsten Schritt zu verwenden.When the Azure Pipeline is ready, copy the Git repository URL from the Deployment Center page to use in the next step.

    Die Git-Repository-URL kopieren

  9. Fügen Sie in Ihrem lokalen Terminalfenster Ihrem lokalen Git-Repository ein Azure-Remoterepository hinzu.In your local terminal window, add an Azure remote to your local Git repository. Ersetzen Sie im Befehl <url> durch die URL des Git-Repositorys, die Sie im vorherigen Schritt abgerufen haben.In the command, replace <url> with the URL of the Git repository that you got from the previous step.

    git remote add azure <url>
    
  10. Übertragen Sie mithilfe von Push mit git push azure master zum Azure-Remoterepository.Push to the Azure remote with git push azure master.

  11. Melden Sie sich auf der Seite Git-Anmeldeinformationsverwaltung mit Ihrem „visualstudio.com“-Benutzernamen an.On the Git Credential Manager page, sign in with your visualstudio.com username. Weitere Authentifizierungsmethoden finden Sie in der Übersicht über die Azure DevOps Services-Authentifizierung.For other authentication methods, see Azure DevOps Services authentication overview.

  12. Sobald die Bereitstellung abgeschlossen ist, zeigen Sie den Buildfortschritt unter https://<azure_devops_account>.visualstudio.com/<project_name>/_build und den Bereitstellungsstatus unter https://<azure_devops_account>.visualstudio.com/<project_name>/_release an.Once deployment is finished, view the build progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_build, and the deployment progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_release.

  13. Navigieren Sie im Azure-Portal zu Ihrer App, um zu überprüfen, ob der Inhalt bereitgestellt wurde.Browse to your app in the Azure portal to verify that the content is deployed.

Was geschieht während der Bereitstellung mit meiner App?What happens to my app during deployment?

Alle offiziell unterstützten Bereitstellungsmethoden nehmen Änderungen an den Dateien im Ordner /home/site/wwwroot Ihrer App vor.All the officially supported deployment methods make changes to the files in the /home/site/wwwroot folder of your app. Diese Dateien werden zum Ausführen Ihrer App verwendet.These files are used to run your app. Daher kann die Bereitstellung aufgrund von gesperrten Dateien fehlschlagen.Therefore, the deployment can fail because of locked files. Die App kann sich während der Bereitstellung unvorhersehbar verhalten, da nicht alle Dateien gleichzeitig aktualisiert werden.The app may also behave unpredictably during deployment, because not all the files updated at the same time. Dies ist für eine kundenorientierte App nicht erwünscht.This is undesirable for a customer-facing app. Es gibt mehrere Möglichkeiten, wie Sie diese Probleme umgehen können:There are a few different ways to avoid these issues:

Problembehandlung bei der BereitstellungTroubleshoot deployment

Möglicherweise werden die folgenden häufigen Fehlermeldungen angezeigt, wenn Sie eine App Service-App mithilfe von Git in Azure veröffentlichen:You may see the following common error messages when you use Git to publish to an App Service app in Azure:

MessageMessage UrsacheCause LösungResolution
Unable to access '[siteURL]': Failed to connect to [scmAddress] Die App wird nicht ordnungsgemäß ausgeführt.The app isn't up and running. Starten Sie die App im Azure-Portal.Start the app in the Azure portal. Die Git-Bereitstellung ist nicht verfügbar, wenn die Web-App beendet wurde.Git deployment isn't available when the web app is stopped.
Couldn't resolve host 'hostname' Die Adressinformationen für die ‚azure‘-Remotewebsite sind falsch.The address information for the 'azure' remote is incorrect. Verwenden Sie den Befehl git remote -v, um alle Remotewebsites zusammen mit der jeweils zugehörigen URL aufzulisten.Use the git remote -v command to list all remotes, along with the associated URL. Überprüfen Sie, ob die URL für die 'azure'-Remotewebsite korrekt ist.Verify that the URL for the 'azure' remote is correct. Entfernen Sie diese Remote-Website bei Bedarf und erstellen Sie sie mit der korrekten URL neu.If needed, remove and recreate this remote using the correct URL.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. Sie haben während git push keinen Branch angegeben, oder Sie haben den Wert push.default in .gitconfig nicht festgelegt.You didn't specify a branch during git push, or you haven't set the push.default value in .gitconfig. Führen Sie git push erneut aus, und geben Sie dabei den Masterbranch an: git push azure master.Run git push again, specifying the master branch: git push azure master.
src refspec [branchname] does not match any. Sie haben versucht, einen anderen Branch als „master“ mithilfe von Push in das ‚azure‘-Remoterepository zu übertragen.You tried to push to a branch other than master on the 'azure' remote. Führen Sie git push erneut aus, und geben Sie dabei den Masterbranch an: git push azure master.Run git push again, specifying the master branch: git push azure master.
RPC failed; result=22, HTTP code = 5xx. Dieser Fehler kann auftreten, wenn Sie versuchen, ein großes Git-Repository über HTTPS mithilfe von Push zu übertragen.This error can happen if you try to push a large git repository over HTTPS. Ändern Sie die Git-Konfiguration auf dem lokalen Computer, um den postBuffer zu vergrößern.Change the git configuration on the local machine to make the postBuffer bigger. Beispiel: git config --global http.postBuffer 524288000.For example: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. Sie haben eine Node.js-App mit einer Datei von Typ package.json bereitgestellt, die zusätzliche erforderliche Module angibt.You deployed a Node.js app with a package.json file that specifies additional required modules. Überprüfen Sie die Fehlermeldungen vom Typ npm ERR! vor diesem Fehler, um mehr Kontext zu erhalten.Review the npm ERR! error messages before this error for more context on the failure. Es folgen die bekannten Ursachen für diesen Fehler und die entsprechenden Meldungen vom Typ npm ERR!:The following are the known causes of this error, and the corresponding npm ERR! messages:

Falsch formatierte „package.json“-Datei: npm ERR! Couldn't read dependencies.Malformed package.json file: npm ERR! Couldn't read dependencies.

Systemeigenes Modul verfügt über keine binäre Verteilung für Windows:Native module doesn't have a binary distribution for Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
oderor
npm ERR! [modulename@version] preinstall: \make || gmake\

Zusätzliche RessourcenAdditional resources