Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 empresarial de uma empresa fictícia chamada Fabrikam, Inc. Esta série de tutoriais usa uma solução de exemplo, a solução do Gerenciador de Contatos , 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 no Understanding the Build Process, 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. Durante a 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 do Contact Manager é dividido em dois arquivos físicos:
- Uma que contém instruções e configuraçõ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 o ambiente de destino está configurado, em particular, se o servidor Web de destino está configurado para usar o Serviço do 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ções 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 estágio (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 Web, em vez disso, 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á a você 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 do Contact Manager em seu próprio ambiente de destino, você pode personalizar esse arquivo ou usá-lo como 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
Abra a solução ContactManager-WCF no Visual Studio 2010.
Na janela Gerenciador de Soluções , expanda a pasta Publicar, expanda a pasta EnvConfig e clique duas vezes em Env-Dev.proj.
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.
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 o Web Deploy deve usar para autenticar o computador remoto. | Isso deve ser definido como NTLM ou Basic. Normalmente, você usará 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 (Web Deploy) deve usar 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 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ê utilizar autenticação básica, o Web Deploy 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 ele 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 você implantar seu aplicativo. Por exemplo, se você criou 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ê 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á o formato [URL raiz do site do IIS]/[nome do aplicativo de serviço]/[ponto de extremidade do 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 recurso de segurança de verificação de loopback 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 entrar em contato com 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, 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 do computador 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: Fonte de Dados=TESTDB1; Id do usuário=ASqlUser; Password=; Os 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 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. |
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 no TESTWEB1.
- Você está instruindo o Web Deploy a usar a autenticação NTLM. A Implantação da Web será executada usando as credenciais usadas para invocar o MSBuild (Mecanismo de Build da Microsoft).
- 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 endpoint do Web Deploy Handler
Neste exemplo:
- Você está implantando no ponto de extremidade do serviço Web Deploy Handler no STAGEWEB1.
- Você está instruindo o Web Deploy a usar autenticação básica.
- Você está especificando que o Web Deploy 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 para 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 do Contact Manager em um ou mais ambientes de destino.
Para usar esses arquivos de projeto como parte de um processo de implantação de etapa única e repetível, 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:
- Para obter uma visão geral do MSBuild e uma introdução aos arquivos de projeto personalizados, consulte Noções básicas sobre o arquivo de projeto.
- Para obter informações sobre como formular um comando MSBuild que executa seus arquivos de projeto personalizados, consulte Implantando Pacotes Web.
- Para obter informações sobre como incorporar seus comandos do MSBuild em um arquivo de comando para implantações de etapa única e repetíveis, consulte Criando e executando um arquivo de comando de implantação.
- Para obter informações sobre como executar seus arquivos de projeto personalizados do Team Build, consulte Criando uma definição de build que dá suporte à implantação.