Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET Web应用程序和Windows服务自动部署_.net_Deployment_Msbuild_Cruisecontrol.net_Webdeploy - Fatal编程技术网

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

.NET Web应用程序和Windows服务自动部署,.net,deployment,msbuild,cruisecontrol.net,webdeploy,.net,Deployment,Msbuild,Cruisecontrol.net,Webdeploy,这两个项目需要通过VPN部署到多个环境中。 随着时间的推移,将需要额外的环境 目前的部署战略: 使用CCNet进行构建自动化 Web应用程序: Web部署包 MSBuild Web部署 Windows服务: MsBuild 机器人技术+净份额 MSBuild扩展包以(取消)安装启动/停止服务 当前战略的问题: 需要在所有目标Web服务器上安装Web部署 IIS配置:(远程管理服务、用户、委派规则) 复制和安装服务文件所需的Net共享 MSBuild扩展包依赖项 已禁用UAC以进行服务安

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

目前的部署战略: 使用CCNet进行构建自动化

Web应用程序:

  • Web部署包
  • MSBuild
  • Web部署
Windows服务:

  • MsBuild
  • 机器人技术+净份额
  • MSBuild扩展包以(取消)安装启动/停止服务
当前战略的问题:
  • 需要在所有目标Web服务器上安装Web部署
  • IIS配置:(远程管理服务、用户、委派规则)
  • 复制和安装服务文件所需的Net共享
  • MSBuild扩展包依赖项
  • 已禁用UAC以进行服务安装
总的来说,这似乎并没有那么糟糕,但考虑到许多环境都需要设置,这很快就会成为一个问题

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

正在寻找一种部署web应用程序和windows服务的方法,但配置要求较低。

选择? CCNET buildpublisher 而不是Web部署包

将删除Web Deploy依赖项,但不确定它是否在VPN上工作,也看不到指定用户名/密码的方法

sc.exe 安装/卸载服务

将删除MSBuild扩展包和Robo副本依赖项

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

动力地狱? 更新: 已管理使用powershell安装服务:

一种方法。在Windows 7上使用
MapNetworkDrive
创建驱动器共享时出现问题,因此我必须使用
net use

仍在考虑替代方案。

对于复制文件,您可以使用UNC共享来实现您的结果。假设UNC是一个选项,这将满足减少在服务器中安装工具的需求

其他选项可以是:

  • 在服务器上安装ftp并通过ftp上载文件
  • 编写一个接受zip文件(或一系列文件)的服务/web应用程序——在这一点上,您基本上重新发明了ftp或web部署
  • 至于安装/更新windows服务,您很可能需要某种托管服务来协调与windows的关联

    其他选项可以是:

  • 复制文件(通过ccnet生成)后,使用psexec运行sc.exe
  • 编写一个以足够高的权限运行的服务/webapp,以便通过.net安装和控制服务
  • 这些仅仅是选项,而不是建议,我个人认为WebDeploy本身就足够了。安装WebDeploy的痛苦远远超过了它提供的安全性。就我个人而言,我不希望任何UNC访问或从我的服务器(安全网络或不),所以我不推荐这个选项

    一种可能的解决办法是:

  • 使用WebDeploy发布新的/更新的站点文件;WebDeploy可以根据需要创建新网站和应用程序。您也应该能够将其重新用于windows服务
  • 对于windows服务,请在更新前后使用WebDeployrunCommand提供程序停止和启动服务,请参阅
  • 只要在服务器和ccnet服务器上安装WebDeploy,这一切都应该是可能的

    不需要IIS远程管理、文件共享和msbuild(及其包),从而减少了一些配置。WebDeploy的安装和配置可以自动化: