Я использую промежуточную модель с MSDeploy для развертывания нескольких наших сайтов в веб-ферме. Сайты настраиваются в IIS только на промежуточных блоках, а затем MSDeploy используется для создания целевых веб-серверов с нуля.
В промежуточном окне используются собственные привязки (т. Е. Нет записей заголовков, разных 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-адресу и порту.
Причины для этого:
- У нас есть новый сайт, который мы хотим развернуть, для которого потребуется другое имя хоста, но мы не хотим присваивать ему собственный IP-адрес (здесь не хватает IP-адресов!), Но чтобы он разделял IP-адрес с существующим сайт на серверах уже есть.
- Это означает добавление определенных привязок имени хоста к сайту, который уже там, вместо того, чтобы отвечать на любое имя хоста.
- У нас есть четыре доменных имени, которые в настоящее время указывают на IP-адрес существующего сайта с балансировкой нагрузки (.com, .us, .ca, .com.au). На данный момент это работает, потому что веб-сервер не заботится о заголовке узла - но когда новый сайт переходит на тот же IP, он будет работать, и другие доменные имена больше не будут работать.
Проблема в том, что я не думаю, что есть какой-либо способ добавить такую информацию. Я попытался добавить несколько элементов setParameter
во второй XML, но это просто приводит к многократной перезаписи привязки, при этом последний становится победителем.
Одним из решений для меня является добавление привязок «заполнителей» для каждого из сайтов в промежуточном окне, которые представляют целевые внешние привязки для каждого доменного имени, порта и т. Д .; а затем я изменяю два файла параметров, чтобы заменить эти привязки реальными.
Но для меня это кажется совершенно неправильным - это было бы моделирование промежуточной коробки для , подходящего живого развертывания; должно быть наоборот.
Можно ли на самом деле добавить привязки сайта с помощью MSDeploy (если да, как?), Или он поддерживает только замену?