Django Wars [Parte 33]: Colocando nosso APP no Heroku

O Django Wars foi idealizado e desenvolvido no Django 1.4. Algumas funcionalidades aqui descritas podem não funcionar ou funcionar de forma diferente em outras versões do Django

O Heroku é um serviço bem legal para colocar seu APP no ar.
Conheci através da galera tensa do PUG-PE.
O objetivo do Heroku é oferecer uma plataforma simples, barata e escalável para você colocar seu APP no ar.
Ele é ideal para startapps e programadores que não querem se preocupar com administração de servidores, apenas executar um simples comando e colocar tudo no ar.
Vale ressaltar que ele é free se você utilizar um único núcleo, que ele chama de dyno.
Se você precisar escalar sua aplicação, adicionando mais dynos, você começa a pagar.

Vamos fazer o passo-a-passo do Heroku para por tudo no ar.
Nesse passo-a-passo você cria uma conta para você e instala o Heroku Toolbelt, com as ferramentas Heroku que você vai precisar para colocar sua aplicação no ar (Heroku Client, Foreman e GIT).
Se você já possui algumas dessas aplicações instaladas, com o GIT, você pode instalá-las separadamente.

E ai, é só seguir o passo-a-passo para colocar Django no ar com Heroku!
Se você está usando Linux e/ou coisas legais como VirtualEnv acredito que você pode parar de ler por aqui.
Agora, se você é feito eu e está desenvolvendo em um ambiente Windows e/ou não tem nada de legal na sua máquina além do Python, vamos as dicas (o meu passo-a-passo escrotizado!).

OBSERVAÇÃO: Algumas das minhas dicas não são obrigatórias e/ou podem ser realizadas de outra forma.
Mas vou mostrar as coisas que acho mais fáceis de fazer de não esquecer 😀
Mesmo assim, é bom ler o passo-a-passo do Heroku para por tudo no ar.

0º – Criar uma conta no Heroku.
(Essa não precisava nem falar, né?)

1º – Versionar seu projeto utilizando o GIT.

git init

Nesse tutorial não vou ensinar GIT.
É por que eu sei pouca coisa mesmo.
Como é melhor vocês aprenderem com quem sabe, recomendo ler tutoriais sobre GIT.

2º – A segunda coisa a se fazer é uma cópia do arquivo settings.py e renomear essa cópia para settings_dev.py (pode ser outro nome).
Assim, você vai ter dois arquivos de configurações independentes. O settings.py será utilizado no servidor do Heroku, enquanto o settings_dev.py será utilizado no seu servidor local para testar o desenvolvimento.
Para rodar o settings de desenvolvimento, o comando é esse:

python manage.py runserver --settings djangowars.settings_dev

3º – Inserir a seguinte linha no final do settings.py, que é o arquivo de produção:

import dj_database_url
DATABASES['default'] =  dj_database_url.config()

Essas mal traçadas linhas servem para fazer com que sua aplicação utilize o serviço de banco de dados PostgreSQL oferecido pelo Heroku.

4º – Como não estamos utilizando o virtualenv, vamos ter que fazer uma pequena gambiarra.
Precisamos que o Heroku saiba o que o nosso app precisa para funcionar nos servidores dele.
Para isso, precisamos criar um arquivo chamado requirements.txt com a versão do Django que você está utilizando, além das bibliotecas que seu projeto precisa para funcionar.

Django==1.4.1
psycopg2==2.4.5
dj-database-url==0.2.0
pil==1.1.7

5º – Atualizar seu versionamento GIT.

git add .
git commit -m "mensagem de versionamento"

6º – Fazer login no Heroku.

heroku login

7º – Criar a aplicação no Heroku.

heroku create

8º – Ser feliz um pouquinho, que não faz mal para ninguém 😀

9º – Manda para o Heroku via Git

git push heroku master

Não é macumba!
Quando você executou heroku create dentro do diretório do seu projeto, que era versionado via GIT, a aplicação do Heroku colocou no seu versionamento um endereço para você colocar a sua aplicação no ar.
Ou mais ou menos isso, o que importa é que está lá!

10º – Para saber se seu projeto está funcionando:

heroku ps

11º – Se apareceu algum erro:

heroku logs

12º – Sincronizando o banco de dados

heroku run python manage.py syncdb

13º – Se está tudo bem, você pode visitar seu projeto.
Se você não sabe qual é a url, lá na página do Heroku, nas configurações da sua conta, existe uma listagem dos seus projetos.
Lá você sabe qual a url de cada um.
Ou você executa

heroku open

14º – Acho que errei a contagem em algum lugar…

15º – Ser feliz com o seu deploy.

Agora, seu projeto está no ar hospedado no Heroku onde todos os seus amiguinhos podem acessar.
Legal, né?

7 thoughts on “Django Wars [Parte 33]: Colocando nosso APP no Heroku

  1. Olá! Muito bom o tutorial 🙂

    Como procedo quando já tenho um projeto (com dados adicionados no banco) em que o banco é MYSQL?

    Para eu pegar os dados e migrar… usar mysql em desenvolvimento e postgresql em produção

    Valeu!
    Max

  2. Muito bom o tutorial. Parabéns!
    Quanto ao settings_dev.py eu faço o seguinte: no final do settings.py eu inlcuo o
    try:
    from settings_dev import *
    print u’Usando settings de desenv.’
    except:
    pass
    no meu gitignore eu peço para ele não carregar este arquivo no meu repositório, sendo assim ele não vai para produção.

  3. Muito massa seu tutorial… mas eu cai nessa parte de mandar para o Heroku, tava seguindo o guia do DjangoGirls, no seu caso você não usou o VirtualEnv, eu estou usando o que muda para subir no Heroku..? e eu to usando o sqlLite muda em alguma coisa, aquele passo que vc seta o banco para postgres?
    Obrigado, abração.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *