Certificação Microsoft 70-487: Objetivo 5.5 – Create, configure, and publish a web package

Olá pessoal, tudo bem?
O objetivo Create, configure, and publish a web package, penúltimo da certificação, cobre aspectos do Web Deployment Framework, ou Web Deploy.

Vamos ver como criar um IIS Install Package, configurar o processo de build para fazer o output de um Web Package e aplicar condições pré e pós deploy.

Criando Um IIS Install Package

Nessa seção, vamos cobrir as 4 principais maneiras de se criar um pacote Web Deploy: Visual Studio, IIS, prompt de comando e Windows PowerShell.

Visual Studio

No Visual Studio, você pode usar a ferramenta Publish para criar um pacote Web Deploy. Ela permite que você adicione scripts de banco de dados ou execute Migrations do EF e mude connection strings do web.config.

Você começa o processo no menu Build > Publish {nome do projeto} ou com o botão direito no projeto > Publish. A seguinte tela é mostrada:

publish web

Na seção Profile, você precisa criar um Publish Profile, que é guardado na solution para futuros publishs. Você pode criar um Publish Profile para cada ambiente que vai fazer o deploy da aplicação, como desenvolvimento, homologação e produção.

Se você está fazendo deploy no Azure Websites, você pode fazer o download do Publish Profile diretamente do portal.

Na segunda página da janela, você escolhe o método do deploy. No nosso caso, escolhemos Web Deploy ou Web Deploy Package.

Web Deploy faz o deploy diretamente para um servidor remoto que tem o serviço Web Deploy instalado. Você precisa colocar o endereço do servidor e as credenciais. O Web Deploy Package cria um pacote Web Deploy que você pode fazer a instalação manualmente. Você só precisa entrar com uma localização para o pacote e o nome do site, que pode ser mudado no momento do deploy:

publish web

Na terceira parte você pode configurar opções como a configuração do build (Release por padrão), precompile do site, excluir arquivos do App_Data e configurar o banco de dados:

publish web

Após clicar em Publish, o Visual Studio vai gerar um pacote Web Deploy que você pode usar para fazer o deploy no IIS via IIS Manager ou linha de comando.

Há algumas opções extras na página de Properties do seu projeto, nas páginas Package/Publish Web e Package/Publish SQL.

Em Package/Publish Web, você seleciona os arquivos que quer fazer o deploy nas seguintes opções: somente os arquivos obrigatórios, todos os arquivos do projeto ou todos os arquivos na pasta do projeto. Você pode também selecionar uma opção para incluir as configurações do IIS Express para garantir que os servidores estão configurados corretamente.

A página Package/Publish SQL é desabilitada por padrão, mostrando uma mensagem que você pode fazer as configurações na janela de Publish. Mas você pode habilitá-la e fazer as configurações para o banco de dados.

IIS

Após a instalação do Web Deploy, o IIS Manager suporta tanto a criação de pacotes Web Deploy como a importação deles para instalação.

É possível criar pacotes para uma aplicação, site ou o servidor completo. Nesse último caso, o pacote contém todas as configurações do servidor como o applicationHost.config, registros do IIS, certificados SSL e o conteúdo de todas as aplicações hospedadas.

Você exporta um pacote abrindo o IIS Manager, selecionando a aplicação, site ou servidor a ser exportado e indo em Export Application. A seguinte tela é mostrada:

export application package

Na opção Manage Components, você pode configurar providers para configurações de registro, fazer o deploy de assemblies no GAC ou um banco de dados no pacote.

O próximo passo no wizard permite que você configure parâmetros para os providers, como o nome do site ou a localização do banco de dados.

Para fazer a importação de um pacote, você seleciona o servidor ou site e clica em Import Package. Esse pacote pode ter sido criado via exportação do IIS, Visual Studio ou linha de comando. Após selecionar a localização do pacote, uma janela é aberta para a seleção dos arquivos que você quer fazer o deploy. Você pode também especificar os valores dos parâmetros criados na exportação do pacote.

Na importação, há uma opção chamada whatif que mostra as ações que serão feitas no deploy sem que elas sejam feitas de fato.

Prompt De Comando

A ferramenta usada na linha de comando é a MSDeploy. Você pode usá-la para sincronizar servidores, criar e fazer o deploy de pacotes. O comando a seguir, por exemplo, faz a sincronização de 2 servidores com a opção whatif:

msdeploy -whatif -verb:sync -source:iisApp="Default Web Site/MyApp" -dest:iisApp="Default Web Site/MyApp", computerName=Server2

Alguns segmentos importantes são:

  • verb: especifica a operação a ser feita (delete, dump, getDependencies, getSystemInfo ou sync);
  • source: especifica a fonte dos dados;
  • dest: especifica o destino da operação;
  • whatif: indica que o comando deve rodar sem fazer as alterações de fato.

Para fazer um deploy com MSDeploy, você pode usar o .cmd gerado pelo Visual Studio na criação do pacote. O comando é o seguinte:

ProjectName.deploy.cmd /y /m:https://DestinationServerName:8172/MSDeploy.axd

Não é necessário memorizar todas as opções do Web Deploy para o exame. Saiba apenas a sintaxe básica, como a flag whatif. A lista completa das opções do MSDeploy pode ser vista aqui.

Windows PowerShell

O Windows PowerShell é uma ferramenta de linha de comando com capacidades extras. Como no prompt, você pode sincronizar servidores, criar e fazer o deploy de pacotes.

Para usar o Web Deploy do PowerShell, você precisa instalar o snap-in WDeploySnapin3.0 com o comando Add-PSSnapin WDeploySnapin3.0.

Depois, você pode obter a lista dos comandos do Web Deploy com o comando Get-Command -module WDeploySnapin3.0. O resultado é:

powershell

Para fazer um deploy, você primeiro precisa de um arquivo Publish Settings (o mesmo gerado pelo Visual Studio quando você cria ou importa um Publish Profile). O comando New-WDPublishSettings pode ser usado:

$cred = Get-Credential
New-WDPublishSettings -ComputerName WebServer -Site WebSite1 -Credentials $cred
-AllowUntrusted -SiteUrl "http://www.mywebsite.com" -FileName C:\temp\mywebsite.
publishsettings -AgentType wmsvc

O seguinte arquivo é criado após esse comando:

Depois, o comando Sync-WDApp pode ser usado para fazer o deploy:

Sync-WDApp "MyApp" "MyAppDeployedWithPowerShell" -DestinationPublishSettings "C:\temp\mywebsite.publishsettings"

Configurando O Processo De Build

Você pode configurar o processo de build no TFS para fazer o deploy da sua aplicação.

Editando o template da build com o seguinte comando, você pode criar um pacote em Release para fazer o deploy manualmente:

MSBuild "MyProjectName.csproj" /T:Package /P:Configuration=Release

Também é possível especificar o parâmetro /p:DeployOnBuild=True, que com o publish settings correto, faz o deploy da sua aplicação automaticamente.

Aplicando Condições Pré e Pós Deploy

Com Web Deploy, você pode também executar ações antes e depois de fazer o deploy da aplicação.

Você faz isso com as opções preSync e postSync em conjunto com runcommand:

msdeploy -verb:sync -source:contentPath="C:\Test1" -dest:contentPath="C:\Test2"
-preSync:runcommand="c:\MyBatchFile.bat"


Terminamos mais um objetivo 😀

Fique de olho no próximo post que será sobre o último objetivo da certificação, Share assemblies between multiple applications and servers.

Até lá!