Hoje, a principal forma de entrega e uso de uma aplicação é por meio da nuvem. É por lá que as aplicações são armazenadas e acessadas. Sendo assim, é imprescindível que uma aplicação seja armazenada em algum servidor e disponível pela internet.
Pensando nisso, veremos neste artigo como realizar o Deploy de uma aplicação Django e disponibilizá-la no Heroku, serviço de armazenamento em nuvem de aplicações.
Clonando o repositório da aplicação
Como exemplo, iremos utilizar a aplicação feita no curso “Django - Fundamentos” aqui da TreinaWeb. Apesar de ser uma aplicação simples, será um ótimo exemplo para testes.
Curso Django - Fundamentos
Conhecer o cursoPara realizar o clone do projeto, vamos até o CMD (se você usa o Windows) ou Terminal (caso você use o macOS ou Linux) e utilizamos o seguinte comando:
git clone https://github.com/treinaweb/treinaweb-django-fundamentos.git
Feito isso, o projeto será baixado em seu computador e você terá todo o seu código-fonte.
Criar conta no Heroku
Após baixar o código-fonte do projeto, precisamos criar uma conta (ou realizar o login) no Heroku. O processo é bem simples, basta preencher o formulário na página de cadastro do site (https://signup.heroku.com/):
Caso você já possua uma conta no Heroku, só será necessário realizar o login (https://id.heroku.com/login).
Depois disso, você será redirecionado para a página inicial do Heroku:
Criar app no Heroku
Depois de criar uma conta no Heroku, precisamos criar uma app para armazenar a aplicação Django. Para isso, na página inicial, clicamos no botão “Create New App”. Depois, na próxima página, definimos o nome da aplicação que estamos criando e clicamos no botão “Create App”:
Com isso, seremos redirecionados para a página de configuração da aplicação. É nela que configuramos o servidor em que a aplicação será armazenado.
Instalar o Heroku CLI
Para que seja possível enviar o código-fonte do projeto para o servidor que acabamos de criar, precisamos instalar o CLI (Command Line Interface) do Heroku. É com ele que conseguimos executar determinados comandos utilizando nosso computador para gerenciar o servidor da aplicação.
Para isso, há uma página que contém todas as informações necessárias para esse processo. Lembrando que o Heroku CLI é multi-plataforma, ou seja, poderá ser utilizado em qualquer SO (Windows, macOS ou Linux).
Todo o processo de instalação está descrito na documentação do Heroku (https://devcenter.heroku.com/articles/heroku-cli) e é bastante simples.
Se você utiliza o macOS, você precisa digitar o seguinte comando em seu terminal:
brew tap heroku/brew && brew install heroku
Caso você utilize o Linux, o comando é o seguinte:
sudo snap install --classic heroku
Agora, caso você utilize o Windows, você precisará baixar e executar o instalador do Heroku CLI, também disponível na página citada acima:
Lembrando que, para qualquer SO, é necessário possuir o Git instalado. Mas, já que você fez o clone do repositório do projeto, isso já deve estar funcionando :)
Logar no Heroku CLI
Depois de baixar e instalar o Heroku CLI, precisamos logar com nossa conta na ferramenta. Para isso, vamos até o CMD (ou Terminal) e digitamos o seguinte comando:
heroku login
Uma mensagem no terminal será exibida e podemos clicar em qualquer tecla do teclado. Neste momento, o navegador irá abrir uma página para realizarmos o login no Heroku. Após digitarmos nossos dados de acesso, clicamos no botão “Login” e o processo será encerrado com sucesso:
Configurar Projeto
Com todas as configurações do Heroku prontas, chegou a hora de configurarmos a aplicação que será armazenada no servidor. Para isso, o primeiro passo é instalar a biblioteca django-heroku, responsável por automatizar as configurações do nosso projeto com o Heroku.
Instalar o django-heroku
Para instalar o django-heroku, vamos até a janela de configuração da nossa virtualenv do PyCharm (Arquivo > Settings > Project Interpreter, caso você utilize o Windows ou Linux ou PyCharm Community Edition > Preferences > Project Interpreter, caso você utilize o macOS), clicamos no botão “+” no canto inferior esquerdo e buscamos a biblioteca pelo seu nome, como podemos ver abaixo:
Depois disso, a biblioteca será instalada em nossa virtualenv e estaremos prontos para configurá-la em nosso projeto. Sendo assim, vamos até o arquivo settings.py e ativamos o django-heroku adicionando o seguinte conteúdo no final do arquivo :
# Configure Django App for Heroku.
import django_heroku
django_heroku.settings(locals())
Feito isso, as configurações do Heroku em nossa aplicação estão prontas.
Criar Procfile
Depois de instalar o django-heroku, precisamos criar o arquivo Procfile na raiz do nosso projeto. É ele quem vai definir qual arquivo será usado para processar as requisições da nossa aplicação. No Django, esse arquivo é o wsgi.py
, localizado na pasta da nossa aplicação.
Sendo assim, criamos um arquivo de texto simples com o nome Procfile
e salvamos na raiz do nosso projeto. Dentro dele, colamos o seguinte conteúdo:
web: gunicorn tw_clientes.wsgi
Lembrando que o nome da sua aplicação pode variar, caso você não esteja utilizando o mesmo projeto citado anteriormente. Se este for o seu caso, altere o “tw_cliente.wsgi” para o nome da sua aplicação.
Depois disso, precisamos instalar a biblioteca gunicorn
, servidor HTTP para aplicações Python. O processo é o mesmo que o django-heroku, porém devemos pesquisar por gunicorn
na janela de instalação de bibliotecas:
Criar requirements.py
Depois disso, precisamos criar o arquivo requirements.py
para armazenar as bibliotecas utilizadas no projeto. Lembrando que você precisa estar com a virtualenv ativa no PyCharm.
Sendo assim, o comando para gerar o arquivo requirements.py
com base nas bibliotecas instaladas na virtualenv do projeto é o seguinte:
pip freeze > requirements.txt
Com isso, o arquivo requirements.txt
será criado na raiz do projeto com o seguinte conteúdo:
dj-database-url==0.5.0
Django==2.1.7
django-heroku==0.3.1
gunicorn==19.9.0
mysqlclient==1.4.2
psycopg2==2.7.7
pytz==2018.9
whitenoise==4.1.2
São essas as bibliotecas utilizadas em nosso projeto. Lembrando que o conteúdo deste arquivo pode variar caso você tenha mais bibliotecas em sua virtualenv.
Lembrando que a lista de bibliotecas utilizadas pode ser vista na janela de configurações do PyCharm (Arquivo > Settings > Project Interpreter, caso você utilize o Windows ou Linux ou PyCharm Community Edition > Preferences > Project Interpreter, caso você utilize o macOS):
Realizar o Deploy
Finalmente, após todas as configurações, estamos prontos para subir nosso projeto no Heroku o/.
Subindo aplicação
Para isso, vamos até o terminal e digitamos o seguinte comando:
heroku git:remote -a django-treinaweb
git add .
git commit -m "Deploy da aplicação"
git push -u heroku master
Depois disso, uma mensagem será exibida no terminal indicando que o deploy foi feito com sucesso:
Clicando no link indicado, somos redirecionados para a página da aplicação que acabou de ser armazenada. Neste momento, a página que será exibida terá o seguinte visual:
Como sabemos, essa é a página de erro do Django. Sendo assim, ao que tudo indica, o Deploy foi feito com sucesso. Sendo assim, se navegarmos até a página https://django-treinaweb.herokuapp.com/clientes/listar teremos o seguinte:
O erro acima indica que o Django não conseguiu encontrar as tabelas que estamos utilizando no banco de dados. E isso faz sentido, já que, até o momento, não migramos o conteúdo dos arquivos de migração para o Heroku. Sendo assim, este é o último passo a ser realizado.
Criando banco de dados
Para executar o comando responsável por criar o banco de dados no heroku, vamos até o terminal e digitamos o seguinte comando:
heroku run python manage.py migrate
O comando acima irá executar as migrações no banco de dados do Heroku e criar toda a sua estrutura:
Agora, ao retornar para a página anterior, podemos ver que a aplicação está sendo executada sem qualquer erro:
Inclusive, podemos utilizar qualquer recurso da nossa aplicação, como o cadastro de novos clientes:
Agora, toda a nossa aplicação já está disponível e funcional diretamente da nuvem através do Heroku :)