Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Deploy

Bom dia, como fazer o deploy do projeto em Django?
Não foi ensinado na trilha toda.

1 resposta

Olá, Ckelyson. Como vai?

Essa é uma excelente dúvida! De fato, os cursos focados no desenvolvimento da aplicação (como a persistência de arquivos no Amazon S3 e criação do CRUD) costumam focar no ambiente local para consolidar a lógica do Django. No entanto, levar a aplicação para a produção (fazer o deploy) é o passo fundamental para disponibilizar o seu projeto para o mundo.

Para fazer o deploy de uma aplicação Django que utiliza o S3, o processo envolve preparar o projeto para produção e escolher um servidor de hospedagem.

Aqui está um passo a passo prático e as melhores abordagens de mercado para você realizar o seu deploy:


Passo 1: Preparando o Django para Produção

Antes de enviar o código para qualquer servidor, você precisa alterar algumas configurações de segurança no seu arquivo settings.py:

  • Desativar o Modo de Depuração: Nunca deixe o modo debug ativo em produção, pois ele expõe detalhes do seu código e do banco de dados caso ocorra um erro.
DEBUG = False
  • Configurar os Hosts Permitidos: Informe quais domínios ou IPs podem acessar a sua aplicação.
ALLOWED_HOSTS = ['seu-app.com', 'seu-subdominio.railway.app']
  • Variáveis de Ambiente: Garanta que sua SECRET_KEY, credenciais do banco de dados e chaves do Amazon S3 (AWS Access Key) não estejam expostas diretamente no código. Use a biblioteca python-dotenv ou decouple para ler essas informações das variáveis de ambiente do servidor.
  • Arquivo de Dependências: O servidor precisa saber quais bibliotecas instalar. Gere o arquivo executando no terminal do seu projeto:
pip freeze > requirements.txt

Passo 2: Onde fazer o deploy? (Plataformas recomendadas)

Como seu projeto Django já armazena os arquivos de mídia (imagens/vídeos) no Amazon S3, o servidor de hospedagem só precisará processar o código Python e os arquivos estáticos (CSS/JS). Duas das plataformas mais populares, modernas e fáceis de usar para desenvolvedores Python são:

Opção A: Railway (Altamente recomendada)

A Railway é uma das plataformas mais simples e modernas para deploy atual. Ela possui integração direta com o GitHub.

  • Você cria uma conta na Railway e conecta o seu repositório do GitHub.
  • Adiciona um arquivo chamado Procfile na raiz do seu projeto Django para dizer à plataforma como iniciar o servidor. O conteúdo do arquivo deve ser:
web: gunicorn nome_do_seu_projeto.wsgi:application
  • Nas configurações do projeto na Railway, você preenche as Variáveis de Ambiente (as mesmas chaves do S3 e do banco de dados que estavam no seu .env local).
  • O deploy é feito automaticamente a cada git push.

Opção B: Render

A Render funciona de forma muito parecida com a Railway e possui um plano gratuito excelente para testes.

  • Você conecta o repositório do GitHub, escolhe a opção Web Service e define o ambiente como Python.
  • No campo Start Command, você configura o servidor de produção gunicorn: gunicorn nome_do_seu_projeto.wsgi:application.
  • Insere as variáveis de ambiente na aba Environment e a plataforma cuida do build.

Passo 3: O Banco de Dados de Produção

No ambiente local, o Django utiliza o sqlite3 por padrão (o arquivo db.sqlite3). Em produção, o SQLite não deve ser utilizado, pois ele é resetado ou apagado toda vez que o servidor reinicia ou recebe uma atualização.

  • Boa prática: Tanto na Render quanto na Railway, você pode criar um banco de dados PostgreSQL com apenas um clique.
  • Depois de criar o banco na plataforma, ela te fornecerá uma URL de conexão (DATABASE_URL). Você deve instalar a biblioteca dj-database-url e configurá-la no seu settings.py para que o Django se conecte automaticamente a esse banco seguro em produção.

A Alura possui cursos e artigos focados exclusivamente em deploy em plataformas como a Render, a AWS e o ecossistema Docker, que valem muito a pena conferir para ver o processo na tela passo a passo!

Espero que possa ter lhe ajudado!