Deploy Django em VPS com Nginx e Gunicorn: Guia Completo passo a passo

7 minutos de leitura 25 de Julho de 2025

Melissa Lima

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.

card-image
Formação

Combo: Python Full + Python Full AI

Garanta agora nossas duas formações completas em Desenvolvimento Web com Python e Django + a nova Formação em Inteligência Artificial com Python!