Настройка свойств развертывания для целевой среды
В этом разделе описывается настройка свойств среды для развертывания примера решения Диспетчера контактов в определенной целевой среде.
Этот раздел является частью серии учебников, основанных на требованиях к развертыванию на предприятии вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения диспетчера контактов для представления веб-приложения с реалистичным уровнем сложности, включая приложение ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.
Метод развертывания в основе этих учебников основан на подходе с разделением файлов проекта, описанном в разделе Основные сведения о процессе сборки, в котором процесс сборки управляется двумя файлами проектов: один содержит инструкции сборки, которые применяются к каждой целевой среде, а второй содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется с файлом проекта, не зависящим от среды, чтобы сформировать полный набор инструкций по сборке.
Обзор процесса
Файл проекта, который будет использоваться для сборки и развертывания решения Диспетчера контактов, разделен на два физических файла:
- Содержит универсальные параметры и инструкции сборки (файл Publish.proj ).
- Содержит параметры сборки для конкретной среды (Env-Dev.proj, Env-Stage.proj и т. д.).
Во время сборки соответствующий файл проекта для конкретной среды объединяется в универсальный файл Publish.proj , чтобы сформировать полный набор инструкций по сборке. Вы можете настроить развертывание в определенных целевых средах, создав или настроив файлы проектов для конкретной среды с параметрами, описывающими собственный сценарий развертывания.
Многие из этих значений определяются тем, как настроена целевая среда, в частности, настроен ли целевой веб-сервер для использования службы веб-Deployment Agent (удаленный агент) или обработчика веб-развертывания. Дополнительные сведения об этих подходах и рекомендации по выбору правильного подхода для собственной среды см. в статье Выбор правильного подхода к веб-развертыванию.
Для сценария Диспетчера контактов требуется два файла проекта для конкретной среды:
- Развертывание в тестовой среде для разработчиков (Env-Dev.proj). Тестовая среда разработчика настроена для приема удаленных развертываний с помощью удаленного агента, как описано в разделе Сценарий. Настройка тестовой среды для веб-развертывания. Этот файл должен указать адрес конечной точки удаленного агента, а также параметры для конкретного расположения, такие как строки подключения и конечные точки службы.
- Развертывание в промежуточной среде (Env-Stage.proj). Промежуточная среда настроена для приема удаленных развертываний с помощью обработчика веб-развертывания, как описано в разделе Сценарий: настройка промежуточной среды для веб-развертывания. Этот файл должен предоставить адрес конечной точки обработчика веб-развертывания, а также параметры для конкретного расположения, такие как строки подключения и конечные точки службы.
Важно отметить, что параметры, настроенные в файле проекта для конкретной среды, не влияют на содержимое самого веб-пакета. Вместо этого они определяют, как развертывается пакет и какие значения параметров предоставляются при извлечении пакета. Вы импортируете веб-пакет в рабочую среду вручную, как описано в разделе Сценарий: настройка рабочей среды для веб-развертывания и установка веб-пакетов вручную, поэтому не имеет значения, какие параметры использовались в файле проекта для конкретной среды при создании пакета. Диспетчер служб IIS будет запрашивать любые параметризованные значения, такие как строки подключения и конечные точки службы, при импорте пакета.
Чтобы развернуть решение диспетчера контактов в собственной целевой среде, можно либо настроить этот файл, либо использовать его в качестве шаблона и создать собственный файл.
Настройка параметров развертывания для конкретной среды для решения Диспетчера контактов
Откройте решение ContactManager-WCF в Visual Studio 2010.
В окне Обозреватель решений разверните папку Публикация, разверните папку EnvConfig и дважды щелкните Env-Dev.proj.
Замените значения свойств в файле Env-Dev.proj правильными значениями для собственной тестовой среды.
Примечание
В следующей таблице содержатся дополнительные сведения о каждом из этих свойств.
Сохраните свою работу, а затем закройте файл Env-Dev.proj .
Выбор правильных свойств развертывания
В этой таблице описывается назначение каждого свойства в примере файла проекта для конкретной среды Env-Dev.proj, а также приведены некоторые рекомендации по значениям, которые следует предоставить.
Имя свойства | Сведения |
---|---|
MSDeployComputerName Имя целевого веб-сервера или конечной точки службы. | При развертывании в службе удаленного агента на целевом веб-сервере можно указать имя целевого компьютера (например, TESTWEB1 или TESTWEB1.fabrikam.net) или указать конечную точку удаленного агента (например, http://TESTWEB1/MSDEPLOYAGENTSERVICE ). В каждом случае развертывание работает одинаково. При развертывании в обработчике веб-развертывания на целевом веб-сервере необходимо указать конечную точку службы и включить имя веб-сайта IIS в качестве параметра строки запроса (например, https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite ). |
MSDeployAuth Метод, который веб-развертывание должно использовать для проверки подлинности на удаленном компьютере. | Для этого параметра должно быть задано значение NTLM или Basic. Как правило, при развертывании в службе удаленного агента используется NTLM , а в обработчике веб-развертывания — базовый . Если используется обычная проверка подлинности, необходимо также указать имя пользователя и пароль, которые средство веб-развертывания IIS (веб-развертывание) должно олицетворить для выполнения развертывания. В этом примере эти значения предоставляются с помощью свойств MSDeployUsername и MSDeployPassword . При использовании проверки подлинности NTLM эти свойства можно опустить или оставить их пустыми. |
MSDeployUsername Если вы используете обычную проверку подлинности, веб-развертывание будет использовать эту учетную запись на удаленном компьютере. | Он должен иметь форму ДОМЕН*имя_пользователя* (например, FABRIKAM\matt). Это значение используется только при указании обычной проверки подлинности. При использовании проверки подлинности NTLM свойство можно опустить. Если задано значение, оно будет игнорироваться. |
MSDeployPassword Если вы используете обычную проверку подлинности, веб-развертывание будет использовать этот пароль на удаленном компьютере. | Это пароль для учетной записи пользователя, указанной в свойстве MSDeployUsername . Это значение используется только при указании обычной проверки подлинности. При использовании проверки подлинности NTLM свойство можно опустить. Если задано значение, оно будет игнорироваться. |
ContactManagerIisPath Путь IIS, по которому требуется развернуть приложение MVC диспетчера контактов. | Это должен быть путь, который отображается в диспетчере IIS в формате [имя веб-сайта IIS]/[имявеб-приложения]. Помните, что веб-сайт IIS должен существовать перед развертыванием приложения. Например, если вы создали веб-сайт IIS с именем DemoSite, можно указать путь IIS для приложения MVC как DemoSite/ContactManager. |
ContactManagerServiceIisPath Путь IIS, по которому требуется развернуть службу WCF диспетчера контактов. | Например, если вы создали веб-сайт IIS с именем DemoSite, можно указать путь IIS для службы WCF как DemoSite/ContactManagerService. |
ContactManagerTargetUrl URL-адрес, по которому можно связаться со службой WCF. | Он будет принимать форму [корневой URL-адрес веб-сайта IIS]/[имя приложения службы]/[конечная точка службы]. Например, если вы создали веб-сайт IIS через порт 85, URL-адрес будет принимать форму http://localhost:85/ContactManagerService/ContactService.svc . Помните, что приложение MVC и служба WCF развертываются на одном сервере. В результате доступ к этому URL-адресу осуществляется только с компьютера, на котором он установлен. Поэтому в URL-адресе лучше использовать localhost или IP-адрес, а не имя компьютера или заголовок узла. Если вы используете имя компьютера или заголовок узла, функция безопасности проверка замыкания на себя в IIS может заблокировать URL-адрес и вернуть ошибку HTTP 401.1 — Не авторизовано. |
CmDatabaseConnectionString Строка подключения для сервера базы данных. | Строка подключения определяет учетные данные, которые VSDBCMD будет использовать для связи с сервером базы данных и создания базы данных, и учетные данные, которые пул приложений веб-сервера будет использовать для связи с сервером базы данных и взаимодействия с базой данных. По сути, у вас есть два варианта здесь. Можно указать Integrated Security=true. В этом случае используется интегрированный проверка подлинности Windows: Data Source=TESTDB1;Integrated Security=true. В этом случае база данных будет создана с использованием учетных данных пользователя, запускающего исполняемый файл VSDBCMD, а приложение получит доступ к базе данных с помощью удостоверения учетной записи компьютера веб-сервера. Кроме того, можно указать имя пользователя и пароль учетной записи SQL Server. В этом случае учетные данные SQL Server используются как VSDBCMD для создания базы данных, так и пулом приложений для взаимодействия с базой данных: Data Source=TESTDB1; User Id=ASqlUser; Password=Pa$$w 0rd В пошаговых руководствах в этом разделе предполагается, что вы будете использовать интегрированные проверка подлинности Windows. |
CmTargetDatabase Имя, которое вы хотите присвоить базе данных, создаваемой на сервере базы данных. | Указанное здесь значение добавляется в команду VSDBCMD в качестве параметра. Он также используется для создания полной строки подключения, которую пул приложений на веб-сервере может использовать для взаимодействия с базой данных. |
В этих примерах показано, как можно настроить эти свойства для конкретных сценариев развертывания.
Пример 1. Развертывание в службе удаленного агента
В этом примере:
- Вы выполняете развертывание в службе удаленного агента в TESTWEB1.
- Вы указываете веб-развертыванию использовать проверку подлинности NTLM. Веб-развертывание будет выполняться с использованием учетных данных, которые использовались для вызова Microsoft Build Engine (MSBuild).
- Для развертывания базы данных ContactManager в TESTDB1 используется встроенная проверка подлинности. База данных будет развернута с использованием учетных данных, которые использовались для вызова MSBuild.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
TESTWEB1.fabrikam.net
</MSDeployComputerName>
<MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">NTLM</MSDeployAuth>
<ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
http://localhost:85/ContactManagerService/ContactService.svc
</ContactManagerTargetUrl>
<ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
DemoSite/ContactManager
</ContactManagerIisPath>
<ContactManagerServiceIisPath
Condition=" '$(ContactManagerServiceIisPath)'=='' ">
DemoSite/ContactManagerService
</ContactManagerServiceIisPath>
<CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
Data Source=TESTDB1;Integrated Security=true</CmDatabaseConnectionString>
<CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
ContactManager
</CmTargetDatabase>
</PropertyGroup>
</Project>
Пример 2. Развертывание в конечной точке обработчика веб-развертывания
В этом примере:
- Вы выполняете развертывание в конечной точке службы обработчика веб-развертывания на STAGEWEB1.
- Вы указываете веб-развертыванию использовать обычную проверку подлинности.
- Вы указываете, что веб-развертывание должно олицетворять учетную запись FABRIKAM\stagingdeployer на удаленном компьютере.
- Для развертывания базы данных ContactManager в STAGEDB1 используется проверка подлинности SQL Server.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
</MSDeployComputerName>
<MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">Basic</MSDeployAuth>
<MSDeployUsername Condition=" '$(MSDeployUsername)'=='' ">
FABRIKAM\stagingdeployer
</MSDeployUsername>
<MSDeployPassword Condition=" '$(MSDeployPassword)'=='' ">
Pa$$w0rd
</MSDeployPassword>
<ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
http://localhost:85/ContactManagerService/ContactService.svc
</ContactManagerTargetUrl>
<ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
DemoSite/ContactManager
</ContactManagerIisPath>
<ContactManagerServiceIisPath
Condition=" '$(ContactManagerServiceIisPath)'=='' ">
DemoSite/ContactManagerService
</ContactManagerServiceIisPath>
<CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
Data Source=STAGEDB1;User ID=sa;'$($CREDENTIAL_PLACEHOLDER$)'
</CmDatabaseConnectionString>
<CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
ContactManager
</CmTargetDatabase>
</PropertyGroup>
</Project>
Заключение
На этом этапе файлы проекта полностью настроены для сборки и развертывания решения Диспетчера контактов в одной или нескольких целевых средах.
Чтобы использовать эти файлы проекта в рамках одношагового повторяемого процесса развертывания, необходимо выполнить файл Publish.proj с помощью MSBuild и передать расположение файла проекта для конкретной среды в качестве параметра. Это можно сделать разными способами:
- Общие сведения о MSBuild и общие сведения о файлах пользовательских проектов см. в статье Общие сведения о файле проекта.
- Сведения о том, как сформулировать команду MSBuild, которая выполняет пользовательские файлы проекта, см. в разделе Развертывание веб-пакетов.
- Сведения о том, как включить команды MSBuild в командный файл для одношагового повторяемого развертывания, см. в разделе Создание и выполнение командного файла развертывания.
- Сведения о том, как выполнять пользовательские файлы проекта из team Build, см. в разделе Создание определения сборки, поддерживающего развертывание.