1

我打算自动部署一个网站,但我现在有点卡住了。我看过 MS-Deploy,它拥有部署网站的所有功能。我创建了一个 Web 应用程序包(.ZIP 文件),并在我的本地计算机上对其进行了测试,它正在部署网站,即

  1. 在默认网站下创建 Web 应用程序
  2. 在 c:\inetpub\wwwroot 目录中发布文件
  3. 在目录等上设置 ACL

但我想实现更多额外的步骤,例如:

  1. 检查默认网站中是否存在 Web 应用程序,如果不存在则创建 Web 应用程序
  2. 检查应用程序池是否存在,如果不存在,则使用特定凭据创建应用程序池(给定名称)并将应用程序池分配给 Web 应用程序
  3. 在部署之前备份现有 Web 应用程序(如果存在)
  4. 发布离线页面 (app_offline.htm)
  5. 将文件发布到应用程序目录
  6. 将 AppSettings 部分(在 web.config 文件中)替换为实际值
  7. 加密 Web.config 连接字符串

如果在安装 Web 应用程序时出现任何错误,请将 Web 应用程序回滚到之前的版本

问题是我是否可以通过 MS-Deploy 实现所有这些功能,还是我需要编写任何脚本,请建议我应该使用哪种脚本语言

如果您需要更多信息,请告诉我。

提前致谢

4

1 回答 1

0

我不是这个主题的专家,但最近一直在对使用 MSDeploy 进行自动化部署进行一些研究,并认为我可以提供以下内容;

  1. 如果您使用iisApp提供程序,这是默认行为。
  2. 我知道您可以使用appPoolConfig提供程序执行此操作,但我不确定您将如何将它和 #1 作为同一个包的一部分一起运行。也许作为同步前或同步后命令的一部分?
  3. 这是 v3 中的标准,只要它是在服务器上设置的。我自己没用过,但还是了。
  4. 繁琐。MSDeploy 不支持,但您可以根据需要投票。另外,请查看此 SO 答案(也值得查看PackageWeb,但答案的作者相同)。
  5. 不确定我是否跟随。这是作为成功部署的一部分完成的,确定吗?
  6. 使用 web.config 转换和可选的前面提到的PackageWeb来实现这一点。也检查出来Web Publish Profiles
  7. 难的。我的理解是加密基于 machine.config,因此您要么必须运行一个同步后脚本,该脚本将在远程服务器上运行某种远程 Powershell 脚本以使用 加密 web.config aspnet_regiis,要么您必须在构建过程中加密配置,然后使用自定义密钥和 RSA 提供程序(这里有一些信息)。

我希望这会有所帮助。正如我所说,我不是专家,很高兴被那些更有知识的人纠正。也许还值得一提的是,如果您通过命令行使用 MSDeploy,而不是从 VS 创建包,那么它的功能要强大得多,尽管它有一些学习曲线。

于 2013-05-28T14:14:56.630 回答