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


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

Джейсон Ли

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

Этот раздел является частью серии учебников, основанных на требованиях к развертыванию предприятия вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения —решение Contact Manager — для представления веб-приложения с реалистичным уровнем сложности, включая приложение MVC 3 ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.

Метод развертывания в центре этих учебников основан на подходе к разделенному файлу проекта, описанному в разделе "Общие сведения о процессе сборки", в котором процесс сборки управляется двумя файлами проекта — одним из них содержит инструкции по сборке, которые применяются к каждой конечной среде, а также один из них содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется в файл проекта, не зависящем от среды, чтобы сформировать полный набор инструкций по сборке.

Обзор процесса

Файл проекта, используемый для сборки и развертывания решения Диспетчера контактов, разделен на два физических файла:

  • Один из них содержит универсальные параметры сборки и инструкции (файл Publish.proj ).
  • Один из них содержит параметры сборки для конкретной среды (Env-Dev.proj, Env-Stage.proj и т. д.).

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

Многие из этих значений определяются тем, как настроена целевая среда— в частности, настроен ли целевой веб-сервер для использования службы агента веб-развертывания (удаленного агента) или обработчика веб-развертывания. Дополнительные сведения об этих подходах и рекомендации по выбору подходящего подхода для вашей среды см. в разделе "Выбор правильного подхода к веб-развертыванию".

Для сценария Диспетчера контактов требуется два файла проекта для конкретной среды:

  • Развертывание в тестовой среде разработчика (Env-Dev.proj). Тестовая среда разработчика настроена для принятия удаленных развертываний с помощью удаленного агента, как описано в сценарии: настройка тестовой среды для веб-развертывания. Этот файл должен предоставить адрес конечной точки удаленного агента, а также параметры конкретного расположения, такие как строки подключения и конечные точки службы.
  • Развертывание в промежуточной среде (Env-Stage.proj). Промежуточная среда настроена для принятия удаленных развертываний с помощью обработчика веб-развертывания, как описано в сценарии: настройка промежуточной среды для веб-развертывания. Этот файл должен предоставить адрес конечной точки для Web Deploy Handler, а также параметры, зависящие от местоположения, такие как строки подключения и конечные точки служб.

Важно отметить, что параметры, настроенные в файле проекта для конкретной среды, не влияют на содержимое самого веб-пакета, а определяют, как развертывается пакет и какие значения параметров предоставляются при извлечении пакета. Веб-пакет импортируется в рабочую среду вручную, как описано в сценарии. Настройка рабочей среды для веб-развертывания и ручной установки веб-пакетов, поэтому не имеет значения, какие параметры используются в файле проекта для конкретной среды при создании пакета. Диспетчер служб IIS запрашивает все параметризованные значения, такие как строки подключения и конечные точки службы, при импорте пакета.

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

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

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

  2. В окне обозревателя решений разверните папку "Публикация ", разверните папку 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 Метод, который должен использовать Web Deploy для проверки подлинности на удаленном компьютере. Это значение должно иметь значение NTLM или Basic. Как правило, вы будете использовать NTLM при развертывании в службе удаленных агентов и базовой версии при развертывании в обработчике веб-развертывания. Если вы используете обычную проверку подлинности, необходимо также указать имя пользователя и пароль, от имени которых средство веб-развертывания IIS (Web Deploy) должно действовать для выполнения развертывания. В этом примере эти значения предоставляются с помощью свойств MSDeployUsername и MSDeployPassword . Если вы используете проверку подлинности NTLM, можно опустить эти свойства или оставить их пустыми.
MSDeployUsername Если вы используете базовую аутентификацию, Web Deploy будет использовать эту учетную запись на удаленном компьютере. Это должно принимать форму DOMAIN*username* (например, FABRIKAM\matt). Это значение используется только при указании базовой проверки подлинности. При использовании аутентификации NTLM свойство можно не указывать. Если задано значение, оно будет игнорироваться.
MSDeployPassword При использовании базовой проверки подлинности Web Deploy будет использовать этот пароль на удаленном компьютере. Это пароль для учетной записи пользователя, указанной в свойстве 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-адрес доступен только на компьютере, на котором он установлен. Из-за этого лучше использовать localhost или IP-адрес, а не имя компьютера или заголовок узла в URL-адресе. Если вы используете имя компьютера или заголовок узла, функция проверки безопасности цикла в IIS может блокировать URL-адрес и возвращать ошибку HTTP 401.1 — неавторизованная ошибка.
CmDatabaseConnectionString Строка подключения для сервера базы данных. Строка подключения определяет учетные данные, которые VSDBCMD будет использовать для связи с сервером базы данных и создания базы данных и учетных данных, которые будет использовать пул приложений веб-сервера для связи с сервером базы данных и взаимодействия с базой данных. По сути, у вас есть два варианта здесь. Можно указать встроенную безопасность=true, в этом случае используется встроенная проверка подлинности Windows: Data Source=TESTDB1; Встроенная безопасность=true В этом случае база данных будет создана с помощью учетных данных пользователя, выполняющего исполняемый файл VSDBCMD, и приложение получит доступ к базе данных с помощью удостоверения учетной записи компьютера веб-сервера. Кроме того, можно указать имя пользователя и пароль учетной записи SQL Server. В этом случае учетные данные SQL Server используются как VSDBCMD для создания базы данных, так и пула приложений для взаимодействия с базой данных: Data Source=TESTDB1; User Id=ASqlUser; Password=; В пошаговом руководстве в этом разделе предполагается, что вы будете использовать встроенную проверку подлинности Windows.
CmTargetDatabase Имя, которое необходимо предоставить базе данных, которую вы создадите на сервере базы данных. Указанное здесь значение добавляется в команду VSDBCMD в качестве параметра. Он также используется для создания полной строки подключения, которую пул приложений на веб-сервере может использовать для взаимодействия с базой данных.

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

Пример 1. Развертывание в службе удаленного агента

В этом примере:

  • Вы развертываете службу удаленного агента на TESTWEB1.
  • Вы указываете Web Deploy использовать проверку подлинности NTLM. Веб-развертывание будет выполняться с помощью учетных данных, используемых для вызова обработчика сборки Майкрософт (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 — Развертывание в конечной точке обработчика веб-развертывания

В этом примере:

  • Вы выполняете развертывание на конечную точку службы Web Deploy Handler на STAGEWEB1.
  • Вы указываете Web Deploy использовать базовую проверку подлинности.
  • Вы указываете, что веб-развертывание должно выполняться от имени учетной записи FABRIKAM\stagingdeployer на удаленном компьютере.
  • Вы используете проверку подлинности SQL Server для развертывания базы данных ContactManager в STAGEDB1.
<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 и передать расположение файла проекта для конкретной среды в качестве параметра. Это можно сделать различными способами: