10

几天前,微软发布了他们用于将 git 部署到 Azure 的引擎。一段时间以来,我的 TODO 列表中有一项任务是在我的 DEV IIS 服务器上设置这种功能,因此我有兴趣为此目的尝试 Kudu。

入门”文档显示了如何运行 Web 前端,但其中的所有内容都使用“ http://localhost:PORTNUMBER ”类型的 git 存储库、站点 URL 等 URL。

我意识到这可能远远领先于他们,但我想知道是否有人有关于如何使用“常规”IIS 上的真实域而不是所有 localhost 位来设置它的指针?

4

2 回答 2

17

这是一个老问题,所以我给出了一个更新的答案,包含更多最新信息,因为我刚刚在内部部署服务器上设置了 Kudu。当前选择的答案仅适用于您在开发环境中直接运行 Kudu 的情况。

如果您要部署到“生产”类型的环境并且不想在目标服务器上安装 Visual Studio,那么在 github 上的项目网站上有一个很好的指南。

https://github.com/projectkudu/kudu/wiki/Deploying-to-a-server

在目标服务器上,您需要安装:

回到您的开发机器上,克隆 git 存储库并使用“build.cmd”文件进行构建,按照上面链接中的说明进行操作。

在运行 build.cmd 时,我遇到了几个测试失败,这些失败阻止了构建生成工件。这些都与我们不使用的 Mercurial 有关。安装 Mercurial 客户端并没有让它们神奇地消失,所以我禁用了测试而不是花费大量时间调试我的环境。

您的构建输出将指示失败。我通过注释掉 [Fact] 属性来禁用。这些是我禁用的测试:

  • 测试/Kudu.Core.Test/HgRepositoryFacts.cs(所有测试)

一旦成功构建并创建了工件中的所有项目,您就可以开始部署 Kudu 网站和 Web 服务代码。以下说明用于设置不同的 Web 应用程序实例,而不是将所有内容转储到 c:\inetpub\wwwroot 中,这就是说明的读取方式。

  1. 将“artifacts\Release\KuduWeb”复制到您的网站将运行的服务器上的目标区域。我使用单独的主机头运行我的 kudu 安装,但您可以轻松地使用单独的端口或作为根网站运行。此目录将是您的 Web 应用程序的根目录。

  2. 在 KuduWeb 文件夹下创建一个空的“App_Data”文件夹。

  3. 将“artifacts\Release\SiteExtensions\Kudu”复制到与步骤1中的文件夹相同的级别并重命名为“Kudu.Services.Web”。该位置在 KuduWeb web.config 文件中设置为相对路径 - 设置 serviceSitePath。

  4. 打开 IIS Admin 并创建一个指向步骤 1 中的“KuduWeb”文件夹的网站。

  5. 将第 4 步中的应用程序池配置为作为“LocalSystem”运行。这是管理 IIS 站点所必需的。

  6. 在与 KuduWeb 相同的级别创建一个新文件夹“apps”。这是将发送部署的地方。注意:这个位置在 KuduWeb web.config 文件中控制 - 设置“sitesPath”

  7. 更改文件系统权限以授予“用户”对上述步骤中创建的“应用程序”文件夹的完全访问权限。

在启动我的 Kudu 网站时,我收到以下错误。

解析器错误消息:无法加载文件或程序集“System.Web.Mvc,Version=5.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。

由于某种原因,它没有将适当的 MVC 版本复制到部署工件中。

如果遇到此错误,可以通过 NuGet 获取 MVC 5 文件。我发现我的源代码是针对 5.1.0 构建的,所以这是适当的链接:

https://www.nuget.org/packages/Microsoft.AspNet.Mvc/5.1.0

为了提取 dll,我建立了一个新的虚拟项目,并使用 NuGet 通过包管理器控制台拉下 dll。

安装包 Microsoft.AspNet.Mvc -Version 5.1.0

获得二进制文件后,将其从包目录( .\packages\Microsoft.AspNet.Mvc.5.1.0\lib\net45\System.Web.Mvc.dll )复制到目标计算机上的网站 bin 目录。

此时您已启动并运行。使用 Web 界面创建您的应用程序。它将在“apps”目录下创建一个子文件夹,其中的树应该是不言自明的。它还将为您的应用程序创建两个新网站:

  • kudu_{您的应用程序名称}
  • kudu_service_{您的应用程序名称}

在生产情况下,您应该创建一个在适当的端口/主机标头上运行的附加网站,该标头指向:.\apps\\site\wwwroot

现在您可以为您的部署添加一个 git 远程。在 git 控制台(例如:Git Bash)中转到您的源位置并添加 Kudu 标识的远程。注意:您可能需要将 url 中的 localhost 更改为适当的服务器名称。

git 远程添加部署 http://:52711/your-app-name.git

将您的代码推送到新的“部署”遥控器,看看会发生什么。您应该看到所有正常的推送消息,以及构建输出。

git push 部署大师

由于“节点”未被识别,我的初始推送未能构建和部署。它在路径中,因此服务器重置使路径环境变量被刷新。您可能会发现需要解决的其他错误。例如,我遇到了导入 MSBuild 并导致打嗝的问题。

错误 MSB4019:找不到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\Visual Studio\v11.0\WebApplications\Microsoft.WebApplication.targets”。

YMMV,但现在这些都是可以解决的问题。良好的持续部署!

于 2014-10-21T17:03:04.153 回答
5

The project automatically sets up two websites on IIS for each application you add using the web front end. Kudu doesn't automatically map the bindings for them but it's relatively easy to open IIS and find the two sites named "kudu_appname" and "kudu_appname_service". The service website is the one that you point GIT too and the other one is the site itself. Just add public bindings to them by right-clicking and "edit bindings". You can then add public hostnames to them.

This is the easy part. The hard part that I'm still working on is getting authentication working so any random Joe isn't able to push to my kudu repository!

于 2012-09-11T01:29:45.740 回答