在IIS上设置Kudu

J W*_*nia 10 iis kudu

几天前,微软发布了他们用来对Azure进行git部署的引擎.我在TODO列表上有一段时间在DEV IIS服务器上设置了这种功能,所以我有兴趣尝试Kudu.

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

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

goo*_*ack 17

这是一个老问题,所以我给出了更新的答案以及更多当前信息,因为我刚刚在内部部署服务器上设置了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. 将"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. 更改文件系统权限以授予"用户"对上述步骤中创建的"apps"文件夹的完全访问权限.

在启动我的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_ {您-APP-名}
  • kudu_service_ {您-APP-名}

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

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

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

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

git push deploy master

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

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

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


Che*_*hev 5

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

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