从本地 Git 部署到 Azure 应用服务

本操作方法指南介绍如何将应用从本地计算机上的 Git 存储库部署到 Azure 应用服务

先决条件

按照本操作方法指南中的步骤操作:

  • 如果没有 Azure 订阅,可在开始前创建一个试用帐户

  • 安装 Git

  • 创建包含想要部署的代码的本地 Git 存储库。 若要下载示例存储库,请在本地终端窗口运行以下命令:

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

准备存储库

若要从 Azure 应用服务生成服务器获取自动生成,请确保项目中存储库根路径具有正确的文件。

运行时 根目录文件
ASP.NET(仅限 Windows) *.sln*.csprojdefault.aspx
ASP.NET Core *.sln*.csproj
PHP index.php
Ruby(仅限 Linux) Gemfile
Node.js server.js、app.js 或具有启动脚本的 package.json
Python *.pyrequirements.txtruntime.txt
HTML default.htm、default.html、default.asp、index.htm、index.html 或 iisstart.htm
Web 作业 <job_name>/run.<extension>, 位于 App_Data/jobs/continuous(适用于连续的 WebJobs)或 App_Data/jobs/triggered(适用于触发的 WebJobs)下 。 有关详细信息,请参阅 Kudu WebJobs 文档

要自定义部署,可以在存储库根路径中添加 .deployment 文件。 有关详细信息,请参阅自定义部署自定义部署脚本

备注

如果在 Visual Studio 中进行开发,让 Visual Studio 创建存储库。 该项目可立即通过 Git 进行部署。

配置部署用户

请参阅为 Azure 应用服务配置部署凭据。 可以使用用户范围凭据或应用程序范围凭据。

创建启用 Git 的应用

如果已有一个应用服务应用并想要为其配置本地 Git 部署,请改为参阅配置现有应用

使用 --deployment-local-git 选项运行 az webapp create。 例如:

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

输出包含如下所示的 URL:https://<deployment-username>@<app-name>.scm.chinacloudsites.cn/<app-name>.git。 在下一步骤中,将使用此 URL 部署应用。

配置现有应用

如果尚未创建应用,请参阅创建启用 Git 的应用

运行 az webapp deployment source config-local-git。 例如:

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

输出包含如下所示的 URL:https://<deployment-username>@<app-name>.scm.chinacloudsites.cn/<app-name>.git。 在下一步骤中,将使用此 URL 部署应用。

提示

此 URL 包含用户范围部署用户名。 如果需要,可以改为使用应用程序范围凭据

部署 Web 应用

  1. 在本地终端窗口中,将目录更改为 Git 存储库的根目录,并使用从应用获取的 URL 添加 Git 远程库。 如果你选择的方法没有提供 URL,请使用 https://<app-name>.scm.chinacloudsites.cn/<app-name>.git,且你的应用名称在 <app-name> 中。

    git remote add azure <url>
    

    备注

    如果在 PowerShell 中使用 New-AzWebApp 创建了启用 Git 的应用,则已为你创建了远程 Git。

  2. 使用 git push azure master 推送到 Azure 远程实例。

  3. 在“Git 凭据管理器”窗口中,输入用户范围凭据或应用程序范围凭据,而不是 Azure 登录凭据。

    如果 Git 远程 URL 已经包含用户名和密码,则不会出现提示。

  4. 查看输出。 你可能会看到特定于运行时的自动化,例如 MSBuild for ASP.NET、npm install for Node.js 和 pip install for Python。

  5. 在 Azure 门户中浏览到你的应用以检查内容是否已部署。

排查部署问题

使用 Git 发布到 Azure 中的应用服务应用时,你可能会看到以下常见错误消息:

Message 原因 解决方法
Unable to access '[siteURL]': Failed to connect to [scmAddress] 应用未正常运行。 在 Azure 门户中启动应用。 如果 Web 应用已停止,Git 部署将不可用。
Couldn't resolve host 'hostname' “azure”远程实例的地址信息不正确。 使用 git remote -v 命令列出所有远程网站以及关联的 URL。 确认“azure”远程网站的 URL 正确。 如果需要,请删除此远程网站并使用正确的 URL 重新创建它。
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. 在运行 git push 期间未指定分支,或者未在 .gitconfig 中设置 push.default 值。 再次运行 git push,并指定主分支:git push azure main
Error - Changes committed to remote repository but deployment to website failed. 你已推送与“azure”上的应用部署分支不匹配的本地分支。 请确认当前分支为 master。 若要更改默认分支,请使用 DEPLOYMENT_BRANCH 应用程序设置。
src refspec [branchname] does not match any. 你已尝试推送到“azure”远程实例上除主节点以外的分支。 再次运行 git push,并指定主分支:git push azure main
RPC failed; result=22, HTTP code = 5xx. 如果尝试通过 HTTPS 推送大型 Git 存储库,则可能出现此错误。 在本地计算机上更改 Git 配置,以增大 postBuffer。 例如:git config --global http.postBuffer 524288000
Error - Changes committed to remote repository but your web app not updated. 你已使用一个指定了其他所需模块的 package.json 文件部署了 Node.js 应用。 检查发生此错误之前出现的 npm ERR! 错误消息,以了解有关失败的更多上下文。 下面是此错误的已知原因,以及相应的 npm ERR! 消息:

package.json 文件格式不当npm ERR! Couldn't read dependencies.

本机模块没有适用于 Windows 的二进制分发版
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1

npm ERR! [modulename@version] preinstall: \make || gmake\

其他资源