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

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!

Inscreva-se em nossa newsletter

Seja notificado sempre que um novo artigo for publicado

Artigos semanais
Todas as semanas novos artigos sobre Python, desenvolvimento web, Agentes de IA etc.
Sem SPAM
Não enviaremos SPAM em sua caixa de e-mail.