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

本教程说明如何将应用从本地计算机上的 Git 存储库部署到 Azure Web 应用。 应用服务支持结合 Azure 门户中的“本地 Git”部署选项使用此方法。
在根据此处所述使用 Azure 命令行接口创建应用服务应用时,会自动执行本文中所述的许多 Git 命令。

先决条件

要完成本教程,需要:

  • Git。 可在 此处下载二进制安装文件。
  • 对 Git 有一个基本的了解。
  • 一个 Azure 帐户。 如果没有帐户,可以 注册试用版

步骤 1:创建本地存储库

执行下列任务可创建新的 Git 存储库。

  1. 启动一个命令行工具,例如 GitBash (Windows) 或 Bash (Unix Shell)。 在 OS X 系统上,可以通过 Terminal 应用程序访问命令行。
  2. 导航到要部署的内容所在的目录。
  3. 使用以下命令可初始化新的 Git 存储库:
git init

步骤 2:提交内容

应用服务支持用各种编程语言创建的应用程序。

  1. 如果存储库已包含内容,请跳过这一项,并转到下面的第 2 项。 如果存储库尚不包含内容,请只填充静态 .html 文件,如下所示:

    • 使用文本编辑器,在 Git 存储库的根中创建一个名为 index.html 的新文件。
    • 添加以下文本作为 index.html 文件的内容并保存该文件: Hello Git!
  2. 在命令行中,验证当前位置是否在 Git 存储库的根目录下。 然后使用以下命令将文件添加到存储库中:

    git add -A 
    
  3. 接下来,使用以下命令将更改提交到存储库:

    git commit -m "Hello Azure App Service"
    

步骤 3:启用应用服务应用存储库

执行以下步骤为应用服务应用启用 Git 存储库。

  1. 登录到 Azure 门户
  2. 在应用服务应用的边栏选项卡中,单击“设置”>“部署源”。 依次单击“选择源”、“本地 Git 存储库”、“确定”。

    本地 Git 存储库

  3. 如果这是你第一次在 Azure 中设置存储库,则需要为其创建登录凭据。 你将使用它们从本地 Git 存储库登录到 Azure 存储库并推送更改。 在应用的边栏选项卡中,单击“设置”>“部署凭据”,并配置部署用户名和密码。 完成后,单击“保存”。

步骤 4:部署项目

使用以下步骤通过本地 Git 将应用发布到应用服务。

  1. 在 Azure 门户的应用边栏选项卡中,单击“Git URL”的“设置”>“属性”。

    Git URL 是从本地存储库到部署的远程引用。 在后续步骤中,你将要用到此 URL。

  2. 使用命令行验证当前位置是否在本地 Git 存储库的根目录下。

  3. 使用 git remote 添加步骤 1 的 Git URL 中所列的远程引用。 使用的命令应类似于:

     git remote add azure https://<username>@localgitdeployment.scm.chinacloudsites.cn:443/localgitdeployment.git
    

    Note

    remote 命令可将命名引用添加到远程存储库。 在本示例中,它为 Web 应用的存储库创建名为“azure”的引用。

  4. 使用刚刚创建的新 azure 远程命令将内容推送到应用服务。

    git push azure master
    

    当你在 Azure 门户中重置部署凭据时,系统会提示你输入以前创建的密码。 输入该密码(请注意,在键入密码时,Gitbash 不会将星号回显到控制台)。

  5. 返回到 Azure 门户中的应用。 最近推送的日志条目应显示在“部署”边栏选项卡中。

  6. 单击应用边栏选项卡顶部的“浏览”按钮来验证是否已部署内容。

故障排除

以下是使用 Git 发布到 Azure 中的应用服务应用时遇到的常见错误或问题:


症状:无法访问“[siteURL]”:无法连接到 [scmAddress]

原因:如果应用无法正常工作,则会发生该错误。

解决方法:在 Azure 门户中启动应用。 在应用运行之前,Git 部署无法进行。


症状:无法解析主机“主机名”

原因:如果创建“azure”远程网站时输入的地址信息不正确,则会发生该错误。

解决方法:使用 git remote -v 命令列出所有远程网站以及关联的 URL。 确认“azure”远程网站的 URL 正确。 如果需要,请删除此远程网站并使用正确的 URL 重新创建它。


症状:无通用引用且未指定任何引用;不采取任何措施。 或许你应指定一个分支,例如“master”。

原因:如果在执行 Git 推送操作时未指定分支且未设置 Git 使用的 push.default 值,则会发生该错误。

解决方法:请再次执行推送操作,并指定 master 分支。 例如:

git push azure master

症状:src refspec [分支名] 不匹配任何内容。

原因:如果尝试推送到“azure”远程网站上 master 分支之外的分支,则会发生该错误。

解决方法:请再次执行推送操作,并指定 master 分支。 例如:

git push azure master

症状:RPC 失败;结果 = 22,HTTP 代码 = 502。

原因:如果尝试通过 HTTPS 推送大型 Git 存储库,则可能出现此错误。

解决方法:在本地计算机上更改 Git 配置,以增大 postBuffer

git config --global http.postBuffer 524288000

症状:错误 - 已将更改提交到远程存储库,但未更新 Web 应用。

原因:如果部署的是 Node.js 应用,其中包含用于指定其他必需模块的 package.json 文件,则会发生该错误。

解决方法:应在发生此错误之前记录包含“npm ERR!” 的其他消息,这些消息可提供有关失败的其他上下文。 以下是该错误的已知原因和相应的“npm ERR!” 消息:

  • package.json 文件格式不正确:npm ERR! 无法读取依赖项。
  • 不具有 Windows 的二进制分发的本机模块

    • npm ERR! `cmd "/c" "node-gyp rebuild"` 失败,1

    • npm ERR! [modulename@version] 预安装:`make || gmake`

其他资源