Neste tutorial, você aprenderá, passo a passo, como colocar sua aplicação Django no ar em qualquer máquina Linux, como uma VPS da KingHost, Hostinger, entre outras.
Preparando o projeto
Vamos configurar o código do seu projeto para deixá-lo pronto para o deploy. Primeiro, vamos configurar as variáveis de ambiente.
Crie um arquivo .env com todas as variáveis sensíveis como chaves privadas de API, tokens de autenticação etc.
debug=True
Instale o python-decouple.
pip install python-decouple
em settings.py carregue todas as variáveis do .env.
from decouple import configDEBUG = config('DEBUG', cast=bool, default=False)
Bibliotecas
Vamos criar o arquivo requirements.txt com as bibliotecas usadas pelo seu projeto.
pip freeze > requirements.txt
Criando o repositório no GitHub
Inicialize o git
git init
Conecte-se ao seu repositório remoto
git remote add origin [url_do_repositorio]
Carregue o arquivo
git add .
Realize o commit
git push origin master
Configurações gerais no servidor
Conecte-se em sua VPS
ssh nome@dominio
Crie uma pasta para o seu projeto
mkdir nome_projeto
Entre na pasta
cd nome_projeto
Instale as dependências necessárias.
sudo apt install python3-pip python3 python3-dev python3-venv gcc default-libmysqlclient-dev libssl-dev nginx curl
Crie o ambiente virtual.
python3 -m venv venv
Ative o ambiente virtual.
source venv/bin/activate
Busque o código fonte do seu projeto no GitHub.
git pull origin master
Instale as bibliotecas
pip install -r requirements
Instale o Gunicorn
pip install gunicorn
Configurações do GUNICORN
No terminal, crie um arquivo para chamado 'gunicorn.socket'.
sudo nano /etc/systemd/system/gunicorn.socket
Dentro desse arquivo cole as configurações abaixo.
[Unit]
Description=gunicorn socket[Socket]
ListenStream=/run/gunicorn.sock[Install]
WantedBy=sockets.target
Agora, vamos criar o 'gunicorn.service'.
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target[Service]
User=root
Group=www-data
WorkingDirectory=/root/[pasta_projeto]
ExecStart=/root/[pasta_projeto]/venv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
[pasta_projeto].wsgi:application[Install]
WantedBy=multi-user.target
Antes de colar lembre-se de alterar tudo que esteja entre [] para os seus dados.
Inicialize o dois serviços.
sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket
Configurando o NGINX
No terminal, crie o arquivo de configuração do nginx.
sudo nano /etc/nginx/sites-enabled/sitedjango
Cole o arquivo abaixo.
server {
listen 80;
server_name localhost; location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/[pasta_projeto];
} location /media {
alias /root/[pasta_projeto]/media/;
} location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Antes de colar lembre-se de alterar tudo que esteja entre [] para os seus dados.
Remova o site padrão do NGINX
sudo rm /etc/nginx/sites-enabled/default
Inicie os serviços do NGINX
sudo systemctl restart nginx
sudo systemctl restart gunicorn
Banco de dados e arquivos estáticos
Rode as migrações.
python3 manage.py makemigrations
python3 manage.py migrate
Colete os arquivos estáticos.
python3 manage.py collectstatic
Ative permissões de leitura.
sudo chmod -R 777 pasta
Com isso, você terá seu projeto 100% funcional rodando em uma VPS linux.
Mas lembrando, essas são as configurações principais, ainda há várias configurações extras para melhorar a segurança e performance da sua aplicação como HTTPS e SSL, compressão GZIP, CDN, Load Balancer, Banco de dados PostgreSQL etc.
O fluxo de execução de uma requisição como fizemos o deploy fica da seguinte forma.
Perguntas frequentes
Quais são os pré-requisitos para deploy Django?
Você precisa de uma VPS funcional, Python instalado, ambiente virtual (venv) criado, dependências instaladas e o projeto ajustado para produção com DEBUG=False. Além disso, recomenda-se usar Gunicorn, Nginx, PostgreSQL e configurar variáveis de ambiente.
Vale a pena usar Gunicorn com Nginx?
Sim, e é o padrão por um motivo: Nginx recebe as conexões (inclusive HTTPS), lida com arquivos estáticos e repassa apenas as dinâmicas para o Gunicorn, que executa o Python. Isso traz mais segurança, escalabilidade e performance, como visto na experiência dos projetos Pythonando.
Quanto custa manter um app Django em VPS?
O custo varia conforme o tamanho do projeto, banda de tráfego e recursos da VPS. Pequenos projetos podem gastar cerca de R$ 30 a R$ 100/mês em nuvens populares. Em ambientes maiores, pode chegar a algumas centenas de reais. O ideal é avaliar a previsão de acessos e o orçamento disponível – sempre vale investir em backup, SSL e serviço gerenciado de banco de dados se possível.