我有一个应用程序,包括ASP.NET Web应用程序,几个Windows服务和一个SQL Server 2005数据库。此应用程序在多个站点复制,因此每个站点都有一个包含所有部分的服务器(Web应用程序,服务和数据库)。目前,部署更新的过程如下:
目前有3个网站和部署令人讨厌但可管理,但在这一年内,我们很可能会有10个或11个网站,并且不得不以这种方式部署更新会让我自杀。
所以,我正在寻找有关如何自动化此过程的建议。我已经开始研究学习MSBuild来合并配置和将文件复制到我的服务器,但我不确定它会花多长时间。感谢。
答案 0 :(得分:5)
采用您熟悉的任何脚本语言(看起来甚至.bat都适合您)并获取PsTools
然后,您可以使用psexec和psservice远程控制进程和服务。您仍然必须自己编写脚本,但不必远程登录(例如,解压缩和复制文件),对一台服务器有效的方法可以使用10。
答案 1 :(得分:2)
MSBUILD几乎可以满足您的所有需求。但听起来您需要一些自定义任务才能完全自动化。但是可以付出一点努力。
MSBUILD实际上已经分开了你的项目。它是项目文件本身。它基本上是XML背后的一切。在这个XML中,PreBuild和PostBuild事件会被触发,你可以复制,粘贴命令等。
此外,您可能对Web部署项目感兴趣,这些项目允许您为要构建的每个环境提供多个web.config文件。
对于更高级的方案,您可以创建自己的自定义任务,与MSBUILD的事件集成。您甚至可以使用这些任务的条件。下面的参考资料讲述了所有相关内容。
有关MSBUILD的更多信息,请转到http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx
答案 2 :(得分:1)
对于数据库开发,请尝试http://www.deltasql.org/wiki。
有一个中央服务器(在PHP / mySQL中,可以使用XAMPP软件包轻松安装)存储SQL delta脚本。在每个模式上,您需要添加一个表tbsynchronize,其中包含在该数据库上执行的最新脚本。然后,deltasql服务器生成一个同步脚本,其中包含该模式的缺失脚本。
答案 3 :(得分:0)
尽可能自动化和编写脚本,甚至是FTP部分。使用ant / nant和批处理文件为您执行重复的操作。如果可能的话,提供撤销脚本以防止事情变得糟糕 我在linux框中用3秒钟更新生产代码(使用脚本化进程:备份,delta sql脚本,发布代码,重启服务器)但是在Windows上我不确定你能做到多么巧妙。
答案 4 :(得分:0)
好的,所以我没有完整的答案,但为什么要卸载这些服务。您可以阻止它们并替换文件。我一直这样做。但我希望看到你得到的答案,因为我有同样的问题。
答案 5 :(得分:0)
您可以在Visual Studio中使用部署项目和Web部署项目来创建.MSI文件以执行安装。您甚至可以提示某些网站之间可能存在差异的信息。
另外,请查看IIS Web Deployment tool。它刚刚离开RC1。