Este artigo é parte da série:
O Web Deploy é um recurso do IIS que facilita muito a publicação de aplicações e websites a partir do Visual Studio, automatizando todo o processo de atualização de arquivos no momento do upload.
Para utilizar este recurso, é necessário primeiro instalar o Web Deploy no servidor que está rodando o IIS. Baixe o instalador diretamente do site da Microsoft e faça a instlação:
Agora que o serviço está instalado, temos duas formas de fazer a publicação: utilizando um usuário do sistema ou um usuário do IIS. Para fins deste exemplo, vamos utilizar um usuário do sistema.
Utilizando Usuário do Windows
Vá em “Management Service” no IIS. Caso não haja essa opção lá, reinicie o serviço IIS.
Certifique-se que esteja habilitado “Windows Credentials Only”. Caso não seja esta a opção ativa, utilize os comandos do painel à direita para parar o serviço, altere para a opção correta, clique em “Apply” e então inicie o serviço novamente.
Vá até o “Computer Management” e adicione um usuário para fazer as publicações, desmarque “User must change password…” e marque “Password never expires”.
Ainda no Computer Management, crie um novo grupo com o nome “MSDepSvcUsers” (tem que ser exatamente dessa forma), e adicione nele o usuário que acabou de criar.
De volta ao IIS, selecione o site que irá configurar o Web Deploy e então vá em “IIS Manager Permissions”.
Clique em “Allow User…” no menu à direita e selecione o usuário Windows que acabamos de criar. Uma forma fácil de selecionar o usuário, assim que abrir a caixa de diálogo “Select User or Group” é clicando em “Advanced…”, “Find Now” e então selecionando o usuário na lista que irá aparecer.
Agora que toda a configuração do usuário já está feita, clique-direito sobre o nome do site e selecione “Deploy”, “Configure Web Deploy Publishing…”.
Observe que o endereço inicialmente sugerido para conectar com o servidor não é localizável pela Internet. O endereço “https://SRV05:8172/msdeploy.axd” só funciona dentro do meu próprio computador ou, no máximo, em minha rede local. O mesmo deve acontecer com você, e precisa ser corrigido manualmente. No meu caso, este servidor é localizável pelo endereço “srv05.larsoft.net”, então alterei o endereço de publicação para “srv05.larsoft.net:8172/msdeploy.axd”. Observe que removi até mesmo o designador de protocolo (https://). Após fazer essas alterações e clicar em “Setup”, o sistema informa que liberou o acesso do usuário “Srv05\Treino01” e que o arquivo de configuração foi salvo na área de trabalho.
Agora vamos abrir o arquivo que foi gerado, no me caso “SRV05_Treino01_treino01.publishsettings”, pode ser com qualquer editor básico, como o notepad e vamos fazer algumas alterações importantes. Como o propósito deste arquivo é ser utilizado no computador de desenvolvimento, tanto faz fazer essa edição ainda no servidor ou já no computador onde ele será utilizado. O importante é fazer a mudança antes da utilização do arquivo.
<?xml version="1.0" encoding="utf-8"?> <publishData> <publishProfile publishUrl="srv05.larsoft.net:8172/msdeploy.axd" msdeploySite="treino01" destinationAppUrl="https://treino01.larsoft.net:443/" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="SRV05\Treino01" /> </publishData>
A linha 9, “profileName” possui o valor “Default Settings”. Esse valor pode ficar confuso caso seu projeto venha a ter outras opções de publicação, então altere esse nome para algo mais amigável e específico. No caso do nosso exemplo, fiz dessa forma:
<?xml version="1.0" encoding="utf-8"?> <publishData> <publishProfile publishUrl="srv05.larsoft.net:8172/msdeploy.axd" msdeploySite="treino01" destinationAppUrl="https://treino01.larsoft.net:443/" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Srv05 - Treino01" publishMethod="MSDeploy" userName="SRV05\Treino01" /> </publishData>
Agora que o arquivo PublishSettings está devidamento configurado, vamos inseri-lo em nosso projeto. Para isso, abra no projeto no Visual Studio, clique-direito sobre o nome do projeto e “Publish…”
Clique em “New profile”, selecione “Import Profile” e “Next”. Selecione o arquivo que acabamos de editar e “Finish”.
Para finalizar, estando selecionado o perfil que acabamos de criar, nessa caso “Srv05 – Treino01.pubxml”, clique em “More actions”, “Edit”, vá para a aba “Connection”, digite a senha desse usuário lá no servidor, e marque a caixa “Save password”. Se tudo deu certo, ao clicar em “Validade Connection”, você verá um checkmark verde.
Agora basta salvar e, daqui para frente, sempre que quiser atualizar o programa no servidor, vai bastar clicar no botão “Publish”, que todo o processo de compilação, upload, e atualização dos arquivos no servidor ocorrerá de forma automática.
Utilizando Usuário do IIS
Caso não queira criar usuários no Windows do servidor com o propósito de permitir publicações, é possível criar usuários dentro do IIS. Essa solução, a princípio é mais leve e limpa do que a anterior, porém mesmo seguindo rigorosamente as instruções publicadas no site da Microsoft, não conseguimos fazer esta solução funcionar. Executamos todos os passos e, ao final, quando mandamos validar a conexão recemos uma mensagem de erro que leva a crer que o usuário não tem permissões para realizar a ação. Vou deixar os passos descritos abaixo e, caso alguém saiba a solução para o problema ou tenha conseguido fazer funcionar desta forma, deixe a dica lá no final, nos comentários, que eu atualizo o conteúdo aqui no site.
1. No IIS Manager, selecione o servidor e na aba “Management” selecione “IIS Manager Users”.
2. Em “Actions”, clique em “Add User…” e então adicione o usuário que terá direito a fazer as publicações.
3. Selecione o site que deseja liberar as permissões e, na aba “Management”, abra “IIS Manager Permissions”.
4. Por padrão, já haverá um usuário listado, o “Administrator”, para adicionar o usuário que acabou de criar, em “Actions”, clique em “Allow User…” e então selecione o usuário.
5. Clique-direito no nome do site, “Deploy”, “Configure Web Deploy Publishing…”
6. Certifique-se de selecionar o usuário correto, que acabou de criar, e que a URL de publicação aponta corretamente para o servidor que hospedará o site. Só então clique em “Setup”. Se tudo der certo, um arquivo será gerado na área de trabalho do Windows.
7. Abra o arquivo que acabou de ser criado com qualquer editor de texto básico. Recomendo o Notepad para isso.
8. O conteúdo do arquivo deverá ser algo parecido com isso:
Recomendo trocar o parâmetro “profileName” para algo mais específico. Aqui no caso deste exemplo, por exemplo, eu troquei para “IIS no Srv05”. Sessa forma, caso você precise criar outros perfis de publicação, eles aparecerão com nomes distintos. Se não fizer isso, todos aparecerão com o nome “Default Settings”.
Agora que o arquivo PublishSetting está devidamente configurado, envie-o para o computador de desenvolvimento.
9. No Visual Studio, vamos em “Publish…”.
10. De volta ao computador de desenvolvimento, no Visual Studio: “New profile”, “Import Profile”, “Next” e selecione o arquivo PublishSettings que acabou de receber e “Finish”.
11. Agora, o pefil recém-criado já está disponível entre as opções de publicação do site.
12. Selecione o perfil e então “Edit” para um último ajuste.
13. Na aba “Connection”, digite a senha no campo “Password” e marque a caixa “Save Password”. Dessa forma, não vai ser necessário digitar a senha todas as vezes que fizer uma publicação.
14. Agora vem o teste final. Clicando em “Publish” o processo de publicação automática entra em ação.