Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как опубликовать пакеты веб-развертывания на удаленном сервере с помощью средства веб-развертывания службы IIS (IIS) 2.0.
Существует два основных способа развертывания веб-пакета на удаленном сервере:
- Вы можете напрямую использовать программу командной строки MSDeploy.exe.
- Вы можете запустить файл [имя проекта].deploy.cmd , который создает процесс сборки.
Конечный результат совпадает независимо от того, какой подход используется. По сути, файл .deploy.cmd запускает MSDeploy.exe с заранее установленными значениями, чтобы вам не нужно было предоставлять столько информации для развертывания пакета. Это упрощает процесс развертывания. С другой стороны, использование MSDeploy.exe напрямую обеспечивает гораздо большую гибкость, включая точный контроль над тем, как будет развернут ваш пакет.
Какой подход вы используете, будет зависеть от различных факторов, включая степень контроля, которую вы требуете над процессом развертывания, и от того, обращены ли вы к Web Deploy Remote Agent service или Web Deploy Handler. В этом разделе объясняется, как использовать каждый подход и определить, когда подход подходит.
Задачи и пошаговые руководства в этом разделе предполагают, что:
- Вы создали и упаковали веб-приложение, как описано в разделе "Создание и упаковка проектов веб-приложений".
- Вы изменили файл 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 , чтобы указать, требуется ли выполнить пробное выполнение или динамическое развертывание соответственно (не используйте оба флага в одной команде). В этой таблице объясняется назначение каждого из этих флагов.
| Флаг | Описание |
|---|---|
| /T | Вызывает MSDeploy.exe с флагом -whatif , который указывает на пробную версию. Вместо развертывания пакета он создает отчет о том, что произойдет, если вы развернули пакет. |
| /Y | Вызывает MSDeploy.exe без флага –whatif. При этом пакет развертывается на локальном компьютере или указанном целевом сервере. |
| /M | Указывает имя целевого сервера или URL-адрес службы. Для получения дополнительной информации о значениях, которые можно указать здесь, см. раздел "Вопросы конечной точки". Если опустить флаг /M , пакет будет развернут на локальном компьютере. |
| /A | Указывает тип проверки подлинности, который MSDeploy.exe должен использоваться для выполнения развертывания. Возможные значения: Bearer, NTLM и Basic. Если опустить флаг /A, тип проверки подлинности по умолчанию будет NTLM для развертывания в службе удаленного агента Web Deploy, и Basic для развертывания в обработчике Web Deploy. |
| /U | Указывает имя пользователя. Это применимо только в том случае, если вы используете обычную проверку подлинности. |
| /P | Задает пароль. Это применимо только в том случае, если вы используете обычную проверку подлинности. |
| /L | Указывает, что пакет должен быть развернут в локальном экземпляре IIS Express. |
| /G | Указывает, что пакет развертывается с помощью параметра поставщика tempAgent. Если опустить флаг /G , значение по умолчанию равно false. |
Примечание.
Каждый раз, когда процесс сборки создает веб-пакет, он также создает файл с именем [имя проекта].deploy-readme.txt , который объясняет эти параметры развертывания.
Помимо этих флагов можно указать параметры операции веб-развертывания в качестве дополнительных .deploy.cmd параметров. Все дополнительные параметры, которые вы указали, просто передаются в базовую команду MSDeploy.exe. Дополнительные сведения об этих параметрах см. в разделе "Параметры операции веб-развертывания".
Предположим, что вы хотите развернуть проект веб-приложения ContactManager.Mvc в тестовой среде, запустив файл .deploy.cmd . Тестовая среда настроена на использование службы удаленного агента Web Deploy, как описано в разделе Настройка веб-сервера для веб-развертывания (Remote Agent). Чтобы развернуть веб-приложение, необходимо выполнить следующие действия.
Развертывание веб-приложения с помощью файла .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 всегда package. Например:
-source:package='[path to web package]'Поставщик -dest всегда является автоматическим. Например:
-dest:auto='[server name or service URL]'Команда – всегда синхронизирована.
-verb:sync
Кроме того, необходимо указать различные другие параметры, относящиеся к поставщику, и общие параметры операций. Например, предположим, что вы хотите развернуть веб-приложение ContactManager.Mvc в промежуточной среде. Развертывание будет нацелено на Web Deploy Handler и должно использовать базовую проверку подлинности. Чтобы развернуть веб-приложение, необходимо выполнить следующие действия.
Развертывание веб-приложения с помощью 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-сертификаты. Дополнительные сведения см. в Расширениях Web Deploy Link.
- Параметр –setParamFile предоставляет расположение файла SetParameters.xml .
- Параметр -allowUntrusted указывает, что веб-развертывание должно принимать SSL-сертификаты, которые не были выданы доверенным центром сертификации. Если вы развертываете на Web Deploy Handler и используете самоподписанный сертификат для защиты URL-адреса службы, необходимо включить этот переключатель.
Развертывание веб-приложения с помощью MSDeploy.exe и базовой проверки подлинности
Предупреждение
Обычная проверка подлинности не рекомендуется, если доступны более безопасные методы (маркер носителя).
Создайте и упаковите проект веб-приложения, как описано в разделе "Сборка и упаковка проектов веб-приложения".
Измените файл ContactManager.Mvc.SetParameters.xml , чтобы он содержал правильные значения параметров для промежуточной среды, как описано в разделе "Настройка параметров для развертывания веб-пакета".
Откройте окно командной строки и перейдите к расположению MSDeploy.exe. Обычно это происходит в
%PROGRAMFILES%\IIS\Microsoft Web Deploy {version}\msdeploy.exe.Введите эту команду и нажмите Enter (игнорируйте разрывы строк):
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-сертификаты. Дополнительные сведения см. в разделе Web Deploy Link Extensions.
- Параметр –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 напрямую, необходимо указать имя компьютера или конечную точку службы для развертывания.
Если целевой веб-сервер настроен для развертывания с помощью службы агента удаленного управления Web Deploy, укажите 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 напрямую, необходимо указать тип проверки подлинности. Веб-развертывание принимает возможные значения: Bearer, NTLM или Basic. Если указать Bearer, необходимо указать токен в качестве пароля и любое значение для имени пользователя. Если указать базовую проверку подлинности, необходимо также указать имя пользователя и пароль. При выборе типа проверки подлинности необходимо учитывать различные факторы.
- При развертывании с использованием службы удаленного агента Web Deploy необходимо использовать аутентификацию NTLM. Служба удаленного агента не принимает учетные данные базовой аутентификации.
- При развертывании на Web Deploy Handler можно использовать токен доступа (bearer token), NTLM или базовую аутентификацию. Параметр по умолчанию — обычная проверка подлинности. Обычная проверка подлинности зависит от имен пользователей и паролей, передаваемых в виде обычного текста, ваши учетные данные защищены, так как обработчик веб-развертывания всегда использует шифрование SSL. Наиболее безопасным методом является использование маркера доступа, который позволяет избежать отправки фактического пароля.
- Если веб-пакет включает базу данных, а веб-сервер и сервер базы данных являются отдельными компьютерами, вы не сможете развернуть базу данных с помощью проверки подлинности NTLM из-за ограничения NTLM "double-hop". Необходимо либо использовать учетные данные SQL Server в строке подключения развертывания, либо предоставить базовые учетные данные проверки подлинности в Web Deploy. Эта проблема подробно описана в развертывании баз данных членства в корпоративных средах.
Заключение
В этом разделе описано, как развернуть веб-пакет, запустив файл .deploy.cmd или напрямую с помощью MSDeploy.exe. Он объяснил, когда каждый подход может быть подходящим, и он описал способ параметризации и выполнения команды развертывания в рамках более крупного одношагового или автоматизированного процесса сборки.
Дополнительные материалы
Инструкции по созданию и параметризации пакета веб-развертывания см. в статье "Создание и упаковка проектов веб-приложений" и настройка параметров для развертывания веб-пакетов. Инструкции по созданию и развертыванию веб-пакетов из экземпляра Team Foundation Server (TFS) см. в разделе "Настройка Team Foundation Server для автоматического веб-развертывания". Сведения о настройке и устранении неполадок процесса развертывания см. в разделе "Исключение файлов и папок из развертывания".