Я использую модель подготовки с MSDeploy для развертывания нескольких наших сайтов на веб-ферме. Сайты настроены в IIS на полях подготовки только, и затем MSDeploy используется для создания целевых веб-серверов с нуля.
Поле подготовки использует свою собственную привязку (т.е. никакие записи заголовка, другой дюйм/с/порты и никакие заголовки хоста) для сайтов, которые будут живы. Когда я развертываю их, мне сначала использовали 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>
Так, потому что исходный параметр, как объявляют, соответствует одной из известной привязки - я могу заменить ту привязку тем, что я на самом деле хочу, чтобы это было на каждом живом сервере.
Что я хочу сделать, теперь должен развернуть сайт и добавить новую целевую привязку к нему, которая включает другой TLDs, который мы имеем - т.е. site.com, site.co.uk, site.ca и т.д., все привязали тот же IP-адрес и порт.
Причины желания сделать это:
Проблема, я не думаю, кажется, существует любой способ добавить такую информацию. Я попытался добавить несколько setParameter
элементы во втором XML, но это просто имеет эффект повторной перезаписи привязки с последней как возможный победитель.
Одно решение состоит в том, чтобы я добавил привязку 'заполнителя' для каждого из сайтов на поле подготовки, которые представляют целевую внешнюю привязку для каждого доменного имени, порт и т.д.; и затем я изменяю эти два файла параметров для замены той привязки реальными.
Но мне это чувствует себя абсолютно неправильным - который смоделировал бы поле подготовки для удовлетворения живому развертыванию; это должно быть наоборот.
Действительно ли возможно на самом деле добавить привязку сайта с MSDeploy (если так, как?), или это только поддерживает замену?
После долгих размышлений выяснилось, что нет никакого способа добавить новые привязки с помощью операции DestinationBinding с msdeploy.
Можно было бы прикрепить сценарий, который будет выполняться после развертывания, который каждый раз добавляет привязки с помощью appcmd.
Итак, первоначальная синхронизация через msdeploy удалит эти привязки (потому что они не находятся на промежуточном сервере), но сценарий appcmd затем добавит их снова.
Не совсем идеальное решение, так как это еще один скрипт, который нужно постоянно обновлять.