Skip to content

Instantly share code, notes, and snippets.

@jrmmendes
Last active May 16, 2019 16:30
Show Gist options
  • Save jrmmendes/f34be08adcb3b055b0f0e1202ec06ea9 to your computer and use it in GitHub Desktop.
Save jrmmendes/f34be08adcb3b055b0f0e1202ec06ea9 to your computer and use it in GitHub Desktop.
Deploy com heroku de um app django

Tutorial de deploy com django e heroku

Inicialmente, crie um ambiente virtual para a sua aplicação usando o Pipenv

$ pipenv --python 3

Instale os pacotes django, django-heroku e gunicorn:

$ pipenv install django django-heroku gunicorn

Se tu tiver sido configurado corretamente, dentro do diretório existirá um arquivo Pipfile com o seguinte conteúdo:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
gunicorn = "*"
django-heroku = "*"
django = "*"

[requires]
python_version = "3.6"

Gere o boilerplate do projeto usando o django-admin

$ pipenv run django-admin startproject nome_do_projeto

Abra o arquivo settings.py dentro da pasta com o mesmo nome do seu projeto e adicione o seguinte ao final:

# Django-heroku configuration
import django_heroku
django_heroku.settings(locals())

Protip: Se preferir pode importar o pacote django_heroku no início do arquivo

Crie o arquivo Procfile (sem extensão) com o seguinte conteúdo:

web: gunicorn nome_do_projeto.wsgi

O próximo passo é colocar a aplicação no Github e dar deploy na heroku, associando o repositório ao app lá criado (embora exista uma maneira de fazer o mesmo com o Heroku CLI, não vamos abordar isso nesse tutorial). Após o processo de build, a aplicação deve rodar normalmente :)

É necessário existirem as pastas static e media no repositório para que o deploy seja bem sucedido, bem como suas configurações no settings.py:

# Staticfiles 
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

# Media files
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

Importante: numa aplicação real, são necessários alguns outros passos, como configurar o HTTPS e proteger a chave secreta do django (que pode ser vista no arquivo de configurações) em uma variável de ambiente. Nesse caso, se for criada uma variável com nome SECRET_KEY, ela será automaticamente utilizada :)

Links úteis

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment