我使用 MSDeploy 的暂存模型将我们的几个站点部署到网络场。这些站点仅在暂存盒上的 IIS 中进行配置,然后使用 MSDeploy 从头开始​​构建目标 Web 服务器。

临时盒对将要上线的站点使用自己的绑定(即没有标头条目、不同的 IP/端口和没有主机标头)。当我部署它们时,我首先有一个 xml 文件,用于准备参数化包(使用 -declareParamFile switch) 声明参数如下:

<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 地址和端口上。

想要这样做的原因是:

  • 我们有一个要部署的新站点,需要不同的主机名,但我们不想给它自己的 IP 地址(此处 IP 已用完!),而是让它共享现有站点的 IP服务器已经有了。
  • 这意味着将特定的主机名绑定添加到已有的站点,而不是让它响应任何主机名。
  • 目前,我们有四个域名指向现有站点的负载平衡 IP(.com、.us、.ca、.com.au)。目前它可以工作,因为网络服务器不关心主机标头 - 但当新站点使用相同的 IP 时,它会关心,而其他域名将不再工作。

问题是我认为似乎没有任何方法可以添加此类信息。我尝试过添加多个 setParameter 第二个 XML 中的元素,但这只会重复覆盖绑定,最后一个成为最终的获胜者。

一种解决方案是我为暂存盒上的每个站点添加“占位符”绑定,它代表每个域名、端口等的目标外部绑定;然后我修改这两个参数文件以将这些绑定替换为真实的绑定。

但对我来说,这感觉完全错误 - 这将是对暂存盒进行建模 套装 现场部署;应该是相反的。

是否有可能实际上 添加 与 MSDeploy 的站点绑定(如果是,如何?),还是仅支持替换?

有帮助吗?

解决方案

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top