自动部署网站

时间:2013-05-28 03:16:58

标签: deployment web-deployment msdeploy

我打算对网站进行自动部署,但此刻我还是陷入了困境。我查看了MS-Deploy,它获得了部署网站的所有功能。我有一个创建了一个Web应用程序包(.ZIP文件),我在我的本地机器上测试了它正在部署网站,即

  1. 在默认网站下创建Web应用程序
  2. 在c:\ inetpub \ wwwroot目录中发布文件
  3. 在目录等上设置ACL
  4. 但我想要实现更多的额外步骤,例如:

    1. 检查默认网站中是否存在Web应用程序,如果不存在 创建Web应用程序
    2. 检查应用程序池是否存在,如果不是,则创建应用程序池 (给定名称)具有特定凭据并将App-pool分配给Web 应用
    3. 在部署之前,请获取现有Web应用程序的备份副本(IF 存在)
    4. 发布离线页面(app_offline.htm)
    5. 将文件发布到应用程序目录
    6. 将AppSettings部分(在web.config文件中)替换为实际值
    7. 加密Web.config连接字符串
    8. 如果在安装Web应用程序时出现任何错误,请将Web应用程序回滚到其先前版本

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

      如果您需要更多信息,请与我们联系。

      提前致谢

1 个答案:

答案 0 :(得分:0)

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

  1. 如果您使用iisApp提供商,则为默认行为。
  2. 我知道您可以使用appPoolConfig提供程序执行此操作,但我不确定如何将此操作和#1作为同一个程序包的一部分一起运行。也许作为预同步或后同步命令的一部分?
  3. 这是v3中的标准,只要它在服务器上设置即可。我自己没用,但是read this无论如何。
  4. 繁琐。 MSDeploy不支持,但如果需要,则you can vote for it。另外,check out this SO answer(也值得查看PackageWeb,但同样的答案'作者)。
  5. 不确定我是否跟进。这是成功部署的一部分,当然可以吗?
  6. 使用web.config转换和上述PackageWeb可选的方法来做到这一点。另请查看Web Publish Profiles
  7. 困难。我的理解是加密是基于machine.config的,所以你要么必须运行一个后同步脚本,它会在远程服务器上运行某种远程Powershell脚本来使用{{1来加密web.config或者你必须在构建过程中加密配置,然后使用自定义密钥和RSA提供程序(some info here)进行破解。
  8. 我希望有所帮助。正如我所说,我不是专家,很高兴被那些知识渊博的人纠正。也许还值得一提的是,如果你通过命令行使用它而不是从VS创建软件包,MSDeploy会更强大,尽管有一些学习曲线可以使用它。