7

MSDeployでステージングモデルを使用して、いくつかのサイトをWebファームに展開しています。サイトはステージングボックスのIISでのみ構成され、MSDeployを使用してターゲットWebサーバーを最初から構築します。

ステージングボックスは、ライブになるサイトに対して独自のバインディング(つまり、ヘッダーエントリ、異なるIP /ポート、およびホストヘッダーなし)を使用します。-declareParamFileそれらをデプロイすると、最初に、次のようにパラメーターを宣言するパラメーター化されたパッケージを準備するために使用されるxmlファイルがあります(スイッチを使用)。

<parameters>
  <parameter name="site1">
    <parameterEntry kind="DestinationBinding" scope="Site1" match=":17000:" />
  </parameter>
</parameters>

matchしたがって、上記のXMLでは、属性がその値を持つバインディングと一致するように設定されているため、ステージングされたサイトがポート17000でホストされていることがわかります。

次に、各ライブサイトに展開するときに、そのマシンの正しいホストヘッダーとIPを指定する異なるパラメーターXMLを使用します。これは-setParamFileスイッチを使用して適用します。そのうちの1つの例を次に示します。

<parameters>
  <setParameter name="site1" value="[ip_addr]:[port]:[host_header]"/>
</parameters>

したがって、元のパラメーターは既知のバインディングの1つと一致するように宣言されているため、そのバインディングを、各ライブサーバーで実際に使用したいものに置き換えることができます。

私が今やりたいのは、サイトをデプロイし、サイトに新しい宛先バインディングを追加することです。これには、すべて同じIPアドレスにバインドされたさまざまなTLD(site.com、site.co.uk、site.caなど)が組み込まれています。およびポート。

これを実行したい理由は次のとおりです。

  • デプロイする新しいサイトに別のホスト名が必要ですが、独自のIPアドレス(ここではIPが不足しています!)を指定したくはありませんが、既存のサイトのIPを共有します。サーバーはすでに持っています。
  • これは、任意のホスト名に応答させるのではなく、すでにそこにあるサイトに特定のホスト名バインディングを追加することを意味します。
  • 現在、既存のサイトの負荷分散されたIP(.com、.us、.ca、.com.au)を指す4つのドメイン名があります。現時点では、Webサーバーがホストヘッダーを気にしないため機能しますが、新しいサイトが同じIP上にある場合は機能し、他のドメイン名は機能しなくなります。

問題は、そのような情報を追加する方法がないように思われることです。2番目のXMLに複数の要素を追加しようとしましsetParameterたが、それは単にバインディングを繰り返し上書きする効果があり、最後の要素が最終的な勝者になります。

1つの解決策は、ステージングボックスの各サイトに「プレースホルダー」バインディングを追加することです。これは、各ドメイン名、ポートなどのターゲット外部バインディングを表します。次に、2つのパラメータファイルを変更して、これらのバインディングを実際のバインディングに置き換えます。

しかし、私にはこれは完全に間違っていると感じます。つまり、ライブ展開に合わせてステージングボックスをモデル化することになります。逆のはずです。

MSDeployを使用してサイトバインディングを実際に追加することは可能ですか(ある場合、どのように?)、それとも置換のみをサポートしますか?

4

1 に答える 1

4

多くのヘッドバンギングの後、msdeployでDestinationBinding操作を使用して新しいバインディングを追加する方法はないようです。

可能になるのは、デプロイ後に実行されるスクリプトを添付して、毎回appcmdを使用してバインディングを追加することです。

したがって、msdeployを介した最初の同期では、これらのバインディングは削除されますが(ステージングサーバー上にないため)、appcmdスクリプトによって再度追加されます。

ただし、これは最新の状態に保つ必要があるもう1つのスクリプトであるため、実際には理想的なソリューションではありません。

于 2010-03-11T14:26:44.267 に答える