Partilhar via


Configurando 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 de exemplo do Contact Manager 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 Contact Manager — para representar um aplicativo Web com um nível realista de complexidade, incluindo um aplicativo MVC 3 ASP.NET, um serviço WCF (Windows Communication Foundation) e um projeto de banco de dados.

O método de implantação no centro desses tutoriais é baseado na abordagem de arquivo de projeto dividido descrita em Compreendendo o processo de compilação, na qual o processo de compilação é controlado por dois arquivos de projeto — um contendo instruções de compilação que se aplicam a cada ambiente de destino e outro contendo configurações de compilação e implantação específicas do ambiente. No momento da compilação, 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 compilação.

Visão geral do processo

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

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

No momento da compilação, o arquivo de projeto específico do ambiente apropriado é mesclado no arquivo universal Publish.proj para formar um conjunto completo de instruções de compilação. 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 o ambiente de destino é configurado — em particular, se o servidor Web de destino está configurado para usar o Serviço de Agente de Implantação da Web (o agente remoto) ou o Manipulador de Implantação da Web. Para obter mais informações sobre essas abordagens e para obter orientação sobre como escolher a abordagem certa para seu próprio ambiente, consulte Escolhendo a abordagem certa para 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 de 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 de 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 definidas no arquivo de projeto específico do ambiente não afetam o conteúdo do pacote da Web em si, em vez disso, elas controlam como o pacote é implantado e quais valores de parâmetro são fornecidos quando o pacote é extraído. Você está importando o pacote da 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 da Web, portanto, não importa quais configurações você usou no arquivo de projeto específico do ambiente quando gerou o pacote. O Gerenciador dos Serviços de Informações da Internet (IIS) solicitará quaisquer valores parametrizados, como cadeias de conexão e pontos de extremidade de serviço, quando você importar o pacote.

Para implantar a solução 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 configurações de implantação específicas do ambiente para a solução 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 a seguir a 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 orientações sobre os valores que você deve fornecer.

Nome da propriedade Detalhes
MSDeployComputerName O nome do servidor Web de destino ou 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 o ponto de extremidade do agente remoto (por exemplo, http://TESTWEB1/MSDEPLOYAGENTSERVICE). A implantação funciona da mesma maneira em todos os casos. Se você estiver implantando no manipulador de implantação da Web no servidor Web de destino, deverá especificar o ponto de extremidade do 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 Basic. Normalmente, você usará NTLM se estiver implantando no serviço de agente remoto e 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.
MSDeployNome de utilizador Se você usar a autenticação básica, a Implantação da Web usará essa conta no computador remoto. Isso deve assumir a forma DOMAIN*username* (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. Esta é a senha para a conta de usuário que você especificou 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 formato [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ê criou um site do IIS chamado DemoSite, pode 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ê criou 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á a forma [URL raiz do site do IIS]/[nome do aplicativo de serviço]/[ponto de extremidade do serviço]. Por exemplo, se você criou um site do IIS na porta 85, a URL assumirá o formato 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, esse URL só é acessado a partir da máquina na qual está instalado. Por isso, é melhor usar localhost ou o endereço IP, em vez do nome da máquina ou de um cabeçalho de host, na URL. Se você usar o nome da máquina ou um cabeçalho de host, o recurso de segurança de verificação de loopback no IIS pode bloquear a URL e retornar um HTTP 401.1 - erro não autorizado .
CmDatabaseConnectionString A cadeia de conexão para o 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 contatar 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, caso em que a autenticação integrada do Windows é usada: Data Source=TESTDB1; Segurança Integrada = 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 da máquina do servidor Web. Como alternativa, você pode especificar o nome de usuário e a senha de uma conta do SQL Server. Nesse caso, as credenciais do 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; Senha=; As instruções passo a passo neste tópico pressupõem que você usará a autenticação integrada do Windows.
CmTargetDatabase O nome que você deseja dar ao banco de dados que você criará no servidor de banco de dados. O valor fornecido 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.

Estes 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 no 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 a autenticação do SQL Server para implantar o banco de dados ContactManager no 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, seus arquivos de projeto estão totalmente configurados para criar e implantar a solução 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: