Развертывание локального репозитория Git в службе приложений AzureLocal Git deployment to Azure App Service

В этом пошаговом руководство показано, как развернуть приложение в службе приложений Azure из репозитория Git на локальном компьютере.This how-to guide shows you how to deploy your app to Azure App Service from a Git repository on your local computer.

Технические условияPrerequisites

Выполните следующие шаги для изучения данного руководства.To follow the steps in this how-to guide:

  • Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.If you don't have an Azure subscription, create a free account before you begin.

  • Установка Git.Install Git.

  • Создать локальный репозиторий Git с кодом, который вы хотите развернуть.Have a local Git repository with code you want to deploy. Чтобы скачать пример репозитория, выполните следующую команду в локальном окне терминала: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
    

Подготовка репозиторияPrepare your repository

Чтобы получить автоматическую сборку из сервер сборки Kudu для службы приложений Azure, убедитесь, что корень репозитория содержит нужные файлы в проекте.To get automatic builds from Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

Среда выполненияRuntime Файлы в корневом каталогеRoot directory files
ASP.NET (только для Windows)ASP.NET (Windows only) *.SLN-файлы, *.CSPROJ-файлы или default.aspx*.sln, *.csproj, or default.aspx
ASP.NET Core;ASP.NET Core *.SLN-файлы или *.CSPROJ-файлы*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (только для Linux)Ruby (Linux only) GemfileGemfile
Node.jsNode.js server.js, app.js или package.json со сценарием запускаserver.js, app.js, or package.json with a start script
PythonPython *PY-файлы, requirements.txt или runtime.txt*.py, requirements.txt, or runtime.txt
HTMLHTML default.htm, default.html, default.asp, index.htm, index.html или iisstart.htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
Веб-заданияWebJobs <имя_задания > / run. <расширения > под приложения_данных/заданий/continuous для непрерывных веб-заданий, или приложения_данных/заданий/triggered для активации Веб-заданий.<job_name>/run.<extension> under App_Data/jobs/continuous for continuous WebJobs, or App_Data/jobs/triggered for triggered WebJobs. Дополнительные сведения см. в разделе документации веб-заданиям Kudu.For more information, see Kudu WebJobs documentation.
ФункцииFunctions Ознакомьтесь с разделом Непрерывное развертывание для Функций Azure.See Continuous deployment for Azure Functions.

Чтобы настроить развертывание, добавьте в корень репозитория DEPLOYMENT-файл.To customize your deployment, include a .deployment file in the repository root. Дополнительные сведения см. в разделе настраивать развертывания и Custom deployment script.For more information, see Customize deployments and Custom deployment script.

Примечание

Если для разработки используется Visual Studio, позвольте Visual Studio автоматически создать репозиторий.If you develop in Visual Studio, let Visual Studio create a repository for you. Проект немедленно готов к развертыванию с помощью Git.The project is immediately ready to be deployed by using Git.

Использование Azure Cloud ShellUse Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Начало работы с Azure Cloud ShellTo start Azure Cloud Shell:

ПараметрOption Пример и ссылкаExample/Link
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. При нажатии кнопки Попробовать код не копируется в Cloud Shell автоматически.Selecting Try It doesn't automatically copy the code to Cloud Shell. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell, чтобы открыть Cloud Shell в браузере.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Запуск Cloud Shell в новом окнеLaunch Cloud Shell in a new window
На портале Azure в правом верхнем углу в строке меню нажмите кнопку Cloud Shell.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Кнопка "Cloud Shell" на портале Azure

Чтобы выполнить код из этой статьи в Azure Cloud Shell, выполните следующие действия:To run the code in this article in Azure Cloud Shell:

  1. Запустите Cloud Shell.Start Cloud Shell.

  2. В блоке кода нажмите кнопку Копировать, чтобы скопировать код.Select the Copy button on a code block to copy the code.

  3. Вставьте код в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.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. Нажмите клавишу ВВОД, чтобы выполнить код.Select Enter to run the code.

Развертывание с помощью сервера сборки KUDUDeploy with Kudu build server

Самый простой способ включить локальное развертывание Git для приложения с сервером сборки службы приложений KUDU — использовать 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.

Настойка пользователя развертыванияConfigure a deployment user

Для развертывания в веб-приложение Azure из FTP и локального репозитория Git можно использовать пользователя развертывания.FTP and local Git can deploy to an Azure web app by using a deployment user. Настроив один раз пользователя развертывания, вы сможете использовать его для всех последующих развертываний в Azure.Once you configure your deployment user, you can use it for all your Azure deployments. Имя пользователя и пароль учетной записи развертывания отличаются от учетных данных подписки Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Чтобы настроить пользователя развертывания, выполните в Azure Cloud Shell команду az webapp deployment user set.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Вместо <username> и <password> укажите имя пользователя и пароль развертывания.Replace <username> and <password> with a deployment user username and password.

  • Имя пользователя должно быть уникальным в Azure. Кроме того, чтобы отправка в локальный репозиторий Git работала, имя пользователя не должно содержать символ @.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • Пароль должен содержать не менее восьми символов и включать два из трех следующих элементов: буквы, цифры и символы.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>

В выходных данных JSON пароль отображается как null.The JSON output shows the password as null. Если появляется сообщение об ошибке 'Conflict'. Details: 409, измените имя пользователя.If you get a 'Conflict'. Details: 409 error, change the username. Если появляется сообщение об ошибке 'Bad Request'. Details: 400, используйте более надежный пароль.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Запишите имя пользователя и пароль и используйте их для развертывания веб-приложений.Record your username and password to use to deploy your web apps.

Получение URL-адреса развертыванияGet the deployment URL

Чтобы получить URL-адрес для включения локального развертывания Git для существующего приложения, выполните az webapp deployment source config-local-git в Cloud Shell.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. Замените <имя приложения > и <имя группы > именем приложения и его группой ресурсов Azure.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>

Чтобы создать приложение с поддержкой Git, выполните az webapp create в Cloud Shell с параметром --deployment-local-git.Or, to create a new Git-enabled app, run az webapp create in the Cloud Shell with the --deployment-local-git parameter. Замените <App-name >, <имя группы > и <Plan-name > именами для нового приложения Git, его группой ресурсов Azure и планом службы приложений Azure.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

Любая команда возвращает URL-адрес, например: 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. Используйте этот URL-адрес для развертывания приложения на следующем шаге.Use this URL to deploy your app in the next step.

Вместо использования этого URL-адреса уровня учетной записи можно также включить локальный Git с помощью учетных данных на уровне приложения.Instead of using this account-level URL, you can also enable local Git by using app-level credentials. Служба приложений Azure автоматически создает эти учетные данные для каждого приложения.Azure App Service automatically generates these credentials for every app.

Получите учетные данные приложения, выполнив следующую команду в Cloud Shell.Get the app credentials by running the following command in the Cloud Shell. Замените <имя приложения > и <имя группы > именем своего приложения и именем группы ресурсов Azure.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

Используйте URL-адрес, который возвращает, чтобы развернуть приложение на следующем шаге.Use the URL that returns to deploy your app in the next step.

Развертывание веб-приложенияDeploy the web app

  1. Откройте локальное окно терминала в локальном репозитории Git и добавьте Azure Remote.Open a local terminal window to your local Git repository, and add an Azure remote. В следующей команде замените <URL-адрес > URL-адресом для конкретного пользователя или URL-адресом конкретного приложения, полученным на предыдущем шаге.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. Отправка в Azure Remote с git push azure master.Push to the Azure remote with git push azure master.

  3. В окне диспетчера учетных данных Git введите пароль пользователя для развертывания, а не пароль для входа в Azure.In the Git Credential Manager window, enter your deployment user password, not your Azure sign-in password.

  4. Просмотрите выходные данные.Review the output. Вы можете увидеть автоматизацию среды выполнения, например MSBuild для ASP.NET, npm install для Node. js и pip install для Python.You may see runtime-specific automation, such as MSBuild for ASP.NET, npm install for Node.js, and pip install for Python.

  5. Перейдите к приложению в портал Azure, чтобы убедиться, что содержимое развернуто.Browse to your app in the Azure portal to verify that the content is deployed.

Развертывание с помощью сборок Azure PipelinesDeploy with Azure Pipelines builds

Если у вашей учетной записи есть необходимые разрешения, можно настроить Azure Pipelines (Предварительная версия), чтобы включить локальное развертывание Git для приложения.If your account has the necessary permissions, you can set up Azure Pipelines (Preview) to enable local Git deployment for your app.

  • Учетная запись Azure должна иметь разрешения на запись в Azure Active Directory и создание службы.Your Azure account must have permissions to write to Azure Active Directory and create a service.

  • Ваша учетная запись Azure должна иметь роль владельца в подписке Azure.Your Azure account must have the Owner role in your Azure subscription.

  • Вы должны быть администратором в проекте Azure DevOps, который вы хотите использовать.You must be an administrator in the Azure DevOps project you want to use.

Чтобы включить локальное развертывание Git для приложения с Azure Pipelines (Предварительная версия):To enable local Git deployment for your app with Azure Pipelines (Preview):

  1. Перейдите на страницу приложения службы приложений Azure в портал Azureи выберите центр развертывания в меню слева.Navigate to your Azure App Service app page in the Azure portal, and select Deployment Center in the left menu.

  2. На странице центр развертывания выберите локальный Git, а затем нажмите кнопку продолжить.On the Deployment Center page, select Local Git, and then select Continue.

    Выберите локальный Git и нажмите кнопку продолжить.

  3. На странице поставщик сборки выберите Azure pipelines (Предварительная версия) и нажмите кнопку продолжить.On the Build provider page, select Azure Pipelines (Preview), and then select Continue.

    Выберите Azure Pipelines (Предварительная версия) и нажмите кнопку продолжить.

  4. На странице Настройка Настройте новую организацию Azure DevOps или укажите существующую организацию, а затем нажмите кнопку продолжить.On the Configure page, configure a new Azure DevOps organization, or specify an existing organization, and then select Continue.

    Примечание

    Если существующая организация Azure DevOps отсутствует в списке, может потребоваться связать ее с подпиской Azure.If your existing Azure DevOps organization isn't listed, you may need to link it to your Azure subscription. Дополнительные сведения см. в разделе Определение конвейера освобождения компакт-диска.For more information, see Define your CD release pipeline.

  5. В зависимости от ценовой категории плана службы приложений может отобразиться страница развертывание на промежуточном уровне.Depending on your App Service plan pricing tier, you may see a Deploy to staging page. Выберите, следует ли включить слоты развертывания, а затем нажмите кнопку продолжить.Choose whether to enable deployment slots, and then select Continue.

  6. На странице Сводка проверьте параметры и нажмите кнопку Готово.On the Summary page, review the settings, and then select Finish.

  7. Когда конвейер Azure будет готов, скопируйте URL-адрес репозитория Git со страницы центра развертывания , чтобы использовать его на следующем шаге.When the Azure Pipeline is ready, copy the Git repository URL from the Deployment Center page to use in the next step.

    Скопируйте URL-адрес репозитория Git

  8. В локальном окне терминала добавьте удаленное хранилище Azure в локальный репозиторий Git.In your local terminal window, add an Azure remote to your local Git repository. В команде замените URL-адрес <> URL-адресом репозитория Git, полученным на предыдущем шаге.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. Отправка в Azure Remote с git push azure master.Push to the Azure remote with git push azure master.

  10. На странице диспетчера учетных данных Git выполните вход с помощью имени пользователя VisualStudio.com.On the Git Credential Manager page, sign in with your visualstudio.com username. Другие методы проверки подлинности см. в разделе Azure DevOps Services проверка подлинности.For other authentication methods, see Azure DevOps Services authentication overview.

  11. После завершения развертывания просмотрите ход выполнения сборки в https://<azure_devops_account>.visualstudio.com/<project_name>/_buildи ход выполнения развертывания в https://<azure_devops_account>.visualstudio.com/<project_name>/_release.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. Перейдите к приложению в портал Azure, чтобы убедиться, что содержимое развернуто.Browse to your app in the Azure portal to verify that the content is deployed.

Что происходит с моим приложением во время развертывания?What happens to my app during deployment?

Все методы развертывания официально поддерживаемых вносить изменения в файлы /home/site/wwwroot папку приложения.All the officially supported deployment methods make changes to the files in the /home/site/wwwroot folder of your app. Эти файлы являются теми же самыми элементами, которые выполняются в рабочей среде.These files are the same ones that are run in production. Таким образом развертывание может завершиться сбоем из-за заблокированные файлы.Therefore, the deployment can fail because of locked files. Приложение в рабочей среде может также работать непредсказуемым образом во время развертывания, так как не все файлы обновляются одновременно.The app in production may also behave unpredictably during deployment, because not all the files updated at the same time. Избежать этих проблем можно несколькими способами.There are a few different ways to avoid these issues:

Устранение неполадок с развертываниемTroubleshoot deployment

При использовании Git для публикации в приложении службы приложений в Azure могут отобразиться следующие распространенные сообщения об ошибках:You may see the following common error messages when you use Git to publish to an App Service app in Azure:

СообщениеMessage Причина:Cause РазрешениеResolution
Unable to access '[siteURL]': Failed to connect to [scmAddress] Приложение не работает.The app isn't up and running. запуск приложения на портале Azure.Start the app in the Azure portal. Развертывание Git недоступно, если веб-приложение остановлено.Git deployment isn't available when the web app is stopped.
Couldn't resolve host 'hostname' Неверные сведения об адресе удаленного ресурса "Azure".The address information for the 'azure' remote is incorrect. Используйте команду git remote -v, чтобы вывести список всех удаленных, а также связанный URL-адрес.Use the git remote -v command to list all remotes, along with the associated URL. Проверьте правильность URL-адреса удаленного репозитория "azure".Verify that the URL for the 'azure' remote is correct. При необходимости удалите и повторно создайте этот удаленный репозиторий, используя правильный URL-адрес.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'. Вы не указали ветвь во время git pushили не установили значение push.default в .gitconfig.You didn't specify a branch during git push, or you haven't set the push.default value in .gitconfig. Снова запустите git push, указав главную ветвь: git push azure master.Run git push again, specifying the master branch: git push azure master.
src refspec [branchname] does not match any. Предпринята попытка принудительной отправки в ветвь, отличную от главной, в удаленной службе Azure.You tried to push to a branch other than master on the 'azure' remote. Снова запустите git push, указав главную ветвь: git push azure master.Run git push again, specifying the master branch: git push azure master.
RPC failed; result=22, HTTP code = 5xx. эта ошибка может возникнуть при попытке отправить большой репозиторий Git по протоколу HTTPS.This error can happen if you try to push a large git repository over HTTPS. Измените конфигурацию Git на локальном компьютере, чтобы увеличить postBuffer.Change the git configuration on the local machine to make the postBuffer bigger. Например, 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. Вы развернули приложение Node. js с файлом Package. JSON , который указывает дополнительные необходимые модули.You deployed a Node.js app with a package.json file that specifies additional required modules. Проверьте npm ERR! сообщения об ошибках до этой ошибки, чтобы получить дополнительные сведения о контексте сбоя.Review the npm ERR! error messages before this error for more context on the failure. Ниже приведены известные причины этой ошибки, а также соответствующие сообщения npm ERR!.The following are the known causes of this error, and the corresponding npm ERR! messages:

Неправильный формат файла Package. JSON: npm ERR! Couldn't read dependencies.Malformed package.json file: npm ERR! Couldn't read dependencies.

Собственный модуль не имеет двоичного распространения для Windows:Native module doesn't have a binary distribution for Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
илиor
npm ERR! [modulename@version] preinstall: \make || gmake\

Дополнительные ресурсыAdditional resources