Развертывание веб-пакетов
В этом разделе описывается, как опубликовать пакеты веб-развертывания на удаленном сервере с помощью средства веб-развертывания службы IIS (IIS) 2.0.
Существует два основных способа развертывания веб-пакета на удаленном сервере:
- Вы можете напрямую использовать программу командной строки MSDeploy.exe.
- Вы можете запустить файл [имя проекта].deploy.cmd , который создает процесс сборки.
Конечный результат совпадает независимо от того, какой подход используется. По сути, все .deploy.cmd файла состоит в том, чтобы запустить MSDeploy.exe с определенными предопределенными значениями, чтобы не предоставлять столько сведений для развертывания пакета. Это упрощает процесс развертывания. С другой стороны, использование MSDeploy.exe напрямую обеспечивает гораздо большую гибкость по сравнению с развертыванием пакета.
Какой подход вы используете, зависит от различных факторов, включая контроль над процессом развертывания и то, предназначен ли служба удаленного агента веб-развертывания или обработчик веб-развертывания. В этом разделе объясняется, как использовать каждый подход и определить, когда подход подходит.
Задачи и пошаговые руководства в этом разделе предполагают, что:
- Вы создали и упаковали веб-приложение, как описано в разделе "Создание и упаковка проектов веб-приложений".
- Вы изменили файл SetParameters.xml , чтобы предоставить правильные значения параметров для целевой среды, как описано в разделе "Настройка параметров для развертывания веб-пакетов".
Запуск файла [имя проекта].deploy.cmd — это самый простой способ развертывания веб-пакета. В частности, использование файла .deploy.cmd предлагает следующие преимущества по сравнению с использованием MSDeploy.exe напрямую:
- Вам не нужно указывать расположение пакета веб-развертывания— файл .deploy.cmd уже знает, где он находится.
- Не нужно указывать расположение файла SetParameters.xml — файл .deploy.cmd уже знает, где он находится.
- Вам не нужно указывать поставщиков MSDeploy источника и назначения— файл .deploy.cmd уже знает, какие значения следует использовать.
- Вам не нужно указывать параметры операции MSDeploy— файл .deploy.cmd добавляет часто необходимые значения в команду MSDeploy.exe автоматически.
Прежде чем использовать файл .deploy.cmd для развертывания веб-пакета, необходимо убедиться в том, что:
- Файл .deploy.cmd [ имя проекта]. SetParameters.xml файл и веб-пакет ([имя проекта].ZIP) находятся в той же папке.
- Веб-развертывание (MSDeploy.exe) устанавливается на компьютере, на котором выполняется файл .deploy.cmd .
Файл .deploy.cmd поддерживает различные параметры командной строки. При запуске файла из командной строки это базовый синтаксис:
[project name].deploy.cmd [/T | /Y]
[/M:<computer name>]
[/A:<Basic | NTLM>]
[/U:<user name>]
[/P:</pass/word>]
[/L]
[/G:<true | false>]
[Additional MSDeploy.exe flags]
Необходимо указать флаг /T или флаг /Y , чтобы указать, требуется ли выполнить пробное выполнение или динамическое развертывание соответственно (не используйте оба флага в одной команде). В этой таблице объясняется назначение каждого из этих флагов.
Флаг | Description |
---|---|
/T | Вызывает MSDeploy.exe с флагом -whatif , который указывает на пробную версию. Вместо развертывания пакета он создает отчет о том, что произойдет, если вы развернули пакет. |
/Y | Вызывает MSDeploy.exe без флага Whatif . При этом пакет развертывается на локальном компьютере или указанном целевом сервере. |
/M | Указывает имя целевого сервера или URL-адрес службы. Дополнительные сведения о значениях, которые можно указать здесь, см. в разделе "Вопросы конечной точки" в этом разделе. Если опустить флаг /M , пакет будет развернут на локальном компьютере. |
/A | Указывает тип проверки подлинности, который MSDeploy.exe должен использоваться для выполнения развертывания. Возможные значения: носителя, NTLM и Basic. Если опустить флаг /A , тип проверки подлинности по умолчанию используется ntLM для развертывания в службе удаленного агента веб-развертывания и в "Базовый " для развертывания в обработчике веб-развертывания. |
/U | Указывает имя пользователя. Это применимо только в том случае, если вы используете обычную проверку подлинности. |
/P | Указывает пароль для служб . Это применимо только в том случае, если вы используете обычную проверку подлинности. |
/L | Указывает, что пакет должен быть развернут в локальном экземпляре IIS Express. |
/G | Указывает, что пакет развертывается с помощью параметра поставщика tempAgent. Если опустить флаг /G , значение по умолчанию равно false. |
Примечание.
Каждый раз, когда процесс сборки создает веб-пакет, он также создает файл с именем [имя проекта].deploy-readme.txt , который объясняет эти параметры развертывания.
Помимо этих флагов можно указать параметры операции веб-развертывания в качестве дополнительных .deploy.cmd параметров. Все дополнительные параметры, которые вы указали, просто передаются в базовую команду MSDeploy.exe. Дополнительные сведения об этих параметрах см. в разделе "Параметры операции веб-развертывания".
Предположим, что вы хотите развернуть проект веб-приложения ContactManager.Mvc в тестовой среде, запустив файл .deploy.cmd . Тестовая среда настроена на использование службы удаленного агента веб-развертывания, как описано в разделе "Настройка веб-сервера для публикации веб-развертывания (удаленный агент)". Чтобы развернуть веб-приложение, необходимо выполнить следующие действия.
Развертывание веб-приложения с помощью файла .deploy.cmd
Создайте и упаковите проект веб-приложения, как описано в разделе "Сборка и упаковка проектов веб-приложения".
Измените файл ContactManager.Mvc.SetParameters.xml , чтобы он содержал правильные значения параметров для тестовой среды, как описано в разделе "Настройка параметров для развертывания веб-пакета".
Откройте окно командной строки и перейдите к расположению файла ContactManager.Mvc.deploy.cmd .
Введите эту команду и нажмите клавишу ВВОД:
ContactManager.Mvc.deploy.cmd /Y /M:TESTWEB1 /A:NTLM
В этом примере:
- Флаг /Y указывает, что вы хотите фактически развернуть пакет, а не выполнять пробное выполнение.
- Флаг /M указывает, что необходимо развернуть пакет на сервере с именем TESTWEB1. Из этого значения MSDeploy.exe попытается развернуть пакет в службе удаленного агента веб-развертывания по адресу http://TESTWEB1/MSDeployAgentService.
- Флаг /A указывает, что требуется использовать проверку подлинности NTLM. Таким образом, вам не нужно указывать имя пользователя и пароль.
Чтобы проиллюстрировать, как использование файла .deploy.cmd упрощает процесс развертывания, ознакомьтесь с командой MSDeploy.exe , которая создается и выполняется при выполнении ContactManager.Mvc.deploy.cmd с помощью описанных выше параметров.
msdeploy.exe
-source:package='C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\ContactManager.Mvc.zip' -dest:auto,computerName='TESTWEB1.fabrikam.net', authtype='NTLM',
includeAcls='False'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-setParamFile:"C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\
ContactManager.Mvc.SetParameters.xml"
Дополнительные сведения об использовании .deploy.cmd-файла для развертывания веб-пакета см. в статье "Практическое руководство. Установка пакета развертывания с помощью файла deploy.cmd".
Использование MSDeploy.exe
Хотя использование файла .deploy.cmd , как правило, упрощает процесс развертывания, существуют некоторые ситуации, когда предпочтительнее использовать MSDeploy.exe напрямую. Например:
- Если вы хотите развернуть в обработчике веб-развертывания в качестве пользователя, не являющегося администратором, нельзя использовать файл .deploy.cmd . Это связано с ошибкой в веб-развертывании 2.0, как описано в разделе "Рекомендации по конечным точкам".
- Если вы хотите вручную переключаться между различными файлами SetParameters.xml в разных расположениях, вы можете использовать MSDeploy.exe напрямую.
- Если вы хотите переопределить несколько MSDeploy.exe аргументов командной строки, вы можете использовать MSDeploy.exe напрямую.
При использовании MSDeploy.exe необходимо указать три ключевых фрагмента информации:
- Параметр -source , указывающий, откуда приходят данные.
- Параметр –dest , указывающий, куда будут отправляться данные.
- Параметр –verb , указывающий операцию , которую требуется выполнить.
MSDeploy.exe использует поставщиков веб-развертывания для обработки исходных и целевых данных. Веб-развертывание включает в себя множество поставщиков, представляющих диапазон приложений и источников данных, с которыми он может работать. Например, есть поставщики для баз данных SQL Server, веб-серверов IIS, сертификатов, сборок глобального кэша сборок сборок (GAC), различных файлов конфигурации и множества других типов данных. И параметр -source , и параметр -dest должны указывать поставщика в форме –source:[providerName]=[location]. При развертывании веб-пакета на веб-сайте IIS следует использовать следующие значения:
Поставщик -source всегда является пакетом. Например:
-source:package='[path to web package]'
Поставщик -dest всегда является автоматическим. Например:
-dest:auto='[server name or service URL]'
Команда – всегда синхронизирована.
-verb:sync
Кроме того, необходимо указать различные другие параметры, относящиеся к поставщику, и общие параметры операций. Например, предположим, что вы хотите развернуть веб-приложение ContactManager.Mvc в промежуточной среде. Развертывание предназначено для обработчика веб-развертывания и должно использовать базовую проверку подлинности. Чтобы развернуть веб-приложение, необходимо выполнить следующие действия.
Развертывание веб-приложения с помощью MSDeploy.exe с помощью маркера доступа
MSDeploy V3 поддерживает проверку подлинности с помощью маркера доступа, также известного как маркер носителя. Рекомендуется использовать маркеры доступа, так как они являются наиболее безопасными.
Создайте и упаковите проект веб-приложения, как описано в разделе "Сборка и упаковка проектов веб-приложения".
Измените файл ContactManager.Mvc.SetParameters.xml , чтобы он содержал правильные значения параметров для промежуточной среды, как описано в разделе "Настройка параметров для развертывания веб-пакета".
Откройте окно командной строки и перейдите к расположению MSDeploy.exe. Обычно это происходит в
%PROGRAMFILES%\IIS\Microsoft Web Deploy {version}\msdeploy.exe
.Если у вас нет маркера доступа, создайте его с помощью команды:
az account get-access-token --query accessToken
Введите эту команду и нажмите клавишу ВВОД (игнорируйте разрывы строк):
MSDeploy.exe -source:package="[path]\ContactManager.Mvc.zip" -dest:auto, computerName="https://stageweb1:8172/MSDeploy.axd?site=DemoSite", username="FABRIKAM\stagingdeployer", $CREDENTIAL_PLACEHOLDER$, authtype="Bearer", includeAcls="False", Password="{-token:}" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"[path]\ContactManager.Mvc.SetParameters.xml" -allowUntrusted
В этом примере:
- Параметр -source указывает поставщика пакетов и указывает расположение веб-пакета.
- Параметр -dest указывает автоматический поставщик. Параметр computerName предоставляет URL-адрес службы обработчика веб-развертывания на целевом сервере. Параметр
Bearer
проверки подлинности указывает, что вы хотите использовать маркер доступа для проверки подлинности, и таким образом необходимо указать значение маркера в качестве пароля. Параметр includeAcls="False" указывает, что вы не хотите копировать списки управления доступом (ACL) файлов в исходном веб-приложении на целевой сервер. - Аргумент –verb:sync указывает, что необходимо реплицировать исходное содержимое на целевом сервере.
- Аргументы -disableLink указывают на то, что на целевом сервере не требуется реплицировать пулы приложений, конфигурацию виртуального каталога или SSL-сертификаты. Дополнительные сведения см. в разделе "Расширения канала веб-развертывания".
- Параметр –setParamFile предоставляет расположение файла SetParameters.xml .
- Параметр -allowUntrusted указывает, что веб-развертывание должно принимать SSL-сертификаты, которые не были выданы доверенным центром сертификации. Если вы развертываете в обработчике веб-развертывания и используете самозаверяющий сертификат для защиты URL-адреса службы, необходимо включить этот параметр.
Развертывание веб-приложения с помощью MSDeploy.exe и базовой проверки подлинности
Предупреждение
Обычная проверка подлинности не рекомендуется, если доступны более безопасные методы (маркер носителя).
Создайте и упаковите проект веб-приложения, как описано в разделе "Сборка и упаковка проектов веб-приложения".
Измените файл ContactManager.Mvc.SetParameters.xml , чтобы он содержал правильные значения параметров для промежуточной среды, как описано в разделе "Настройка параметров для развертывания веб-пакета".
Откройте окно командной строки и перейдите к расположению MSDeploy.exe. Обычно это происходит в
%PROGRAMFILES%\IIS\Microsoft Web Deploy {version}\msdeploy.exe
.Введите эту команду и нажмите клавишу ВВОД (игнорируйте разрывы строк):
MSDeploy.exe -source:package="[path]\ContactManager.Mvc.zip" -dest:auto, computerName="https://stageweb1:8172/MSDeploy.axd?site=DemoSite", username="FABRIKAM\stagingdeployer", $CREDENTIAL_PLACEHOLDER$, authtype="Basic", includeAcls="False" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"[path]\ContactManager.Mvc.SetParameters.xml" -allowUntrusted
В этом примере:
- Параметр -source указывает поставщика пакетов и указывает расположение веб-пакета.
- Параметр -dest указывает автоматический поставщик. Параметр computerName предоставляет URL-адрес службы обработчика веб-развертывания на целевом сервере. Параметр проверки подлинности указывает, что вы хотите использовать базовую проверку подлинности, и таким образом необходимо указать имя пользователя и пароль. Наконец, параметр includeAcls="False" указывает, что вы не хотите копировать списки управления доступом (ACL) файлов в исходном веб-приложении на целевой сервер.
- Аргумент –verb:sync указывает, что необходимо реплицировать исходное содержимое на целевом сервере.
- Аргументы -disableLink указывают на то, что на целевом сервере не требуется реплицировать пулы приложений, конфигурацию виртуального каталога или SSL-сертификаты. Дополнительные сведения см. в разделе "Расширения канала веб-развертывания".
- Параметр –setParamFile предоставляет расположение файла SetParameters.xml .
- Параметр -allowUntrusted указывает, что веб-развертывание должно принимать SSL-сертификаты, которые не были выданы доверенным центром сертификации. Если вы развертываете в обработчике веб-развертывания и используете самозаверяющий сертификат для защиты URL-адреса службы, необходимо включить этот параметр.
Автоматизация развертывания веб-пакета
В большинстве корпоративных сценариев вы хотите развернуть веб-пакеты в рамках более крупного одношагового или автоматического развертывания. Независимо от того, хотите ли вы развернуть веб-пакеты, запустив файл .deploy.cmd или используя MSDeploy.exe напрямую, вы можете параметризировать команды и вызвать их из целевого объекта в файле проекта Microsoft Build Engine (MSBuild).
В примере решения Диспетчера контактов просмотрите целевой объект PublishWebPackages в файле Publish.proj . Этот целевой объект выполняется один раз для каждого .deploy.cmd файла, определяемого списком элементов с именем PublishPackages. Целевой объект использует свойства и метаданные элемента для создания полного набора значений аргументов для каждого файла .deploy.cmd , а затем использует задачу Exec для выполнения команды.
<Target Name="PublishWebPackages" Outputs="%(PublishPackages.Identity)">
...
<PropertyGroup>
<_WhatIfSwitch>/Y</_WhatIfSwitch>
<_WhatIfSwitch Condition=" '$(_WhatIf)'=='true' ">/T</_WhatIfSwitch>
<_Cmd>
%(PublishPackages.FullPath) $(_WhatifSwitch) /M:$(MSDeployComputerName)
/U:$(MSDeployUsername) /P:$(Password) /A:$(MSDeployAuth)
%(PublishPackages.AdditionalMSDeployParameters)
</_Cmd>
</PropertyGroup>
<Exec Command="$(_Cmd)"/>
</Target>
Примечание.
Более широкий обзор модели файлов проекта в примере решения и общие сведения о пользовательских файлах проекта см. в разделе "Общие сведения о файле проекта" и "Общие сведения о процессе сборки".
Рекомендации по конечным точкам
Независимо от того, развертываете веб-пакет, запустив файл .deploy.cmd или используя MSDeploy.exe напрямую, необходимо указать имя компьютера или конечную точку службы для развертывания.
Если целевой веб-сервер настроен для развертывания с помощью службы удаленного развертывания веб-развертывания, укажите URL-адрес целевой службы в качестве назначения.
http://[server name]/MSDeployAgentService
Кроме того, можно указать имя сервера в качестве места назначения, а веб-развертывание выдаст URL-адрес службы удаленного агента.
[server name]
Если целевой веб-сервер настроен для развертывания с помощью обработчика веб-развертывания, необходимо указать адрес конечной точки служба веб-управления IIS(WMSvc) в качестве назначения. По умолчанию это принимает форму:
https://[server name]:8172/MSDeploy.axd
Вы можете выбрать любую из этих конечных точек с помощью файла .deploy.cmd или непосредственного MSDeploy.exe. Однако если вы хотите развернуть в обработчике веб-развертывания в качестве пользователя, не являющегося администратором, как описано в статье "Настройка веб-сервера для публикации веб-развертывания (обработчик веб-развертывания)", необходимо добавить строку запроса в адрес конечной точки службы.
https://[server name]:8172/MSDeploy.axd?site=[IIS website name]
Это связано с тем, что у пользователя, отличного от администратора, нет доступа на уровне сервера к СЛУЖБАМ IIS; У него есть доступ только к конкретному веб-сайту IIS. Во время записи из-за ошибки в конвейере веб-публикации (WPP) невозможно запустить файл .deploy.cmd с помощью адреса конечной точки, включающего строку запроса. В этом сценарии необходимо развернуть веб-пакет с помощью MSDeploy.exe напрямую.
Примечание.
Дополнительные сведения о службе удаленного агента веб-развертывания и обработчике веб-развертывания см. в разделе "Выбор правильного подхода к веб-развертыванию". Инструкции по настройке файлов проекта для конкретной среды для развертывания в этих конечных точках см. в разделе "Настройка свойств развертывания для целевой среды".
Рекомендации по проверке подлинности
Независимо от того, развертываете веб-пакет, выполняя файл .deploy.cmd или используя MSDeploy.exe напрямую, необходимо указать тип проверки подлинности. Веб-развертывание принимает возможные значения: носителя, NTLM или Basic. Если указать носителя, необходимо указать маркер в качестве пароля и любое значение для имени пользователя. Если указать базовую проверку подлинности, необходимо также указать имя пользователя и пароль. При выборе типа проверки подлинности необходимо учитывать различные факторы.
- При развертывании в службе удаленного агента веб-развертывания необходимо использовать проверку подлинности NTLM. Служба удаленного агента не принимает базовые учетные данные проверки подлинности.
- При развертывании в обработчике веб-развертывания можно использовать маркер доступа (маркер носителя), NTLM или обычную проверку подлинности. Параметр по умолчанию — обычная проверка подлинности. Обычная проверка подлинности зависит от имен пользователей и паролей, передаваемых в виде обычного текста, ваши учетные данные защищены, так как обработчик веб-развертывания всегда использует шифрование SSL. Наиболее безопасным методом является использование маркера доступа, который позволяет избежать отправки фактического пароля.
- Если веб-пакет включает базу данных, а веб-сервер и сервер базы данных являются отдельными компьютерами, вы не сможете развернуть базу данных с помощью проверки подлинности NTLM из-за ограничения NTLM "double-hop". Необходимо либо использовать учетные данные SQL Server в строка подключения развертывания, либо предоставить базовые учетные данные проверки подлинности в Веб-развертывании. Эта проблема подробно описана в развертывании баз данных членства в корпоративных средах.
Заключение
В этом разделе описано, как развернуть веб-пакет, запустив файл .deploy.cmd или напрямую с помощью MSDeploy.exe. Он объяснил, когда каждый подход может быть подходящим, и он описал способ параметризации и выполнения команды развертывания в рамках более крупного одношагового или автоматизированного процесса сборки.
Дополнительные материалы
Инструкции по созданию и параметризации пакета веб-развертывания см. в статье "Создание и упаковка проектов веб-приложений" и настройка параметров для развертывания веб-пакетов. Инструкции по созданию и развертыванию веб-пакетов из экземпляра Team Foundation Server (TFS) см. в разделе "Настройка Team Foundation Server для автоматического веб-развертывания". Сведения о настройке и устранении неполадок процесса развертывания см. в разделе "Исключение файлов и папок из развертывания".