Recentemente fui apresentado ao Heroku e descobri que ele é ótimo em alguns aspectos. A primeira implantação a partir do Git é simples e fácil, desde que você tenha pontuado seus i’s e cruzado seus t’s. Além disso, você pode mostrar provas de conceito ou projetos de estágio em andamento de forma rápida e sem custos.
A desvantagem é que trabalho com PHP há muitos anos e eles não têm suporte para PHP. De qualquer forma, tenho aprendido RoR e Python, então Heroku se tornou uma ótima opção.
Minha primeira experiência foi com RoR em um projeto de prova de conceito e correu bem. O Heroku cria seu banco de dados usando o arquivo Rails YAML e até mesmo substitui as configurações pelo que achar necessário. Também há toneladas de documentação e postagens em toda a web para implantar RoR no Heroku
Em seguida, comecei a trabalhar em um projeto Python usando web.py. Eu estava fazendo um mashup de API simples e não tinha um banco de dados por trás do projeto. Para esta combinação, descobri que não há muita documentação, mas como o Heroku tem suporte para Python e outros frameworks têm alguma documentação, eu mudei de idéia e fiz com que funcionasse. Agora, existem algumas coisas que você deve saber para colocar o web.py em execução.
Você precisará ter um Virtualenv configurado. Para fazer isso em um terminal, simplesmente navegue até o diretório de aplicativos e execute o comando de instalação:
$: cd /path/to/my/app
$: virtualenv venv --distribute
Em seguida, se você tiver dependências, será necessário instalá-las no Virtualenv. Se você não tem nenhuma dependência, você ainda precisa configurar um arquivo requirements.txt para avisar o Heroku. Ative seu ambiente virtual e instale seus requisitos e, em seguida, use o seguinte comando para gerar seu arquivo requirements.txt:
$: pip freeze > requirements.txt
E a última parte necessária é a criação de um Procfile para informar ao Heroku como iniciar seu aplicativo. Achei mais fácil apenas criar manualmente um arquivo chamado Procfile em meu diretório raiz e adicionar o comando para iniciar meu aplicativo. O meu era assim:
web: python service.py
Ótimo, agora devemos estar prontos para ir. Mas espere, há mais um problema que encontrei. O Heroku atribui uma porta ao seu aplicativo cada vez que você envia um código do Git. Portanto, a porta padrão 8080 que o web.py usa não vai funcionar. O que o Heroku faz é definir uma porta como uma variável de ambiente. Aqui você tem 2 opções de vincular uma porta em seu método app.run () ou adicionar a porta ao Procfile. Aqui está meu Procfile atualizado:
web: python service.py $PATH
Eu escolhi adicionar a porta ao meu Procfile, mas qualquer uma das opções funcionará bem. Então, aqui está o método app.run ()
# Run the application on the Environment Port if one exists otherwise use port 8080
port = int(os.environ.get('PORT', 8080))
app.run(host='0.0.0.0', port=port)
Recursos
web.py – http://webpy.org/
Heroku – https://heroku.com/
Heroku Primeiros passos com Python – https://devcenter.heroku.com/articles/python
Virtualenv – http: //www.virtualenv .org /
Stackoverflow – http://stackoverflow.com/questions/10200732/django-deploy-using-heroku-errno-2-no-such-file-or-directory