繁体   English   中英

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

[英].NET Web Application and Windows Service Automatic Deployment

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

当前部署策略:

使用CCNet进行构建自动化。

Web应用程序:

  • Web部署包
  • 的MSBuild
  • 网络部署

Windows服务:

  • 的MSBuild
  • RoboCopy +网络共享
  • MSBuild Extension Pack可以(取消)安装启动/停止服务

当前策略存在的问题:

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

总体而言,这似乎并不坏,但是考虑到需要针对许多环境进行设置,这很快就成为问题。

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

寻找一种方式来部署Web应用程序以及具有较少配置要求的Windows服务。

备择方案?

CCNET构建发布者

而不是Web部署程序包。

将删除Web Deploy依赖关系,但不确定它是否可以在VPN上运行,并且看不到指定用户名/密码的方法。

SC.EXE

安装/卸载服务。

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

这似乎在域计算机上正常工作,但也不确定VPN连接,在这种情况下,UAC似乎也是一个问题。

电源外壳?

更新:

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

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

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

其他选项可能是:

  1. 在服务器上安装ftp并通过ftp上传文件
  2. 编写一个接受zip文件(或一系列文件)的服务/ webapp-在这一点上,您基本上是在重塑ftp或web部署。

至于安装/更新Windows服务,您很可能需要某种托管服务来协调与Windows的关联。

其他选项可能是:

  1. 复制文件(通过ccnet构建)后,使用psexec运行sc.exe。
  2. 编写以足够高的特权运行的服务/ webapp,以通过.net安装和控制服务

这些只是选项,不是建议,就我个人而言,我认为WebDeploy就足够了。 它提供的安全性和安全性远远超过了安装WebDeploy的痛苦。 就我个人而言,我不希望任何UNC访问或访问我的服务器(无论是否安全网络),因此我不建议您使用此选项。

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

  1. 使用WebDeploy发行新的/更新的站点文件; WebDeploy可以根据需要创建新的网站和应用程序。 您还应该能够将其重新用于Windows服务。
  2. 对于Windows服务,请使用WebDeploy runCommand提供程序在更新前后停止和启动服务,请参阅http://technet.microsoft.com/zh-cn/library/ee619740(v=WS.10).aspx

只要在服务器和ccnet服务器上安装WebDeploy,就应该可以做到这一点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM