部署代码的最简单方法之一是从本地计算机。 本文介绍如何从本地计算机上的 Git 存储库将应用部署到 Azure 应用服务 。
备注
本地 Git 部署需要 源代码管理器(SCM)基本身份验证,这比其他 部署方法的安全性较低。 如果 禁用了基本身份验证,则无法在应用的部署中心中配置本地 Git 部署。
若要完成本文中的步骤,需要:
如果没有 Azure 订阅,可在开始前创建一个试用帐户。
已安装 Git,以及包含要部署的应用代码的本地 Git 存储库。
可以通过在本地 Bash 终端窗口中运行以下命令来克隆示例 Node.js 应用存储库:
git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
若要使用 Azure CLI 命令,请在本地计算机上安装最新版本的 Azure CLI 。 使用 az login 登录到 Azure。
若要运行 Azure PowerShell 命令, 请安装最新版本的 Azure PowerShell。 使用 Connect-AzAccount 登录到 Azure。
若要从 Azure 应用服务生成服务器获取自动生成,请确保项目中存储库根路径具有正确的文件。
运行时 | 根目录文件 |
---|---|
ASP.NET(仅限 Windows) | \*.sln、 \*.csproj 或 default.aspx |
ASP.NET Core | \*.sln 或 \*.csproj |
PHP | index.php |
Ruby(仅限 Linux) | Gemfile |
Node.js | server.js、app.js 或具有启动脚本的 package.json |
Python | *.py、requirements.txt 或 runtime.txt |
HTML | default.htm、default.html、default.asp、index.htm、index.html 或 iisstart.htm |
Web 作业 | App_Data/jobs/continuous(适用于连续的 WebJobs)或 App_Data/jobs/triggered(适用于触发的 WebJobs)下的 job_name/run.extension。 有关详细信息,请参阅 Kudu WebJobs 文档。 |
要自定义部署,可以在存储库根路径中添加 .deployment 文件。 有关详细信息,请参阅自定义部署和自定义部署脚本。
备注
如果在 Visual Studio 中进行开发,让 Visual Studio 创建存储库。 该项目可立即通过 Git 进行部署。
需要部署用户凭据才能对应用进行身份验证和部署。 这些凭据不同于 Azure 订阅凭据,可以使用 用户范围 或 应用程序范围 凭据。
本地 Git 部署的用户范围部署用户只需要用户名,而不需要密码。 可以通过运行 Azure CLI 命令az webapp deployment user set --user-name <username>
,或在应用的部署中心中,“本地 Git/FTPS 凭据”选项卡的“用户作用域”下设置用户作用域用户名。
创建用户范围部署用户后,可以将其用于你有权访问的所有应用服务应用。 有关详细信息,请参阅 “配置用户范围凭据”。
应用程序范围部署用户特定于应用,并在创建应用时自动创建。 可以从应用的部署中心的“本地 Git/FTPS 凭据”选项卡获取用于部署的应用程序范围用户凭据。
可以使用 Azure CLI、Azure PowerShell 或 Azure 门户为预先存在的应用创建和配置已启用 Git 的应用,或配置本地 Git 部署。
若要创建为本地 Git 部署配置的新 Web 应用,请使用
--deployment-local-git
该选项运行 az webapp create。 例如:az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name myApp --runtime "NODE:20-lts" --deployment-local-git
若要为已有的应用配置本地 Git 部署,请运行 az webapp deployment source config-local-git。 例如:
az webapp deployment source config-local-git --name myApp --resource-group myResourceGroup
任一命令生成包含 URL 的输出,例如:
Local git is configured with url of 'https://contoso-user@myapp.scm.chinacloudsites.cn/myApp.git'
上述 URL 包含 用户范围部署用户名contoso-user
。 如果没有用户范围部署用户名,则 URL 使用 应用程序范围用户名,例如 https://$myApp@myApp.scm.chinacloudsites.cn/myApp.git
。
使用此 Git 克隆 URL 在下一步中部署应用。
若要将应用部署到 Azure,请在必要时创建远程分支,确保部署到正确的分支,然后将代码推送到远程分支。
如果使用 Azure PowerShell New-AzWebApp
从示例代码创建应用,则 azure
已创建远程服务器。 否则,请按照以下说明创建远程:
在本地终端中,将目录更改为克隆的 Git 存储库的根目录。
使用您的 Git 克隆的 URL 添加一个名为
azure
的 Git 远程。 如果不知道 Git 克隆 URL,请使用https://<app-name>.scm.chinacloudsites.cn/<app-name>.git
。git remote add azure <git-clone-url>
默认情况下,应用服务存储库将 master
文件部署到分支。 如果预先存在的本地文件位于存储库的分支中 master
,现在可以通过运行 git push azure master
来部署应用。
但是,许多 Git 存储库(包括本文的示例代码存储库)使用 main
或其他默认分支名称。 若要部署到正确的分支,必须显式部署到远程 master
分支,或者将部署分支更改为 main
或其他分支名称并部署到该分支。
显式使用以下push
命令从main
分支部署到master
。
git push azure main:master
或者先将DEPLOYMENT_BRANCH
的应用设置更改为main
,然后直接推送到main
,如下所示:
Azure CLI:
az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main' git push azure main
Azure 门户:
- 在应用的门户页上,在左侧导航菜单中的“设置”下选择“环境变量”。
- 选择 “添加”,添加名称 DEPLOYMENT_BRANCH 和值 main 的应用程序设置,然后选择“ 应用”。
- 在终端窗口中,运行
git push azure main
。
如果在推送代码后出现 Git 凭据管理器 对话框,请输入用户范围部署用户名或应用程序范围用户名和密码。 如果 Git 远程 URL 已包含登录信息,则不会提示你输入它。
检查 push
命令的输出。 你可能会看到特定于运行时的自动化,例如 npm install
Node.js、 MSBuild
ASP.NET 或 pip install
Python。 如果遇到错误,请参阅排查部署问题。
转到 Azure 门户,通过在应用的“概述”页上选择“默认域”链接来验证是否已成功部署应用。 应用应在浏览器选项卡中打开,并显示 Hello World!。
使用本地 Git 发布到 Azure 中的应用服务应用时,可能会出现以下常见错误:
消息 | 原因 | 解决方法 |
---|---|---|
Unable to access '[siteURL]': Failed to connect to [scmAddress] |
应用未运行。 | 在 Azure 门户中,启动应用。 如果 Web 应用已停止,Git 部署将不可用。 |
Couldn't resolve host 'hostname' |
azure 远程实例的地址信息不正确。 |
使用 git remote -v 命令列出所有远程库及其关联的 URL。 确认 azure 远程网站的 URL 正确。 如果需要,请使用git remote remove 删除不正确的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 <branch> |
Error - Changes committed to remote repository but deployment to website failed. |
你推送了与 azure 上的应用部署分支不匹配的本地分支。 |
按照“推送到正确的分支”中的说明,验证当前分支是否为master 或更改部署分支。 |
src refspec [branchname] does not match any. |
已尝试推送到 main 远程库上 azure 以外的分支。 |
请再次运行 git push ,并使用 git push azure main 指定 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\ |