2

我听说过很多部署 asp.net 应用程序的策略,但不太确定哪种策略最适合我的需求。

我有一个 asp.net 4 应用程序。我有单独的开发/登台/生产环境(不同的 web.configs)。我还需要管理 sql server 的更改。我可能有超过 1 个数据库服务器和超过 1 个应用程序服务器来推送更改。理想情况下,我想点击一个按钮并说“部署到登台”或“部署到生产”,它将部署代码/数据库/配置文件带到正确的服务器。理想情况下,我也希望有一些回滚过程,以防发布错误。

我听说过 xcopy/robocopy 策略、MSDeploy(现在称为 Web Deploy?)策略,以及构建 MSI 包以进行部署。

其中哪一个似乎最适合这种需求?

4

1 回答 1

0

方法 #1 如果你有时间,我建议使用CruiseControl.NET。至少有一段时间,stackoverflow 团队将其用于部署。

方法 #2 就复制策略而言,我建议将 7zip 和 ftp 组合用于应用程序和媒体。7Zip 很好,因为它允许您排除文件类型 (web.config)、文件夹和文件类型,并允许您以不同的方式压缩不同的文件。例如,压缩 PNG 是没有意义的。请注意,这每次都会进行完整部署。因此,如果您有大型媒体文件夹,我会单独处理它们。

至于数据库,我相信您使用 Redgate 的 SQL Compare 会获得最好的运气。它们是商业应用程序,但它们非常非常好。他们在 stackoverflow 播客中被多次正面提及。

  • 在开发/构建服务器上构建一个 CMD 文件,该文件生成主 7zip 文件并将其通过 FTP 传输到登台(或生产)服务器上的专用文件夹。我最终多次调用 7zip 将文件输入到单个 7zip 文件中,每批使用不同的压缩方法。
  • 为每个登台或生产服务器构建一个 CMD 文件。该文件将执行正确的文件备份,并将 7zip 文件解压缩到正确的位置。

部署到 staging 将如下所示:

  • 执行您的 7zip-prep 命令文件,该文件将触发 FTP 上传到登台服务器上的专用 FTP 文件夹
  • 通过 SQL Compare 生成的脚本对暂存数据库服务器执行数据库更改
  • 在登台服务器上执行 7zip 提取命令文件

这是我使用的方法。我没有花时间掌握 CruiseControl.NET,但当我这样做时,我可能会使用它,至少对于更大的应用程序。这不是一键式部署,但它允许每天进行多次高效部署(就像我几年来一直在做的那样)。7zip 方法很好,因为一旦您有了命令文件,您就可以快速复制它们并将它们用于新项目。

于 2013-02-11T04:03:25.393 回答