这是一个老问题,所以我给出了一个更新的答案,包含更多最新信息,因为我刚刚在内部部署服务器上设置了 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 中,这就是说明的读取方式。
将“artifacts\Release\KuduWeb”复制到您的网站将运行的服务器上的目标区域。我使用单独的主机头运行我的 kudu 安装,但您可以轻松地使用单独的端口或作为根网站运行。此目录将是您的 Web 应用程序的根目录。
在 KuduWeb 文件夹下创建一个空的“App_Data”文件夹。
将“artifacts\Release\SiteExtensions\Kudu”复制到与步骤1中的文件夹相同的级别并重命名为“Kudu.Services.Web”。该位置在 KuduWeb web.config 文件中设置为相对路径 - 设置 serviceSitePath。
打开 IIS Admin 并创建一个指向步骤 1 中的“KuduWeb”文件夹的网站。
将第 4 步中的应用程序池配置为作为“LocalSystem”运行。这是管理 IIS 站点所必需的。
在与 KuduWeb 相同的级别创建一个新文件夹“apps”。这是将发送部署的地方。注意:这个位置在 KuduWeb web.config 文件中控制 - 设置“sitesPath”
更改文件系统权限以授予“用户”对上述步骤中创建的“应用程序”文件夹的完全访问权限。
在启动我的 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,但现在这些都是可以解决的问题。良好的持续部署!