.NET Web应用程序和Windows服务自动部署

时间:2014-09-15 10:36:57

标签: .net deployment msbuild cruisecontrol.net webdeploy

需要通过 VPN 将2个项目部署到多个环境。 随着时间的推移,将需要其他环境

当前的部署策略:

使用 CCNet 进行构建自动化。

网络应用程序:

  • Web部署包
  • 的MSBuild
  • Web Deploy

Windows服务:

  • 的MSBuild
  • RoboCopy + Net Share
  • MSBuild Extension Pack到(联合国)安装启动/停止服务

当前战略的问题:

  • 需要在所有目标Web服务器上安装Web Deploy。
  • IIS配置:(远程管理服务,用户,委托规则)
  • 服务文件复制和安装所需的净份额
  • MSBuild扩展包依赖
  • UAC已停用以进行服务安装

总的来说,它看起来并不那么糟糕,但考虑到需要为很多环境设置它很快就会成为一个问题。

同时创建网络共享,禁用UAC,IIS远程管理服务可能会被视为安全问题。

寻找部署Web应用程序以及配置要求较少的Windows服务的方法。

替代?

CCNET buildpublisher

而不是Web部署包。

会删除Web Deploy依赖项,但不确定它是否可以通过VPN工作,并且看不到指定用户名/密码的方法。

SC.EXE

安装/卸载服务。

将删除MSBuild Extension Pack和Robo Copy依赖项。

这似乎适用于域计算机,但也不确定VPN连接,在这种情况下UAC似乎也是一个问题。

Powershell的?

更新

使用powershell管理安装服务: http://www.geoffhudik.com/tech/2012/3/22/install-a-windows-service-remotely-with-powershell.html

一种方法。在Windows 7上使用MapNetworkDrive创建驱动器共享时出现问题,因此我必须使用net use执行此操作 仍在考虑替代方案。

1 个答案:

答案 0 :(得分:1)

对于复制文件,您可以使用UNC共享来获得结果。这将满足减少在服务器中安装工具的要求的愿望,假设UNC是一种选择。

其他选项可以

  1. 在服务器上安装ftp并通过ftp
  2. 上传文件
  3. 编写一个接受zip文件(或一系列文件)的服务/ webapp - 此时你基本上重新发明了ftp或web部署。
  4. 至于安装/更新Windows服务,您很可能需要某种托管服务来协调与Windows的关联。

    其他选项可以

    1. 使用psexec运行sc.exe,一旦您复制了文件(通过ccnet构建)
    2. 编写一个以足够高的权限运行的服务/ webapp,通过.net
    3. 安装和控制服务

      这些只是选项,而不是建议,我个人认为WebDeploy本身就足够了。安装WebDeploy的痛苦远远超过它提供的安全性和安全性。就个人而言,我不希望任何UNC访问我的服务器或从我的服务器访问(安全网络与否),所以我不推荐这个选项。

      一种可能的解决方案可能是:

      1. 使用WebDeploy发布新的/更新的站点文件; WebDeploy可以根据需要创建新的网站和应用程序。您 应该能够将此重用于Windows服务。
      2. 对于Windows服务,使用WebDeploy runCommand 提供程序在更新前后停止并启动服务,请参阅http://technet.microsoft.com/en-us/library/ee619740(v=WS.10).aspx
      3. 只需在服务器和ccnet服务器上安装WebDeploy,就可以实现这一切。

        不需要IIS远程管理,文件共享和msbuild(及其包),从而减少了一些配置。 WebDeploy的安装和配置可以自动化:http://www.iis.net/learn/publish/using-web-deploy/powershell-scripts-for-automating-web-deploy-setup