将应用程序更新部署到多个站点

时间:2009-03-26 22:22:02

标签: .net asp.net windows deployment

我有一个应用程序,包括ASP.NET Web应用程序,几个Windows服务和一个SQL Server 2005数据库。此应用程序在多个站点复制,因此每个站点都有一个包含所有部分的服务器(Web应用程序,服务和数据库)。目前,部署更新的过程如下:

数据库

  1. 脚本数据库更改(使用Management Studio中的生成脚本)。
  2. 在Management Studio中连接到站点的数据库。
  3. 在网站的数据库上运行SQL脚本。
  4. 重复2&每个站点3个。
  5. Web应用程序

    1. 在Visual Studio中使用发布。
    2. 从已发布的副本中删除web.config。
    3. Zip网页应用程序文件。
    4. 将zip文件复制到网站。
    5. 远程桌面到该站点以解压缩文件。
    6. 必要时手动修改web.config。
    7. 为每个站点重复4-6。
    8. Windows服务

      1. 在Visual Studio中构建项目。
      2. Zip重建二进制文件。
      3. 将zip文件复制到网站。
      4. 远程桌面到该网站。
      5. 停止服务。
      6. 卸载旧版本。
      7. 安装新版本。
      8. 必要时手动修改.config。
      9. 启动服务。
      10. 为每个站点重复3-9。
      11. 目前有3个网站和部署令人讨厌但可管理,但在这一年内,我们很可能会有10个或11个网站,并且不得不以这种方式部署更新会让我自杀。

        所以,我正在寻找有关如何自动化此过程的建议。我已经开始研究学习MSBuild来合并配置和将文件复制到我的服务器,但我不确定它会花多长时间。感谢。

6 个答案:

答案 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。