terça-feira, 13 de junho de 2017

Publicação MANUAL de WebApi no IIS

Nesse artigo vou mostrar como fazer um Deploy MANUAL de uma API feita com o ASP.NET Web.API, em um IIS (Internet Information Services) de um Servidor Windows 8 ou superior,

Hoje muito se fala de Deploy Automático, Continuous Integration, entre outros termos, que na prática se resumem na automação do processo de publicação de aplicações em geral.

Não contesto a importância de um deploy automático, integrado ao seu repositório de código fonte, vinculado à um processo de Build, que quando bem feito, faz tudo de forma rápida e automática. Mas dedico esse POST aos Devs Old School, que no dia a dia acabam precisando fazer uma publicação esporádica, e o método Manual acaba sendo o mais fácil e rápido.

Vamos ao que interessa!

Dada uma API feita com o ASP.NET Web.API no Visual Studio, vá até a Solution Explorer, clique com o botão direito sobre o projeto Web.API e clique na opção Publish.

Logo em seguida irá aparecer uma tela com algumas opções de publicação, que temos no Visual Studio 2017. São elas:
  • Microsoft Azure App Service: Para publicar diretamente em um Serviço no Azure
  • IIS, FTP, etc: Para publicar via FTP ou se conectando diretamente em um servidor IIS.
  • Folder: Também conhecida como "Deploy na MÃO", vamos usar essa opção
  • Import Profile: Caso você tenha um perfil de publicação.
  • Microsoft Azure Virtual Machines: Para publicar em uma máquina virtual no Azure.
Como dito, vamos fazer isso na mão. Sendo assim clique na opção Folder, e escolha uma pasta onde você quer gerar seus arquivos de publicação.

Veja que na janela output do Visual Studio você terá o resultado da sua publicação:


O resultado do deploy você vai encontrar na pasta selecionada. Antes de continuar, aqui vai um alerta. Quando fazemos um deploy manual como esse, é nossa responsabilidade garantir que todas as configurações sejam corretamente alteradas! Veja que nesse deploy temos um arquivo web.config, que nesse caso têm uma connection string. Essa connection string obviamente precisa ser modificada para apontar para o Banco de Dados de Produção. Atenção! É sua responsabilidade cuidar disso quando faz um Deploy Manual!

Caso você tenha outra configuração no web.config ou em algum outro arquivo, faça todas as alterações necessárias antes de prosseguir.

Uma das vantagens de um deploy automático é que esse processo de "troca da connection string" fica configurado, e o desenvolvedor não precisa realizá-lo. Mas, novamente, estamos falando de um processo Manual, onde iremos assumir todos os riscos.

Vamos agora, criar um WebSite no IIS, onde iremos publicar nossa API. Abra o IIS do seu servidor, clique com o botão direito sobre a pasta Sites e escolha a opção Adicionar Site.

Na Janela que abrir, informe o nome do seu site, o caminho físico onde ele vai ficar no servidor, e a porta em que ele será publicado. Lembre-se que estamos publicando uma API e não um WebSite, então é comum colocarmos em uma porta diferente da 80.


Clique em OK

Agora copie os arquivos gerados pelo nosso Deploy Manual, para o mesmo caminho físico escolhido aqui. 

Pronto! Sua API foi publicada manualmente. Agora, se você faz esse processo com frequência, pense seriamente em adotar alguma técnica de Deploy automatizado, para evitar qualquer erro durante a publicação das suas APIs.

4 comentários:

  1. Boa tarde, se o servidor em que faço a publicação, não é o mesmo em que tenho que subir a API. Os procedimentos seriam os mesmos?
    Pergunto porque, fiz o procedimento de publicação em um servidor de desenvolvimento e nele consegui subir a API no IIS sem problemas, mas ao copiar a pasta de publicação para um outro servidor, não consegui subir a API, deu o erro "HTTP Error 403.14 - Forbidden".

    ResponderExcluir
  2. Fizemos a publicação, mas quando fazemos um POST para a API, volta o erro HTTP Error 405. Tem alguma dica?

    ResponderExcluir