好吧,我已经走了很远-我不打算将此内容发布为问题的编辑,以免偶然发现尽管这似乎是在正确的轨道上,但可能有比我正在研究的方法更好的方法。图我让民主来决定!
使用此链接,我能够弄清楚应该与setParamFile
msdeploy 的开关一起使用的XML文件的格式。过去,我还将在安装Web部署工具后通过使用IIS中的嵌入式GUI来确定clarifyParamFile XML的格式。
因此,给定一个名为“ SiteA”的站点,在applicationHost.config文件中具有两个绑定条目,如下所示:
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
<binding protocol="https" bindingInformation="*:443:" />
</bindings>
(具体来说,这意味着-端口80上的任何IP地址和端口443上的任何IP地址)
实际使用的证书未存储在applicationHost.Config中,而是存储在Http.sys的配置中(根据本文)。当msdeploy为该站点准备一个程序包时,它将嵌入该信息-这可能不是我最后提到的祝福。
第一步是声明一个参数xml文件,我们将使用它来为目标实时服务器参数化单个程序包:
<parameters>
<!-- declare parameter for Http Binding -->
<parameter name="SiteA-http" description="SiteA Http Binding">
<parameterEntry kind="DestinationBinding" scope="SiteA" match=":80:" />
</parameter>
<!-- declare parameter for Https Binding -->
<parameter name="SiteA-https" description="SiteA Https Binding">
<parameterEntry kind="DestinationBinding" scope="SiteA" match=":443:" />
</parameter>
</parameters>
注意两个内部参数条目上的“ match =”属性值。这样可以确保替换正确的绑定。这是一个Regex(如本technet文章中所述),它选择将要用即将传递的参数值更改的现有绑定值。
我们将此另存为declareparameters.xml
。
完成此操作后,我们现在可以从暂存框中生成一个参数化的程序包,然后可以使用以下命令行从中进行部署(这是“映像”其中包含我们的SiteA的整个IIS):
msdeploy -verb:sync
-source:WebServer,computerName=localhost
-dest:package="parameterised.zip"
-declareParamFile:declareparameters.xml
如果网站位于其他Web服务器上,则用该Web服务器的名称替换“ localhost”。Web Deploy代理服务必须在目标计算机上运行才能正常工作。
现在,我们声明一个参数xml文件,该文件实际上将提供用于部署到实时服务器的参数值:
<parameters>
<setParameter name="SiteA-http" value="[fixedIPAddress]:80:"/>
<setParameter name="SiteA-https" value="[fixedIPAddress]:443:"/>
</parameters>
我们将其另存为
[targetServerName]parameters.xml
(在我的情况下,我有两个目标服务器,因此每个服务器都有自己的参数xml,文件名不同,每个IP略有不同)。
最后,我们可以使用以下命令行对目标服务器执行参数化部署:
msdeploy -verb:sync
-source:package="parameterised.zip"
-dest:WebServer,computerName="[targetServerName]"
-setParamFile=[targetServerName]parameters.xml
因此,现在我们可以更改Http或Https绑定的IP,并且如果原始副本足够不同,则可以参数化该站点可能需要的任意数量的单个绑定。
到目前为止,它有一个缺点-因此,请提供任何其他答案-将SSL配置从源计算机复制到软件包中-这意味着为了使实时站点上的SSL配置在部署时正确,登台计算机和实时服务器必须使用完全相同的SSL证书。
最好的是,登台框可以使用自签名或内部证书进行完整性检查,然后将实际的SSL证书应用于实际部署-再次从XML文件进行参数设置。