Поделиться через


Настройка свойств развертывания для целевой среды

Джейсон Ли

В этом разделе описывается настройка свойств среды для развертывания примера решения Диспетчера контактов в определенной целевой среде.

Этот раздел является частью серии учебников, основанных на требованиях к развертыванию на предприятии вымышленной компании 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 будет запрашивать любые параметризованные значения, такие как строки подключения и конечные точки службы, при импорте пакета.

Чтобы развернуть решение диспетчера контактов в собственной целевой среде, можно либо настроить этот файл, либо использовать его в качестве шаблона и создать собственный файл.

Настройка параметров развертывания для конкретной среды для решения Диспетчера контактов

  1. Откройте решение ContactManager-WCF в Visual Studio 2010.

  2. В окне Обозреватель решений разверните папку Публикация, разверните папку EnvConfig и дважды щелкните Env-Dev.proj.

    В окне Обозреватель решений разверните папку Публикация, папку EnvConfig, а затем дважды щелкните Env-Dev.proj.

  3. Замените значения свойств в файле Env-Dev.proj правильными значениями для собственной тестовой среды.

    Примечание

    В следующей таблице содержатся дополнительные сведения о каждом из этих свойств.

  4. Сохраните свою работу, а затем закройте файл 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 и передать расположение файла проекта для конкретной среды в качестве параметра. Это можно сделать разными способами: