2010-02-17 21 views
4

我使用的是MSDeploy分段模型的一對夫婦我們網站的部署到Web農場包。這些站點僅在臨時框中的IIS中進行配置,然後使用MSDeploy從頭開始構建目標Web服務器。爲網站添加一個新的* * DestinationBinding使用MSDeploy

分期盒使用它自己的綁定(即無頭項,不同的IP /端口,沒有主機頭)的網站,將現場。當我部署他們,我必須首先用於製備參數化組件(使用-declareParamFile開關)的XML文件,該文件聲明參數如下:

<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,頁面沒有自動跳轉,.ca和.com.au)。目前它的工作原理是因爲網絡服務器不關心主機頭 - 但是當新網站使用相同的IP時,它將會,而其他域名將不再起作用。

問題是我不認爲似乎有任何添加此類信息的方式。我已經嘗試在第二個XML中添加多個setParameter元素,但這只是重複覆蓋綁定的效果,最後一個作爲最終獲勝者。

一個解決方案是爲我添加「佔位符」綁定爲每個站點在臨時框,代表目標外部綁定爲每個域名,端口等;然後我修改這兩個參數文件以將那些綁定替換爲真實的綁定。

但是對我來說這種感覺完全錯誤 - 那就是將舞臺箱模型化爲套裝的實況部署;它應該是相反的。

是否有可能實際上添加與MSDeploy的網站綁定(如果是這樣,怎麼樣?),還是它只支持替換?

+0

我確實想過在ServerFault上詢問這個問題,但是我詢問的最後一個沒有得到任何活動,也沒有真正的答案。我認爲迄今爲止有更多的開發者使用msdeploy,所以我更有可能在這裏採取一些行動! – 2010-02-17 13:08:32

回答

3

經過很多人頭撞之後,似乎沒有辦法使用帶有msdeploy的DestinationBinding操作添加新綁定。

什麼是可能的將附加一個腳本,部署後執行,每次使用appcmd添加綁定。

因此,通過msdeploy的初始同步將刪除那些綁定(因爲它們不在登臺服務器上),但appcmd腳本會再次添加它們。

雖然不是一個理想的解決方案,但它是另一個必須保持最新的腳本。

+0

令我驚訝的是msdeploy的靈活性如何 - 沒有FTP支持,也沒有解綁SSL綁定的能力(這是負載均衡所必需的) – 2012-01-25 11:26:11

+0

我花了幾天的時間對此做出了相同的結論。綁定只能通過appHostConfig>包同步(在構建期間發生)創建,需要實際的站點參考。沒有辦法爲構建過程中的MSDeploy引用提供虛假站點,或以任何方式注入值。 – 2012-06-13 21:26:47