Azure App Service için yerel git dağıtımıLocal Git deployment to Azure App Service

Bu nasıl yapılır Kılavuzu, uygulamanızı yerel bilgisayarınızdaki bir git deposundan Azure App Service için nasıl dağıtacağınızı gösterir.This how-to guide shows you how to deploy your app to Azure App Service from a Git repository on your local computer.

ÖnkoşullarPrerequisites

Bu nasıl yapılır kılavuzundaki adımları takip etmek için:To follow the steps in this how-to guide:

  • Yoksa bir Azure aboneliği, oluşturun bir ücretsiz bir hesap başlamadan önce.If you don't have an Azure subscription, create a free account before you begin.

  • Git’i yükleyin.Install Git.

  • Dağıtmak istediğiniz koda sahip yerel bir git deposuna sahip olabilirsiniz.Have a local Git repository with code you want to deploy. Örnek bir depoyu indirmek için yerel Terminal pencerenizde aşağıdaki komutu çalıştırın: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
    

Deponuzu hazırlamaPrepare your repository

Azure App Service Kudu derleme sunucusundan otomatik derlemeler almak için depo kökünüzde projenize doğru dosya olduğundan emin olun.To get automatic builds from Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

Çalışma ZamanıRuntime Kök dizin dosyalarıRoot directory files
ASP.NET (yalnızca Windows)ASP.NET (Windows only) *.sln, *.csproj, veya default.aspx*.sln, *.csproj, or default.aspx
ASP.NET CoreASP.NET Core *.sln veya *.csproj*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (yalnızca Linux)Ruby (Linux only) GemfileGemfile
Node.jsNode.js Server.js, app.js, veya package.json bir başlangıç betiği ileserver.js, app.js, or package.json with a start script
PythonPython *.PY, requirements.txt, veya runtime.txt*.py, requirements.txt, or runtime.txt
HTMLHTML default.htm, default.html, default.asp, index.htm, index.html, veya iisstart.htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
WebJobsWebJobs <job_name > / çalıştırın. <uzantısı > altında uygulama_veri/iş/continuous sürekli WebJobs için veya uygulama_veri/iş/triggered tetiklenen için Web işleri.<job_name>/run.<extension> under App_Data/jobs/continuous for continuous WebJobs, or App_Data/jobs/triggered for triggered WebJobs. Daha fazla bilgi için Kudu Web işleri belgeleri.For more information, see Kudu WebJobs documentation.
İşlevlerFunctions Bkz: Azure işlevleri için sürekli dağıtım.See Continuous deployment for Azure Functions.

Dağıtımınızı özelleştirmek için dahil bir .deployment depo köküne dosya.To customize your deployment, include a .deployment file in the repository root. Daha fazla bilgi için dağıtımlarını özelleştirme ve özel dağıtım betiği.For more information, see Customize deployments and Custom deployment script.

Not

Visual Studio'da oluşturursanız, izin Visual Studio sizin için bir depo oluşturma.If you develop in Visual Studio, let Visual Studio create a repository for you. Projeyi hemen Git kullanarak dağıtılmaya hazırdır.The project is immediately ready to be deployed by using Git.

Azure Cloud Shell kullanmaUse Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı Azure Cloud Shell.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell, ya da bash PowerShell Azure hizmetleriyle çalışmak için kullanmanıza olanak sağlar.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell önceden yüklenmiş komutları kullanabilirsiniz.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell başlatmak için:To launch Azure Cloud Shell:

SeçenekOption Örnek/bağlantıExample/Link
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin.Select Try It in the upper-right corner of a code block. Dene ' nin seçilmesi, kodu Cloud Shell otomatik olarak kopyalamaz.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell için deneme örneği
Tarayıcınızda Cloud Shell açmak için Başlat Cloud Shell düğmesine gidin veyaseçin. https://shell.azure.comGo to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Cloud Shell yeni bir pencerede BaşlatLaunch Cloud Shell in a new window
Azure Portalsağ üstteki menü çubuğunda Cloud Shell düğmesini seçin.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure portaldaki Cloud Shell düğmesi

Bu makaledeki kodu Azure Cloud Shell çalıştırmak için:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell'i açın.Open Cloud Shell.
  2. Kodu kopyalamak için bir kod bloğunda Kopyala düğmesini seçin.Select the Copy button on a code block to copy the code.
  3. Kodu Windows ve Linux 'ta CTRL+SHIFT+v veya MacOS 'ta cmd+Shift+v ile Cloud Shell oturumuna yapıştırın.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Kodu çalıştırmak için ENTER tuşuna basın.Press Enter to run the code.

Kudu derleme sunucusu ile dağıtmaDeploy with Kudu build server

Kudu App Service yapı sunucusuyla uygulamanız için yerel git dağıtımını etkinleştirmenin en kolay yolu Azure Cloud Shell kullanmaktır.The easiest way to enable local Git deployment for your app with the Kudu App Service build server is to use Azure Cloud Shell.

Dağıtım kullanıcısı yapılandırmaConfigure a deployment user

FTP ve yerel Git için bir Azure web uygulaması kullanarak dağıtabilirsiniz bir dağıtım kullanıcısı.FTP and local Git can deploy to an Azure web app by using a deployment user. Dağıtım kullanıcı yapılandırdıktan sonra tüm Azure dağıtımlarınız için kullanabilirsiniz.Once you configure your deployment user, you can use it for all your Azure deployments. Hesap düzeyinde dağıtım kullanıcı adı ve parola, Azure aboneliği kimlik bilgilerinizden farklıdır.Your account-level deployment username and password are different from your Azure subscription credentials.

Dağıtım kullanıcısı yapılandırma için çalıştırın az webapp deployment kullanıcı kümesi Azure Cloud shell'de komutu.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Değiştirin <username > ve <parola > Dağıtım kullanıcı adı ve parola ile.Replace <username> and <password> with a deployment user username and password.

  • Kullanıcı adı Azure içinde benzersiz olmalıdır ve yerel Git için bildirim içermemelidir ' @' sembolü.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • Parola en az sekiz karakter uzunluğunda olmalı, şu üç öğeyi sahip olmalıdır: harf, rakam ve semboller.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>

Parola olarak JSON çıktısını gösterir null.The JSON output shows the password as null. 'Conflict'. Details: 409 hatası alırsanız kullanıcı adını değiştirin.If you get a 'Conflict'. Details: 409 error, change the username. 'Bad Request'. Details: 400 hatası alırsanız daha güçlü bir parola kullanın.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Kullanıcı adı ve web uygulamalarınızı dağıtmak için kullanılacak parolayı kaydedin.Record your username and password to use to deploy your web apps.

Dağıtım URL 'sini alGet the deployment URL

Mevcut bir uygulama için yerel git dağıtımını etkinleştirmek üzere URL 'yi almak için Cloud Shell çalıştırın az webapp deployment source config-local-git .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. App <-name > ve grup <adı > ' nı uygulamanızın adlarıyla ve Azure Kaynak grubuyla değiştirin.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>

Ya da git özellikli yeni bir uygulama oluşturmak için, Cloud Shell az webapp create --deployment-local-git parametresiyle çalıştırın.Or, to create a new Git-enabled app, run az webapp create in the Cloud Shell with the --deployment-local-git parameter. App <-name >, <grup adı > ve <plan adı > Yeni git uygulamanızın adı, Azure Kaynak grubu ve Azure App Service planı ile değiştirin.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

Her iki komut şöyle bir URL döndürür 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. Uygulamanızı bir sonraki adımda dağıtmak için bu URL 'YI kullanın.Use this URL to deploy your app in the next step.

Bu hesap düzeyi URL 'YI kullanmak yerine, uygulama düzeyinde kimlik bilgilerini kullanarak yerel git 'i de etkinleştirebilirsiniz.Instead of using this account-level URL, you can also enable local Git by using app-level credentials. Azure App Service her uygulama için bu kimlik bilgilerini otomatik olarak oluşturur.Azure App Service automatically generates these credentials for every app.

Cloud Shell aşağıdaki komutu çalıştırarak uygulama kimlik bilgilerini alın.Get the app credentials by running the following command in the Cloud Shell. App <-name > ve grup <adı > ' nı uygulamanızın adı ve Azure Kaynak grubu adıyla değiştirin.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

Uygulamanızı bir sonraki adımda dağıtmak için döndüren URL 'YI kullanın.Use the URL that returns to deploy your app in the next step.

Web uygulamasını dağıtmaDeploy the web app

  1. Yerel git deponuza yerel bir Terminal penceresi açın ve bir Azure uzak ekleyin.Open a local terminal window to your local Git repository, and add an Azure remote. Aşağıdaki komutta URL > ' yi <, önceki adımda aldığınız dağıtıma özel URL veya uygulamaya özel URL ile değiştirin.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. İle git push azure masterAzure 'a gönderin.Push to the Azure remote with git push azure master.

  3. Git kimlik bilgileri Yöneticisi penceresinde, Azure oturum açma parolanızı değil, dağıtım Kullanıcı parolanızıgirin.In the Git Credential Manager window, enter your deployment user password, not your Azure sign-in password.

  4. Çıktıyı gözden geçirin.Review the output. Node. js ve npm install pip install Python için ASP.NET için MSBuild gibi çalışma zamanına özgü Otomasyon görebilirsiniz.You may see runtime-specific automation, such as MSBuild for ASP.NET, npm install for Node.js, and pip install for Python.

  5. İçeriğin dağıtıldığını doğrulamak için Azure portal uygulamanıza gidin.Browse to your app in the Azure portal to verify that the content is deployed.

Azure Pipelines Derlemeleriyle dağıtmaDeploy with Azure Pipelines builds

Hesabınız gerekli izinlere sahipse, uygulamanız için yerel git dağıtımını etkinleştirmek üzere Azure Pipelines (Önizleme) ayarlayabilirsiniz.If your account has the necessary permissions, you can set up Azure Pipelines (Preview) to enable local Git deployment for your app.

  • Azure hesabınızın Azure Active Directory yazma ve hizmet oluşturma izinlerine sahip olması gerekir.Your Azure account must have permissions to write to Azure Active Directory and create a service.

  • Azure hesabınızın, Azure aboneliğinizde sahip rolü olmalıdır.Your Azure account must have the Owner role in your Azure subscription.

  • Kullanmak istediğiniz Azure DevOps projesinde bir yönetici olmanız gerekir.You must be an administrator in the Azure DevOps project you want to use.

Azure Pipelines (Önizleme) ile uygulamanız için yerel git dağıtımını etkinleştirmek için:To enable local Git deployment for your app with Azure Pipelines (Preview):

  1. Azure portalAzure App Service uygulama sayfanıza gidin ve Sol menüdeki Dağıtım Merkezi ' ni seçin.Navigate to your Azure App Service app page in the Azure portal, and select Deployment Center in the left menu.

  2. Dağıtım Merkezi sayfasında Yerel git' i seçin ve ardından devam' ı seçin.On the Deployment Center page, select Local Git, and then select Continue.

    Yerel git ' i seçin ve ardından devam ' ı seçin.

  3. Yapı sağlayıcısı sayfasında Azure Pipelines (Önizleme) öğesini seçin ve ardından devam' ı seçin.On the Build provider page, select Azure Pipelines (Preview), and then select Continue.

    Azure Pipelines (Önizleme) öğesini seçin ve ardından devam ' ı seçin.

  4. Yapılandır sayfasında, yeni bir Azure DevOps organizasyonu yapılandırın veya mevcut bir kuruluş belirtip devam' ı seçin.On the Configure page, configure a new Azure DevOps organization, or specify an existing organization, and then select Continue.

    Not

    Mevcut Azure DevOps kuruluşunuz listede yoksa Azure aboneliğinize bağlamanız gerekebilir.If your existing Azure DevOps organization isn't listed, you may need to link it to your Azure subscription. Daha fazla bilgi için bkz. CD yayın işlem hattınızı tanımlama.For more information, see Define your CD release pipeline.

  5. App Service planı fiyatlandırma katmanınızabağlı olarak, hazırlama sayfasına dağıt sayfasına bakabilirsiniz.Depending on your App Service plan pricing tier, you may see a Deploy to staging page. Dağıtım yuvalarınınetkinleştirilip etkinleştirilmeyeceğini seçin ve ardından devam' ı seçin.Choose whether to enable deployment slots, and then select Continue.

  6. Özet sayfasında, ayarları gözden geçirin ve son' u seçin.On the Summary page, review the settings, and then select Finish.

  7. Azure işlem hattı kullanılabilir olduğunda, git deposu URL 'sini bir sonraki adımda kullanmak üzere Dağıtım Merkezi sayfasından kopyalayın.When the Azure Pipeline is ready, copy the Git repository URL from the Deployment Center page to use in the next step.

    Git deposu URL 'sini Kopyala

  8. Yerel Terminal pencerenizde yerel git deponuza bir Azure uzak ekleyin.In your local terminal window, add an Azure remote to your local Git repository. Komutta, URL > ' <yi önceki adımdan aldığınız git deposunun URL 'si ile değiştirin.In the command, replace <url> with the URL of the Git repository that you got from the previous step.

    git remote add azure <url>
    
  9. İle git push azure masterAzure 'a gönderin.Push to the Azure remote with git push azure master.

  10. Git kimlik bilgileri Yöneticisi sayfasında, VisualStudio.com Kullanıcı adınızla oturum açın.On the Git Credential Manager page, sign in with your visualstudio.com username. Diğer kimlik doğrulama yöntemleri için bkz. Azure DevOps Services kimlik doğrulamasına genel bakış.For other authentication methods, see Azure DevOps Services authentication overview.

  11. Dağıtım tamamlandıktan sonra, konumundaki derleme ilerlemesini https://<azure_devops_account>.visualstudio.com/<project_name>/_buildve dağıtım https://<azure_devops_account>.visualstudio.com/<project_name>/_releaseilerleme durumunu görüntüleyin.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.

  12. İçeriğin dağıtıldığını doğrulamak için Azure portal uygulamanıza gidin.Browse to your app in the Azure portal to verify that the content is deployed.

Dağıtım sırasında uygulamama ne?What happens to my app during deployment?

Resmi olarak desteklenen dağıtım yöntemlerini tüm dosyalarda değişiklik /home/site/wwwroot uygulamanızın klasör.All the officially supported deployment methods make changes to the files in the /home/site/wwwroot folder of your app. Bu dosyalar, üretimde çalışan aynıdır.These files are the same ones that are run in production. Bu nedenle, dağıtımı kilitli dosyalar nedeniyle başarısız olabilir.Therefore, the deployment can fail because of locked files. Tüm dosyalar aynı anda güncelleştirilmediğinden üretim uygulamasında da dağıtım sırasında davranmasına neden olabilecek.The app in production may also behave unpredictably during deployment, because not all the files updated at the same time. Bu sorunlarla karşılaşmamak için birkaç farklı yolu vardır:There are a few different ways to avoid these issues:

Dağıtım sorunlarını gidermeTroubleshoot deployment

Azure 'da bir App Service uygulamasına yayımlamak için git kullandığınızda aşağıdaki genel hata iletilerini görebilirsiniz:You may see the following common error messages when you use Git to publish to an App Service app in Azure:

MessageMessage NedeniCause ÇözümResolution
Unable to access '[siteURL]': Failed to connect to [scmAddress] Uygulama çalışır durumda değil.The app isn't up and running. Uygulamayı Azure portal başlatın.Start the app in the Azure portal. Web uygulaması durdurulduğunda git dağıtımı kullanılamaz.Git deployment isn't available when the web app is stopped.
Couldn't resolve host 'hostname' ' Azure ' uzak için adres bilgileri yanlış.The address information for the 'azure' remote is incorrect. İlişkili URL ile birlikte tüm uzaktan kumandalar listelemek için komutunukullanın.git remote -vUse the git remote -v command to list all remotes, along with the associated URL. ' Azure ' uzak için URL 'nin doğru olduğundan emin olun.Verify that the URL for the 'azure' remote is correct. Gerekirse, doğru URL 'YI kullanarak bu uzak kopyayı kaldırın ve yeniden oluşturun.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'. Sırasında git pushbir dal belirtmediniz veya ' de push.default .gitconfigdeğer ayarlamadıysanız.You didn't specify a branch during git push, or you haven't set the push.default value in .gitconfig. Ana git push dalı belirterek yeniden çalıştırın:. git push azure masterRun git push again, specifying the master branch: git push azure master.
src refspec [branchname] does not match any. ' Azure ' uzak üzerinde ana öğe dışında bir dala gönderim girişiminde çalıştınız.You tried to push to a branch other than master on the 'azure' remote. Ana git push dalı belirterek yeniden çalıştırın:. git push azure masterRun git push again, specifying the master branch: git push azure master.
RPC failed; result=22, HTTP code = 5xx. HTTPS üzerinden büyük bir git deposu göndermeye çalışırsanız bu hata oluşabilir.This error can happen if you try to push a large git repository over HTTPS. postBuffer Daha büyük olması için yerel makinedeki git yapılandırmasını değiştirin.Change the git configuration on the local machine to make the postBuffer bigger. Örneğin: 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. Gerekli modülleri belirten bir Package. JSON dosyası Ile bir Node. js uygulaması dağıttınız.You deployed a Node.js app with a package.json file that specifies additional required modules. Hatada daha fazla bağlam için bu hatadan önce hatailetilerinigözdengeçirin.npm ERR!Review the npm ERR! error messages before this error for more context on the failure. Aşağıda bu hatanın bilinen nedenleri ve ilgili npm ERR! iletiler verilmiştir:The following are the known causes of this error, and the corresponding npm ERR! messages:

Hatalı biçimlendirilmiş Package. JSON dosyası:npm ERR! Couldn't read dependencies.Malformed package.json file: npm ERR! Couldn't read dependencies.

Yerel modülün Windows için ikili bir dağıtımı yok:Native module doesn't have a binary distribution for Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
oror
' NPM hatası!`npm ERR! [modulename@version] PreInstall: \make[modulename@version] preinstall: \make
gmake`gmake`

Ek kaynaklarAdditional resources