-
Notifications
You must be signed in to change notification settings - Fork 4
3.2 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!
Basta entrar no Link e Criar sua conta.
Rode o comando:
wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | shFINISH 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
Sácomé né? Basta escolher entre 64-bit ou o menos usual 32-bit
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.
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 herokuImportante, 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óriobasta 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!!
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 -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.txtgunicorn
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
O Travis pode dar um erro nos arquivos estáticos, basta rodar o comando:
heroku config:set DISABLE_COLLECTSTATIC=1 --app nome_do_seu_appDe 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