Практическое руководство. Установка пакета развертывания с помощью файла deploy.cmd
При создании пакета веб-развертывания в Visual Studio создается CMD-файл, который можно использовать для установки этого пакета. Данный CMD-файл содержит фактические команды инструмента Веб-развертывание, производящие установку пакета. CMD-файл служит для упрощения установки с использованием синтаксиса командной строки, так как команды инструмента Веб-развертывание могут быть длинными и сложными.
Перед запуском CMD-файла необходимо убедиться в правильности настройки конечного сервера. Если конечным пунктом является удаленный сервер, необходимо убедиться в наличии соответствующего подключения к удаленному серверу и в наличии достаточных разрешений на этом сервере. При запуске CMD-файла ему можно передать параметры, которые будут переданы этим файлом в инструмент Веб-развертывание.
В этом разделе описывается синтаксис, используемый для запуска CMD-файла. Приводятся общие сведения о необходимых предварительных условиях запуска CMD-файла и ссылки на другие ресурсы с более подробными сведениями о настройке.
Выбор метода установки
В этом разделе приводится обзор вариантов локальной или удаленной установки пакета с последующим описанием процедур настройки сервера для каждого варианта. Процедуры настройки сервера для удаленного развертывания содержат общие сведения, который помогут выбрать оптимальный метод для конкретного сценария. В каждой из этих процедур имеется ссылка на раздел веб-сайта Microsoft IIS TechNet, в котором приводятся подробные инструкции.
Если развертывание производится на компьютер разработки (например, для тестирования), достаточно ознакомиться с процедурой внутрипроцессного локального развертывания.
При развертывании в сторонней компании-поставщике услуг хостинга или на конечных серверах, управляемых другими лицами, требуемый метод указывается компанией-поставщиком услуг хостинга или администраторами серверов. В таком случае можно пропустить обзор вариантов. Достаточно ознакомиться только с той частью процедуры, в которой указаны требования к компьютеру разработки для используемого метода.
Доступны следующие методы установки.
Внутрипроцессная установка пакета на локальном сервере (на сервере, на котором выполняется CMD-файл).
Необходимо обладать правами администратора на локальном сервере. Этот метод обычно используется разработчиками для развертывания на компьютере разработки с целью локального тестирования с использованием IIS.
Установка на удаленном сервере с помощью службы веб-управления (WMSvc) и обработчика веб-развертывания.
Сторонние компаниями-поставщики услуг хостинга обычно настраивают свои серверы на этот метод развертывания, чтобы клиенты могли самостоятельно развертывать приложения. При этом компании-поставщику услуг хостинга не требуется предоставлять клиенту права администратора на серверах. Этот метод также часто используется в корпоративной среде, когда отдел информационных технологий не хочет предоставлять разработчикам права администратора на тестовых или рабочих серверах.
Для этого метода требуются службы IIS 7. Сотрудник, обладающий правами администратора на конечном сервере, с помощью диспетчера служб IIS настраивает учетную запись, которую можно использовать для развертывания. При развертывании используются учетные данные этой учетной записи. Преимущество этого метода заключается в том, что при развертывании не требуется обладать правами администратора на конечном сервере. Недостаток заключается в том, что обычно невозможно выполнение задач развертывания, для которых требуются права администратора (например, настройка параметров IIS).
Установка на удаленном сервере с помощью службы агента веб-развертывания (MsDepSvc). Эта служба также называется службой удаленного веб-развертывания или просто удаленным агентом.
Необходимо обладать правами администратора на удаленном сервере. Преимущество этого метода заключается в отсутствии каких-либо ограничений на действия, выполняемые при развертывании, так как вы являетесь администратором на конечном сервере. Этот метод невозможно использовать, если сотрудник, выполняющий развертывание, не должен быть администратором на конечном сервере.
Установка на удаленный сервер с помощью параметра поставщика tempAgent инструмента Веб-развертывание.
Как и в случае удаленного агента, необходимо обладать правами администратора на конечном сервере. Преимущество этого метода над методом удаленного агента заключается в отсутствии необходимости установки инструмента Веб-развертывание на компьютер, на котором выполняется командный файл, или на конечный компьютер. Инструмент Веб-развертывание можно запустить из общей папки на сервере, на котором установлен инструмент Веб-развертывание. Следовательно, можно выполнить развертывание на нескольких северах без предварительной установки инструмента Веб-развертывание на каждый сервер. Кроме того, не требуется производить обновление каждого сервера при выпуске новых версий инструмента Веб-развертывание или проверять, что на исходном и конечном компьютерах установлена одинаковая версия инструмента Веб-развертывание. Метод параметра поставщика tempAgent требует дополнительной настройки на конечных серверах по сравнению с методом удаленного агента. Однако если требуется обслуживать несколько серверов, этот метод со временем обычно обеспечивает меньший объем работ по обслуживанию.
Дополнительные сведения о выборе варианта, подходящего для вашего сценария, см. в разделе Using Web Deploy Remotely на веб-сайте Microsoft TechNet.
В остальной части этого раздела приводятся процедуры, содержащие общие сведения о порядке настройки серверов для каждого из методов установки пакетов.
Настройка сервера для локального развертывания
В следующей процедуре описана настройка сервера для внутрипроцессной локальной установки пакета.
Настройка сервера для локального внутрипроцессного развертывания
Убедитесь, что на сервере установлено следующее программное обеспечение.
IIS 5.1, IIS 6 или IIS 7.
Платформа .NET Framework 2.0 с пакетом обновления 1 (SP1) или более поздней версии, если требуется для устанавливаемого веб-приложения.
Веб-развертывание (той же версии, которая использовалась для создания пакета).
Сведения об установке служб IIS, платформы .NET Framework и инструмента Веб-развертывание с помощью средства установки Web Platform Installer см. в разделе Microsoft Web Platform Installer 2.0 на веб-сайте корпорации Майкрософт.
Настройка серверов для службы веб-управления
В следующей процедуре приводятся общие сведения о том, как настроить исходный и конечный компьютеры, чтобы можно было устанавливать пакеты развертывания с помощью службы веб-управления (WMSvc) и обработчика веб-развертывания. Дополнительные сведения и подробные инструкции см. в разделе Configuring the Web Deployment Handler на веб-сайте Microsoft TechNet или Configure the Web Deployment Handler на веб-сайте IIS. net.
Настройка серверов для развертывания с помощью службы веб-управления
Убедитесь, что на компьютер, на котором выполняется CMD-файл развертывания, установлено следующее программное обеспечение.
- Веб-развертывание (той же версии, которая использовалась для создания пакета).
Убедитесь, что на конечный сервер установлено следующее программное обеспечение.
IIS 7.
Платформа .NET Framework 2.0 с пакетом обновления 1 (SP1) или более поздней версии, если требуется для устанавливаемого веб-приложения.
Веб-развертывание (той же версии, которая использовалась для создания пакета).
Сведения об установке служб IIS, платформы .NET Framework и инструмента Веб-развертывание с помощью средства установки Web Platform Installer см. в разделе Microsoft Web Platform Installer 2.0 на веб-сайте корпорации Майкрософт.
На конечном сервере настройте службу веб-управления (WMSvc), выполнив следующие действия.
Добавьте службу роли службы управления.
Разрешите удаленные подключения.
Создайте учетную запись, которая будет использоваться для установки пакета.
Добавьте правила делегирования для этой учетной записи пользователя.
На конечном компьютере убедитесь, что для пула приложений веб-сайта IIS, на который устанавливается пакет, задана версия платформы .NET Framework, необходимая для этого пакета. (Если пакет указывает имя веб-приложения, а не имя веб-сайта, он будет установлен на веб-сайте по умолчанию.)
Настройка серверов для службы удаленного веб-развертывания
В следующей процедуре приводятся общие сведения о том, как настроить исходный и конечный компьютеры, чтобы можно было удаленно устанавливать пакеты развертывания с помощью службы агента веб-развертывания (MSDepSvc). Дополнительные сведения см. в разделе Web Deploy Remote Service на веб-сайте Microsoft TechNet.
Настройка серверов для развертывания с помощью службы агента веб-развертывания
Убедитесь, что на сервер, на котором выполняется CMD-файл развертывания, установлено следующее программное обеспечение.
- Веб-развертывание (той же версии, которая использовалась для создания пакета).
Убедитесь, что на конечный сервер установлено следующее программное обеспечение.
IIS 5.1, IIS 6 или IIS 7.
Платформа .NET Framework 2.0 с пакетом обновления 1 (SP1) или более поздней версии, если требуется для устанавливаемого веб-приложения.
Веб-развертывание (той же версии, которая использовалась для создания пакета).
Сведения об использовании средства установки Web Platform Installer для установки служб IIS, платформы .NET Framework и инструмента см. в разделе Microsoft Web Platform Installer 2.0 на веб-сайте корпорации Майкрософт.
На конечном сервере убедитесь, что служба MSDepSvc настроена и запущена.
На конечном сервере настройте брандмауэр так, чтобы он разрешал HTTP-трафик через порт 80.
На конечном компьютере убедитесь, что для пула приложений веб-сайта IIS, на который устанавливается пакет, задана версия платформы .NET Framework, необходимая для этого пакета. (Если пакет указывает имя веб-приложения, а не имя веб-сайта, он будет установлен на веб-сайте по умолчанию.)
Настройка серверов для параметра поставщика tempAgent
В следующей процедуре приводятся общие сведения о том, как настроить исходный и конечный компьютеры для удаленной установки с помощью параметра поставщика tempAgent инструмента Веб-развертывание. Дополнительные сведения см. в разделе Web Deploy On Demand на веб-сайте Microsoft TechNet.
Настройка серверов для развертывания с помощью параметра поставщика tempAgent инструмента Веб-развертывание
Убедитесь, что на исходный компьютер установлено следующее программное обеспечение.
Служба агента веб-развертывания (MSDepSvc)
Примечание
По умолчанию установка службы агента веб-развертывания в составе среды Visual Studio не производится.Чтобы установить ее, запустите установку инструмента веб-развертывания и выберите службу удаленного агента.
Убедитесь, что на конечный сервер установлено следующее программное обеспечение.
IIS 5.1, IIS 6 или IIS 7.
Платформа .NET Framework 2.0 SP1 или более поздней версии, если требуется для устанавливаемого веб-приложения.
Сведения об установке служб IIS и платформы .NET Framework с помощью средства установки Web Platform Installer см. в разделе Microsoft Web Platform Installer 2.0 на веб-сайте корпорации Майкрософт.
На конечном сервере настройте брандмауэр так, чтобы он разрешал следующее:
HTTP-трафик через порт 80;
WMI-трафик.
На конечном сервере убедитесь, что запущена служба инструментария управления Windows (WMI).
На конечном сервере убедитесь в наличии общей папки, в которую можно скопировать временные программные файлы инструмента Веб-развертывание.
На конечном сервере убедитесь, что не установлена служба агента веб-развертывания (MSDepSvc). Если эта служба установлена, она будет мешать процессу развертывания.
Убедитесь, что учетные данные, используемые при выполнении командного файла развертывания, относятся к учетной записи пользователя, являющегося локальным администратором на удаленном сервере.
На конечном компьютере убедитесь, что для пула приложений веб-сайта IIS, на который устанавливается пакет, задана версия платформы .NET Framework, необходимая для этого пакета. (Если пакет указывает имя веб-приложения, а не имя веб-сайта, он будет установлен на веб-сайте по умолчанию.)
Выполнение командного файла
Рекомендуется сначала запустить инструмент Веб-развертывание в пробном режиме и убедиться, что развертывание выполняется требуемым образом. При таком подходе в случае непредвиденных осложнений можно будет внести изменения до выполнения фактического развертывания. В следующей процедуре описывается выполнение командного файла в некоторых типичных сценариях.
Развертывание с помощью командного файла
Убедитесь, что пакет (имя_проекта.zip), файл имя_проекта.SetParameters.xml и файл имя_проекта.deploy.cmd находятся в одной папке.
Если используется параметр поставщика tempAgent, эта папка может находиться на удаленном компьютере. В противном случае она должна находиться на компьютере, на котором предполагается выполнять командный файл.
Если требуется настроить значения любых параметров, включенных в файл SetParameters.xml, измените значения, отредактировав этот файл.
Например, одни и тот же пакет может использоваться для установки сначала на промежуточный сервер, а затем на рабочий сервер. В таком случае значение строки подключения к базе данных может отличаться для этих установок.
Выполните командный файл, указав флаг t (пробный режим) и необязательные флаги, подходящие для вашего сценария.
Ниже приведены типичные сценарии и подходящие для них необязательные флаги.
Примечание
Для просмотра списка поддерживаемых необязательных флагов введите имя CMD-файла в командной строке без каких-либо флагов после него.Если открыть CMD-файл, возможно, что в нем обнаружатся дополнительные флаги.Любые флаги, не отображаемые в тексте справки и не рассматриваемые в данном разделе, не поддерживаются и не должны использоваться.
Примечание
Если в имени конечного сервера, имени пользователя или пароле используются символы, отсутствующие на активной кодовой странице, возможен сбой выполнения CMD-файла.
Для службы веб-управления (WMSvc) включите флаг m и задайте URL-адрес службы как MSDeploy.axd, используя следующий синтаксис:
Имя_проекта.deploy.cmd /t /m:https://имя_конечного_сервера:8172/MSDeploy.axd
Чтобы указать имя пользователя и пароль, включите флаги u и p. Добавьте флаг a, чтобы задать базовую проверку подлинности. В следующем примере показано, как использовать эти флаги.
Имя_проекта.deploy.cmd /t /m:имя_конечного_сервера /u:Пользователь /p:Пароль /a:basic
Чтобы разрешить ненадежные сертификаты, добавьте -AllowUntrusted=True, как показано в следующем примере:
Имя_проекта.deploy.cmd /t /m:имя_конечного_сервера /u:Пользователь /p:Пароль /a:basic -AllowUntrusted=True
Для службы агента веб-развертывания (MSDepSvc) включите флаг m и задайте имя или URL-адрес конечного сервера как MSDeployAgentService, используя следующий синтаксис:
Имя_проекта.deploy.cmd /t /m:имя_конечного_сервера
Имя_проекта.deploy.cmd /t /m:http://имя_конечного_сервера/MSDeployAgentService
Чтобы указать имя пользователя и пароль, включите флаги u и p. (Не добавляйте флаг a, как это было сделано для службы WMSvc.)
Для параметра поставщика tempAgent включите флаг g и флаг m для задания имени компьютера, используя следующий синтаксис:
Имя_проекта.deploy.cmd /t /m:имя_конечного_сервера /g:true
Чтобы указать имя пользователя и пароль, включите флаги u и p. (Не добавляйте флаг a, как это было сделано для службы WMSvc.)
Чтобы пропустить поставщика базы данных, включите команду skip инструмента Веб-развертывание для поставщика SQL Server, используя следующий синтаксис:
Имя_проекта.deploy.cmd /t "-skip:objectName=dbFullSql"
Это может использоваться, если при развертывании на веб-ферму развертывание базы данных требуется выполнить только один раз.
Чтобы пропустить обновление файла Web.config, включите для файла команду skip инструмента Веб-развертывание. Это может использоваться для исключения перезаписи параметров файла Web.config, вручную настроенного на конечном сервере.
В приведенном ниже примере показано, как пропустить все файлы Web.config в приложении.
Имя_проекта.deploy.cmd /t "-skip:objectName= filePath,absolutePath=\\ApplicationFolder\\[\w\s]+web\.config$"
В приведенном ниже примере показано, как пропустить только файл Web.config приложения.
Имя_проекта.deploy.cmd /t "-skip:objectName= filePath,absolutePath=\\ApplicationFolder\\web\.config$"
Проверьте журнал развертывания в пробном режиме, произведите все требуемые изменения и снова выполните командный файл с флагом t.
Повторяйте предыдущее действие до тех пор, пока в журнале не будут отображены именно те изменения, которые требуются.
Выполните командный файл, используя флаг y ("да" или режим обновления) вместо флага t, а также выбранные необязательные флаги.
Инструмент Веб-развертывание производит развертывание и отображает журнал выполненных действий.
В предыдущей процедуре приведены примеры синтаксиса для типичных сценариев и показано, как использовать флаги, определенные в CMD-файле. Для других сценариев можно передать любую команду инструмента Веб-развертывание в инструмент Веб-развертывание. Вы не ограничены флагами, определенными в CMD-файле. При указании команды, содержащей знак равенства (=), флаг должен быть заключен в кавычки, как показано в предыдущих примерах.
Команды Веб-развертывание можно указывать, задавая значения переменной среды __MsDeployAdditionalFlags.
Дополнительные сведения о других доступных командах инструмента Веб-развертывание см. в разделе Web Deploy Command Line Reference.