在IIS上设置Kudu

时间:2012-06-11 15:44:23

标签: iis kudu

几天前,微软发布了the engine they're using to do git deployments to Azure。我在TODO列表上有一段时间在DEV IIS服务器上设置了这种功能,所以我有兴趣为此尝试Kudu。

Getting Started”文档显示了如何运行网络前端,但其中的所有内容都使用了“http://localhost:PORTNUMBER”类型的网址,用于git存储库,网站网址等。

我意识到这可能远远超过它们,但我想知道是否有人指出如何在“常规”IIS而不是所有localhost位上使用真实域设置它?

2 个答案:

答案 0 :(得分:16)

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

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

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

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

回到你的开发机器上,克隆git repo并使用" build.cmd"文件,按照上述链接中的说明。

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

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

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

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

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

  2. 创建一个空的" App_Data"文件夹紧靠KuduWeb文件夹。

  3. 复制"工件\ Release \ SiteExtensions \ Kudu"与步骤1中的文件夹处于同一级别,并重命名为" Kudu.Services.Web"。此位置设置为KuduWeb web.config文件中的相对路径 - 设置serviceSitePath。

  4. 打开IIS管理员并创建一个指向" KuduWeb"步骤1中的文件夹。

  5. 将步骤4中的应用池配置为" LocalSystem"。这是管理IIS站点所必需的。

  6. 创建一个新文件夹" apps"与KuduWeb处于同一水平。这是部署将被发送的地方。注意:此位置由KuduWeb web.config文件控制 - 设置" sitesPath"

  7. 更改文件系统权限以授予"用户"完全访问" apps"在上面的步骤中创建的文件夹。

  8. 在启动我的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_ {your-app-name}
    • kudu_service_ {您的应用内名}

    在生产环境中,您应该在适当的端口/主机标头上创建一个额外的网站,指向:。\ apps \\ site \ wwwroot

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

      

    git remote add deploy http://:52711 / your-app-name.git

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

      

    git push deploy master

    由于" node"我的初始推送无法构建和部署不被承认。它位于路径中,因此服务器重置确信要刷新的路径环境变量。您可能会发现其他错误。例如,我遇到了导入MSBuild并导致打嗝的问题。

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

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

答案 1 :(得分:5)

项目会自动在IIS上为您使用Web前端添加的每个应用程序设置两个网站。 Kudu不会自动为它们映射绑定,但是打开IIS并找到名为“kudu_appname”和“kudu_appname_service”的两个站点相对容易。服务网站也是您指向GIT的网站,另一个是网站本身。只需右键单击并“编辑绑定”即可向它们添加公共绑定。然后,您可以向它们添加公共主机名。

这很容易。我仍在努力的部分是让身份验证工作,所以任何随机的Joe都无法推送到我的kudu存储库!