我正在使用MSDeploy的暂存模型将我们的几个站点部署到Web场。这些站点仅在暂存框中的IIS中配置,然后使用MSDeploy从头开始构建目标Web服务器。
暂存框为将要生效的站点使用自己的绑定(即没有标头条目,不同的IP /端口和没有主机标头)。当我部署它们时,我首先有一个xml文件,用于准备一个参数化包(使用-declareParamFile
开关),它声明参数如下:
<parameters>
<parameter name="site1">
<parameterEntry kind="DestinationBinding" scope="Site1" match=":17000:" />
</parameter>
</parameters>
因此,在上面的XML中,您可以看到暂存的站点托管在端口17000上,因为match
属性设置为匹配具有该值的绑定。
当我然后部署到每个实时站点时,我使用不同的参数XML来指定该机器的正确主机头和IP - 我使用-setParamFile开关应用它。以下是其中一个例子。
<parameters>
<setParameter name="site1" value="[ip_addr]:[port]:[host_header]"/>
</parameters>
因此,因为原始参数被声明为匹配其中一个已知绑定 - 我可以将该绑定替换为我实际希望它在每个实时服务器上的绑定。
我现在要做的是部署网站并添加 新的 目标绑定到它,其中包含我们拥有的不同TLD - 即site.com,site .co.uk,site.ca等,都绑定在同一个IP地址和端口上。
想要这样做的原因是:
问题是我认为似乎没有任何方法可以添加此类信息。我尝试在第二个XML中添加多个setParameter
元素,但这只是重复覆盖绑定的效果,最后一个作为最终的赢家。
我可以为一个解决方案框中的每个网站添加“占位符”绑定,它代表每个域名,端口等的目标外部绑定;然后我修改了两个参数文件来替换那些与真实的绑定。
但对我而言,这感觉完全错误 - 那就是将暂存框建模为适合实时部署;它应该是另一种方式。
是否可以用MSDeploy实际添加网站绑定(如果是,如何?),还是只支持替换?
答案 0 :(得分:4)
经过多次打击之后,似乎无法使用msdeploy使用DestinationBinding操作添加新绑定。
可能会在部署之后附加要执行的脚本,每次都使用appcmd添加绑定。
因此,通过msdeploy进行的初始同步将删除这些绑定(因为它们不在登台服务器上),但appcmd脚本会再次添加它们。
不是一个理想的解决方案,因为它是另一个必须保持最新的脚本。