Deploy do MX Reverse no Heroku

No texto anterior, comentei sobre minhas escolhas para montar um site para verificar o DNS reverso (https://eduardoklosowski.wordpress.com/2014/12/08/mx-reverse-e-escolhas-de-frameworks/). Agora comentarei sobre a hospedagem do mesmo no Heroku.

Primeiro fiz a aplicação funcionar localmente, que bastava juntar a página escrita no AngularJS para ficar disponível no WSGI. Não é uma boa prática servir arquivos estáticos pelo WSGI, porém é fica mais simples para o desenvolvimento ter apenas um servidor HTTP e é desta forma que o Heroku trabalha. Para isto reutilizei o virtualenv do Python que havia criado para fazer o desenvolvimento, com a biblioteca do DNS e o Gunicorn (servidor WSGI) já instalado, adicionei o pacote static3 e alterei no código.

Com tudo devidamente testado no Gunicorn, criei o arquivo requirements.txt que é um padrão de projetos Python para dizer as dependências, no meu caso eram todos os pacotes instalados via pip, então foi só executar pip freeze > requirements.txt, porém o mesmo pode ser editado para remover alguma coisa ou ajustes de verão dos pacotes sem problemas.

Bastava ainda dizer como iniciar a aplicação, já que o Gunicorn tem vários parâmetros e é necessário informar onde está a função WSGI dentro do código Python. No Heroku esses parâmetros ficam dentro de um arquivo chamado Procfile, que consiste em um nome mais a linha de comando, podendo ter vários processos em diferentes linhas, no meu caso fiz apenas web: gunicorn wsgi:application --access-logfile - --error-logfile -. É possível utilizar esse arquivo localmente como o Heroku faz utilizando um programa escrito em Ruby chamado Foreman, porém optei pela versão escrita em Python chamada Honcho, com ele devidamente instalado bastou um honcho start e minha aplicação estava funcionando localmente já na forma necessária para subir no Heroku.

Criei uma conta, sem mistérios. Como o Heroku trabalha com o deploy baseado em Git, é necessário cadastrar uma Chave SSH, da mesma forma que ocorre no GitHub e outros serviços que utilizam o protocolo do SSH. Como já tenho a minha chave, não precisei criar uma nova, porém quem precisar pode utilizar o comando ssh-keygen no GNU/Linux. Copiei o conteúdo do arquivo id_rsa.pub e adicionei em SSH Keys dentro do Manage Account.

Próximo passo é criar o aplicativo, que pode ser feito dentro de Personal Apps, clicando no ícone de mais. Incrivelmente esse cadastro é bem simples, o nome do aplicativo, que caso não seja especificado será gerado automaticamente e em qual região você deseja que o seu aplicativo fique rodando.

Agora a parte mais importante, enviar seu código para o servidor. Existe a opção tradicional via Git ou via Dropbox (em beta neste momento). Na opção via Dropbox, basta copiar seu código para o diretório criado, ir no Heroku e mandar ele buscar a nova versão. Como eu tenho experiência com o Git, já tinha meu código nele, achei muito mais simples adicionar um repositório remoto e fazer o push. Vendo as configurações do aplicativo, achei a URL em Settings (git@heroku.com:mxreverse.git), adicionei no repositório (git add remote heroku git@heroku.com:mxreverse.git) e enviei o código (git push heroku master).

Depois desses simples passos já tinha a minha aplicação rodando em https://mxreverse.herokuapp.com/. Obviamente por ser uma aplicação simples, sem banco de dados, não precisei fazer uma série de configurações, bem como o uso da ferramenta de linha de comando do Heroku.

Uma das vantagens do Heroku sobre outras soluções como OpenShift é a possibilidade de criar vários aplicativos de graça, uma ótima opção para quem esta desenvolvendo e quer deixar sua aplicação rodando ou um demo, depois se a quantidade de acessos crescer, você pode escalar sua aplicação lá mesmo ou mudá-la para outro lugar. Porém já ter sua aplicação disponível na internet logo no início pode motivá-lo a continuar o desenvolvimento ou trazer mais pessoas para o projeto, já que ela não terá o trabalho de fazer o deploy para ver seu projeto e a facilidade para apresentar a outras pessoas.

Anúncios

Comente

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s