Skip to content
icaro gavazza edited this page Jun 26, 2017 · 6 revisions

Ledszeppellin

Integração continua e qualidade ao extremo

O que é Heroku?

Do que você precisa?

  • Você precisa de uma conta no Github, Travis e Heroku.
  • Instalar o Heroku em sua maquina.
  • Criar um aplicação o Heroku.
  • Comunicar Travis com Heroku.
  • Ensinar o Heroku a executar seu app.
  • Requisitos do django para rodar no Heroku.
  • ser feliz!

Criando sua conta no Heroku

Basta entrar no Link e Criar sua conta.

Instalando (Linux)

Rode o comando:

wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh

FINISH HIM! Bem, agora vamos logar na conta:

$ heroku login

Pode fechar o terminal.

Este login com Heroku é necessário para mais tarde quando dermos o comando de comunicarmos ele com o Travis

Instalando (Windows)

Sácomé né? Basta escolher entre 64-bit ou o menos usual 32-bit

Criando um aplicação no heroku

Logando no Heroku procure o botão NEW. De um nome a seu aplicativo, mesmo não sendo obrigatório, este nome influencia no link de acesso, então pode ser interessante nomeá-lo. Na próxima pagina vá na seção Deployment method clique no Github e depois em Search ele irá listar seus repositórios no Github, escolha o que deseja marcando Connect. Ao fazer isso aparecerão algumas opções importantes, em Automatic deploys podemos escolher qual branch que receberá o deploy, sendo a master o padrão, e lembre-se de apertar o botão Enable Automatic Deploys. Isto basta, agora vamos para a próxima parte.

Comunicando Travis com Heroku

Neste momento você precisa de ter o Travis e Heroku instalado em sua maquina e ter um arquivo .travis.yml já minimamente configurado em seu projeto. Então abra o terminal entre na pasta de seu aplicativo (onde está a o .travis.yml) e digite:

$ travis setup heroku

Importante, confirme as três coisas que ele perguntar:

  • O nome do seu aplicativo no Heroku, atenção ele irá sugerir o nome do Github, porém se os nomes se divergirem irá dar erro, confira cuidadosamente, no caso de ser diferente basta escrever o nome do aplicativo no heroku.
  • Deploy only from nome_do_repositório basta dar enter.
  • Encrypt API key? Enter novamente.

O Travis e o Heroku irão configurar o .travis.yml com suas credenciais para o deploy automático. Quando der um novo push pro github o Travis irá confirmar tudo e se tudo certo seu código estará no heroku!!

Ensinar o Heroku a executar seu app

Com tantos arquivos, qual comando irá levantar sua aplicação? então precisamos dizer ao Heroku o nome do arquivo e o comando dado para levantá-lo, crie na raiz do seu projeto um arquivo chamado Procfile e inclua nele o script.

exemplo de um app em djago:

release: python nome_do_projeto/manage.py migrate
web: gunicorn nome_do_projeto.wsgi --log-file -

Requisitos do django para rodar no Heroku.

O Heroku e o Django funcionam muito bem juntos, porém precisamos instalar alguns recursos e adiciona-los no requirements.txt para que funcionem 100%. (Heroku e Django).

$ pip install gunicorn

$ pip install dj-database-url

$ pip install whitenoise

$ pip install psycopg2

$ pip freeze > requirements.txt

gunicorn

Esta aplicação ajuda o Heroku a executar o Django.

dj-database-url

Uma opção de banco de dados para o heroku. caso o use será necessário alterar o aquivo com a nova configuração de banco de dados.

settings.py

import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

psycopg2

é um Drive de postgresql que o Heroku usa. Altere o arquivo settings adicionando em " INSTALLED_APPS " o app "psycopg2".

settings.py

INSTALLED_APPS = [
    '........',
    'gunicorn',
    'psycopg2',
]

whitenoise

Da suporte aos arquivos estáticos para o Django. (CSS, JavaScript, Imagens). altere os arquivos a seguir alterando ou adicionando as linhas conforme o necessário.

settings.py

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

wsgi.py

from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise

application = get_wsgi_application()
application = DjangoWhiteNoise(application)

pip freeze > requirements.txt

Problemas comuns

O Travis pode dar um erro nos arquivos estáticos, basta rodar o comando:

heroku config:set DISABLE_COLLECTSTATIC=1 --app nome_do_seu_app

De rebuild no Travis, ele irá funcionar, então use o comando para reativar os arquivos estáticos.

heroku config:set DISABLE_COLLECTSTATIC=0 --app nome_do_seu_app

Clone this wiki locally