使用MSDeploy将站点的*new*DestinationBinding添加到包中

And*_*tan 7 deployment iis iis-7 msdeploy iis-7.5

我正在使用带有MSDeploy的临时模型将我们的几个站点部署到Web场.这些站点仅在暂存框中的IIS中配置,然后使用MSDeploy从头开始构建目标Web服务器.

登台框为将要生效的站点使用自己的绑定(即没有标头条目,不同的IP /端口和没有主机标头).当我部署它时,我首先有一个xml文件用于准备一个参数化包(使用-declareParamFile开关),它声明参数如下:

<parameters>
  <parameter name="site1">
    <parameterEntry kind="DestinationBinding" scope="Site1" match=":17000:" />
  </parameter>
</parameters>
Run Code Online (Sandbox Code Playgroud)

因此,在上面的XML中,您可以看到暂存的站点托管在端口17000上,因为该match属性设置为匹配具有该值的绑定.

当我然后部署到每个实时站点时,我使用不同的参数XML来指定该机器的正确主机头和IP - 我使用-setParamFile开关应用它.这是其中一个例子.

<parameters>
  <setParameter name="site1" value="[ip_addr]:[port]:[host_header]"/>
</parameters>
Run Code Online (Sandbox Code Playgroud)

因此,因为原始参数被声明为匹配其中一个已知绑定 - 我可以将该绑定替换为我实际希望它在每个实时服务器上的绑定.

我现在要做的是部署网站并添加新的目标绑定,其中包含我们拥有的不同顶级域名(即site.com,site.co.uk,site.ca等),所有这些都绑定在同一个IP地址上和港口.

想要这样做的原因是:

  • 我们有一个我们想要部署的新站点,需要一个不同的主机名,但是我们不想给它自己的IP地址(在这里耗尽IP!)但是让它共享一个现有站点的IP.服务器已经有了.
  • 这意味着将特定的主机名绑定添加到已经存在的站点,而不是让它响应任何主机名.
  • 我们目前有四个域名指向现有站点的负载均衡IP(.com,.us,.ca,.com.au).目前它的工作原理是因为Web服务器不关心主机头 - 但是当新站点使用相同的IP时,它将会,并且其他域名将不再起作用.

问题是我认为似乎没有任何方法可以添加此类信息.我尝试setParameter在第二个XML中添加多个元素,但这只是重复覆盖绑定的效果,最后一个作为最终的赢家.

一个解决方案是我为登台框中的每个站点添加"占位符"绑定,它代表每个域名,端口等的目标外部绑定; 然后我修改两个参数文件来替换那些与真实绑定的绑定.

但对我来说,这感觉是完全错误的 - 这将模拟升级盒以适应实时部署; 它应该是相反的方式.

是否可以使用MSDeploy 实际添加站点绑定(如果是,如何?),还是仅支持替换?

And*_*tan 4

经过多次绞尽脑汁后,似乎无法使用 msdeploy 的 DestinationBinding 操作来添加新绑定。

可能的方法是附加一个在部署后执行的脚本,每次都使用 appcmd 添加绑定。

因此,通过 msdeploy 进行的初始同步将删除这些绑定(因为它们不在临时服务器上),但 appcmd 脚本将再次添加它们。

但这并不是一个真正理想的解决方案,因为它是另一个必须保持最新的脚本。