В настоящее время мы используем MS Web Deployment Tool для синхронизации живого веб-сайта и некоторых веб-сервисов от промежуточного сервера до двух живых серверов.
Промежуточный блок размещает сайт на любом IP-адресе порта 17000, тогда как два работающих сервера сбалансированы по нагрузке и имеют разные IP-адреса для каждого из них.
В настоящее время я генерирую два отдельных пакета для развертывания - по одному для каждой машины - используя операцию синхронизации и задав параметр DestinationBinding следующим образом:
msdeploy -verb:sync
-source:WebServer,computerName=localhost
-dest:package="machinename.zip"
-setParam:type="DestinationBinding",scope="SiteName",value="ip_address:port:".
(Разделите на несколько строк, чтобы было легче читать!)
Я запускаю это дважды, с разными целевыми именами файлов и IP-адресами для каждой из двух машин. Когда дело доходит до развертывания, я просто выполняю синхронизацию каждого пакета с соответствующим сайтом.
Я знаю, я знаю - я должен быть в состоянии сделать это, сгенерировав один параметризованный пакет, а затем, возможно, используя переключатель SetParamFile для каждого из двух серверов - поверьте мне, я бы хотел, но документация по этому вопросу откровенно не существует.
Теперь мне нужно настроить и развернуть привязку HTTP и HTTPS для этого сайта; включая также сертификат SSL, который будет использоваться.
Я добавил привязку SSL для сайта в промежуточном окне - в котором используется сертификат разработки (который необходимо заменить - или в промежуточном окне будет использоваться живой сертификат?), И теперь приведенная выше командная строка дает эффект замены целевого IP-адреса в записях http и https.
Похоже, я не могу указать несколько привязок плюс информацию сертификата в значении DestinationBinding в -setParam выше, так что кто-нибудь знает, как мне поступить?
Любая помощь с благодарностью.
источник
Ответы:
Итак, я получил это далеко - я не публикую это как редактирование вопроса, потому что нет шансов, что хотя это, кажется, на правильном пути, может быть, есть лучший способ, чем то, над чем я работал , Рисунок, который я позволил бы демократии решить!
Используя эту ссылку, я смог выяснить формат файла XML, который следует использовать с
setParamFile
переключателем для msdeploy. В прошлом я также выяснял формат для XML-файла DeclareParamFile, используя встроенный графический интерфейс в IIS после установки Web Deployment Tool.Итак, для сайта под названием «SiteA» с двумя обязательными записями в файле applicationHost.config:
(Что означает, в частности - любой IP-адрес на порту 80 и любой IP-адрес на порту 443)
Фактический используемый сертификат сохраняется не в applicationHost.Config, а в конфигурации для Http.sys (согласно этой статье ). Когда msdeploy готовит пакет для сайта, он будет встраивать эту информацию - что, возможно, не является благословением, как я упоминаю в конце.
Первый шаг - объявить XML-файл параметров, который мы будем использовать для параметризации одного пакета для целевых живых серверов:
Обратите внимание на значения атрибута 'match =' в двух внутренних записях параметров. Это гарантирует, что правильная привязка будет заменена. Это Regex (как описано в этой статье Technet ), который выбирает существующие значения привязки, которые должны быть изменены, со значением параметра, которое будет передано в данный момент.
Мы сохраняем это как
declareparameters.xml
.Имея это в виду, мы можем теперь создать параметризованный пакет из нашего промежуточного окна, из которого мы можем затем развернуть, используя эту командную строку (это «образ» целого IIS, в котором присутствует наш SiteA):
Если веб-сайт находится на другом веб-сервере, замените «localhost» именем этого веб-сервера. Чтобы это работало, на целевом компьютере должна быть запущена служба агента Web Deploy.
Теперь мы объявляем XML-файл параметров, который фактически предоставит значения параметров для развертывания на работающем сервере:
И мы сохраняем это как
(в моем случае у меня есть два целевых сервера, поэтому каждый получает свои собственные параметры xml с разными именами файлов и немного разными IP-адресами на каждом).
Наконец, мы можем выполнить параметризованное развертывание на целевом сервере (ах) с помощью этой командной строки:
Так что теперь мы можем изменить IP-адреса привязки Http или Https и, если оригиналы достаточно разные, мы можем параметризовать любое количество отдельных привязок, которые могут потребоваться для этого сайта.
Пока у этого есть один недостаток - поэтому любые альтернативные ответы приветствуются - конфигурация SSL копируется с исходного компьютера в пакет - это означает, что для правильной конфигурации SSL на действующем сайте при развертывании, и промежуточный компьютер, и Живой сервер (ы) должен использовать точно такие же сертификаты SSL.
Было бы замечательно, если бы промежуточный ящик мог использовать самоподписанный или внутренний сертификат для проверки работоспособности, а затем применить настоящий сертификат SSL к фактическому развертыванию - опять же, параметризованный из файлов XML.
источник
Вы можете заменить номер порта, добавив ключ командной строки -replace
msdeploy -verb: sync -source: WebServer, computerName = localhost -dest: package = "machinename.zip" -replace: objectName = binding, targetAttributeName = bindingInformation, match =: 443:, replace =: 445:
источник