Configuração de propriedades de implantação para um ambiente de destino

por Jason Lee

Este tópico descreve como configurar propriedades específicas do ambiente para implantar a solução do Gerenciador de Contatos de exemplo em um ambiente de destino específico.

Este tópico faz parte de uma série de tutoriais baseados nos requisitos de implantação corporativa de uma empresa fictícia chamada Fabrikam, Inc. Esta série de tutoriais usa uma solução de exemplo, a solução do Contact Manager , para representar um aplicativo Web com um nível realista de complexidade, incluindo um aplicativo ASP.NET MVC 3, um serviço WCF (Windows Communication Foundation) e um projeto de banco de dados.

O método de implantação no centro desses tutoriais baseia-se na abordagem de arquivo de projeto dividido descrita em Noções básicas sobre o processo de build, no qual o processo de build é controlado por dois arquivos de projeto, um contendo instruções de build que se aplicam a cada ambiente de destino e outro que contém configurações de build e implantação específicas do ambiente. No momento do build, o arquivo de projeto específico do ambiente é mesclado no arquivo de projeto independente do ambiente para formar um conjunto completo de instruções de build.

Visão geral do processo

O arquivo de projeto que você usará para compilar e implantar a solução do Contact Manager é dividido em dois arquivos físicos:

  • Uma que contém configurações e instruções de build universais (o arquivo Publish.proj ).
  • Uma que contém configurações de build específicas do ambiente (Env-Dev.proj, Env-Stage.proj e assim por diante).

No momento do build, o arquivo de projeto específico do ambiente apropriado é mesclado no arquivo universal Publish.proj para formar um conjunto completo de instruções de build. Você pode configurar a implantação para ambientes de destino específicos criando ou personalizando arquivos de projeto específicos do ambiente com configurações que descrevem seu próprio cenário de implantação.

Muitos desses valores são determinados pela forma como seu ambiente de destino está configurado, em particular, se o servidor Web de destino está configurado para usar o Serviço de Deployment Agent web (o agente remoto) ou o Manipulador de Implantação da Web. Para obter mais informações sobre essas abordagens e para obter diretrizes sobre como escolher a abordagem certa para seu próprio ambiente, consulte Escolhendo a abordagem certa para a implantação da Web.

O cenário do Contact Manager requer dois arquivos de projeto específicos do ambiente:

  • Implantação em um ambiente de teste do desenvolvedor (Env-Dev.proj). O ambiente de teste do desenvolvedor é configurado para aceitar implantações remotas usando o agente remoto, conforme descrito em Cenário: Configurando um ambiente de teste para implantação da Web. Esse arquivo precisa fornecer o endereço do ponto de extremidade do agente remoto, bem como configurações específicas do local, como cadeias de conexão e pontos de extremidade de serviço.
  • Implantação em um ambiente de preparo (Env-Stage.proj). O ambiente de preparo é configurado para aceitar implantações remotas usando o Manipulador de Implantação da Web, conforme descrito em Cenário: Configurando um ambiente de preparo para implantação da Web. Esse arquivo precisa fornecer o endereço do ponto de extremidade do Manipulador de Implantação da Web, bem como configurações específicas do local, como cadeias de conexão e pontos de extremidade de serviço.

É importante observar que as configurações que você configura no arquivo de projeto específico do ambiente não afetam o conteúdo do próprio pacote da Web. Em vez disso, eles controlam como o pacote é implantado e quais valores de parâmetro são fornecidos quando o pacote é extraído. Você está importando o pacote web para o ambiente de produção manualmente, conforme descrito em Cenário: Configurando um ambiente de produção para implantação da Web e instalando manualmente pacotes Web, portanto, não importa quais configurações você usou no arquivo de projeto específico do ambiente quando você gerou o pacote. O Gerenciador de Serviços de Informações da Internet (IIS) solicitará qualquer valor parametrizado, como cadeias de conexão e pontos de extremidade de serviço, quando você importar o pacote.

Para implantar a solução do Contact Manager em seu próprio ambiente de destino, você pode personalizar esse arquivo ou usá-lo como um modelo e criar seu próprio arquivo.

Para definir as configurações de implantação específicas do ambiente para a solução do Contact Manager

  1. Abra a solução ContactManager-WCF no Visual Studio 2010.

  2. Na janela Gerenciador de Soluções, expanda a pasta Publicar, expanda a pasta EnvConfig e clique duas vezes em Env-Dev.proj.

    Na janela Gerenciador de Soluções, expanda a pasta Publicar, expanda a pasta EnvConfig e clique duas vezes em Env-Dev.proj.

  3. Substitua os valores de propriedade no arquivo Env-Dev.proj pelos valores corretos para seu próprio ambiente de teste.

    Observação

    A tabela que segue este procedimento fornece mais informações sobre cada uma dessas propriedades.

  4. Salve seu trabalho e feche o arquivo Env-Dev.proj .

Escolhendo as propriedades de implantação corretas

Esta tabela descreve a finalidade de cada propriedade no arquivo de projeto específico do ambiente de exemplo, Env-Dev.proj, e fornece algumas diretrizes sobre os valores que você deve fornecer.

Nome da propriedade Detalhes
MSDeployComputerName O nome do servidor Web de destino ou do ponto de extremidade de serviço. Se você estiver implantando no serviço de agente remoto no servidor Web de destino, poderá especificar o nome do computador de destino (por exemplo, TESTWEB1 ou TESTWEB1.fabrikam.net) ou especificar o ponto de extremidade do agente remoto (por exemplo, http://TESTWEB1/MSDEPLOYAGENTSERVICE). A implantação funciona da mesma maneira em cada caso. Se você estiver implantando no Manipulador de Implantação da Web no servidor Web de destino, deverá especificar o ponto de extremidade de serviço e incluir o nome do site do IIS como um parâmetro de cadeia de caracteres de consulta (por exemplo, https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth O método que a Implantação da Web deve usar para autenticar no computador remoto. Isso deve ser definido como NTLM ou Básico. Normalmente, você usará o NTLM se estiver implantando no serviço de agente remoto e no Basic se estiver implantando no Manipulador de Implantação da Web. Se você usar a autenticação básica, também precisará especificar o nome de usuário e a senha que a Ferramenta de Implantação da Web do IIS (Implantação da Web) deve representar para executar a implantação. Neste exemplo, esses valores são fornecidos por meio das propriedades MSDeployUsername e MSDeployPassword . Se você usar a autenticação NTLM, poderá omitir essas propriedades ou deixá-las em branco.
MSDeployUsername Se você usar a autenticação básica, a Implantação da Web usará essa conta no computador remoto. Isso deve usar o formulário DOMÍNIO*nome de usuário* (por exemplo, FABRIKAM\matt). Esse valor só será usado se você especificar a autenticação básica. Se você usar a autenticação NTLM, a propriedade poderá ser omitida. Se um valor for fornecido, ele será ignorado.
MSDeployPassword Se você usar a autenticação básica, a Implantação da Web usará essa senha no computador remoto. Essa é a senha da conta de usuário especificada na propriedade MSDeployUsername . Esse valor só será usado se você especificar a autenticação básica. Se você usar a autenticação NTLM, a propriedade poderá ser omitida. Se um valor for fornecido, ele será ignorado.
ContactManagerIisPath O caminho do IIS no qual você deseja implantar o aplicativo MVC do Contact Manager. Esse deve ser o caminho como aparece no Gerenciador do IIS, no formulário [nome do site do IIS]/[nome do aplicativoWeb]. Lembre-se de que o site do IIS precisa existir antes de implantar seu aplicativo. Por exemplo, se você tiver criado um site do IIS chamado DemoSite, poderá especificar o caminho do IIS para o aplicativo MVC como DemoSite/ContactManager.
ContactManagerServiceIisPath O caminho do IIS no qual você deseja implantar o serviço WCF do Contact Manager. Por exemplo, se você tiver criado um site do IIS chamado DemoSite, poderá especificar o caminho do IIS para o serviço WCF como DemoSite/ContactManagerService.
ContactManagerTargetUrl A URL na qual o serviço WCF pode ser acessado. Isso assumirá o formulário [URL raiz do site do IIS]/[nome do aplicativo de serviço]/[ponto de extremidade de serviço]. Por exemplo, se você tiver criado um site do IIS na porta 85, a URL assumirá o formulário http://localhost:85/ContactManagerService/ContactService.svc. Lembre-se de que o aplicativo MVC e o serviço WCF são implantados no mesmo servidor. Como resultado, essa URL só é acessada do computador no qual está instalada. Por isso, é melhor usar o localhost ou o endereço IP, em vez do nome do computador ou de um cabeçalho de host, na URL. Se você usar o nome do computador ou um cabeçalho de host, o loopback marcar recurso de segurança no IIS poderá bloquear a URL e retornar um erro HTTP 401.1 – Não autorizado.
CmDatabaseConnectionString A cadeia de conexão do servidor de banco de dados. A cadeia de conexão determina as credenciais que o VSDBCMD usará para contatar o servidor de banco de dados e criar o banco de dados e as credenciais que o pool de aplicativos do servidor Web usará para entrar em contato com o servidor de banco de dados e interagir com o banco de dados. Essencialmente, você tem duas opções aqui. Você pode especificar Integrated Security=true, nesse caso, autenticação do Windows integrado é usado: Data Source=TESTDB1;Integrated Security=true Nesse caso, o banco de dados será criado usando as credenciais do usuário que executa o executável VSDBCMD e o aplicativo acessará o banco de dados usando a identidade da conta de computador do servidor Web. Como alternativa, você pode especificar o nome de usuário e a senha de uma conta de SQL Server. Nesse caso, as credenciais SQL Server são usadas pelo VSDBCMD para criar o banco de dados e pelo pool de aplicativos para interagir com o banco de dados: Data Source=TESTDB1; Id do usuário=ASqlUser; Password=Pa$$w 0rd Os passo a passo neste tópico pressupõem que você usará autenticação do Windows integrados.
CmTargetDatabase O nome que você deseja dar ao banco de dados que você criará no servidor de banco de dados. O valor que você fornece aqui é adicionado ao comando VSDBCMD como um parâmetro. Ele também é usado para criar uma cadeia de conexão completa que o pool de aplicativos no servidor Web pode usar para interagir com o banco de dados.

Esses exemplos mostram como você pode configurar essas propriedades para cenários de implantação específicos.

Exemplo 1 – Implantação no Serviço de Agente Remoto

Neste exemplo:

  • Você está implantando no serviço de agente remoto em TESTWEB1.
  • Você está instruindo a Implantação da Web a usar a autenticação NTLM. A Implantação da Web será executada usando as credenciais usadas para invocar o Microsoft Build Engine (MSBuild).
  • Você está usando a autenticação integrada para implantar o banco de dados ContactManager em TESTDB1. O banco de dados será implantado usando as credenciais usadas para invocar o 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>

Exemplo 2 – Implantação no ponto de extremidade do manipulador de implantação da Web

Neste exemplo:

  • Você está implantando no ponto de extremidade do serviço Manipulador de Implantação da Web no STAGEWEB1.
  • Você está instruindo a Implantação da Web a usar a autenticação básica.
  • Você está especificando que a Implantação da Web deve representar a conta FABRIKAM\stagingdeployer no computador remoto.
  • Você está usando SQL Server autenticação para implantar o banco de dados ContactManager em 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>

Conclusão

Neste ponto, os arquivos de projeto estão totalmente configurados para criar e implantar a solução do Contact Manager em um ou mais ambientes de destino.

Para usar esses arquivos de projeto como parte de um processo de implantação repetível de etapa única, você precisa executar o arquivo Publish.proj usando o MSBuild e passar o local do arquivo de projeto específico do ambiente como um parâmetro. Você pode fazer isso de várias maneiras: