Fazer deploy de um app Django


Você pode encontrar o guia passo a passo para fazer deploy aqui.

Build da aplicação
Copiar link

A Hostman utiliza o seguinte ambiente ao fazer o build de um app Django:

  • Python: 3.10, 3.11, 3.12, 3.13 ou 3.14
  • pip
  • gunicorn
  • Bibliotecas do sistema para trabalhar com PostgreSQL e MySQL

A Hostman executa os seguintes comandos durante o build:

apt-get install -y python3 python3-pip gunicorn python3-psycopg2 libpq-dev python-dev default-mysql-client python3-dev default-libmysqlclient-dev python3-mysqldb --fix-missing
pip3 install psycopg2 
ln /usr/bin/python3 /usr/bin/python -sf
ln /usr/bin/pip3 /usr/bin/pip -sf

Para instalar dependências, adicione a seguinte linha ao comando de build:

pip3 install --upgrade -r requirements.txt

Variáveis de ambiente
Copiar link

Você também pode definir variáveis de ambiente.

Por exemplo, para especificar os hosts dos quais o Django pode receber requisições, defina a variável DJANGO_ALLOWED_HOSTS com um valor contendo endereços IP ou nomes de host.

Você pode informar vários hosts, separados por vírgulas, sem espaços. Por padrão, essa variável é definida como:

127.0.0.1,localhost

Para mais detalhes sobre configuração, consulte a documentação oficial do Django.

Rodando a aplicação
Copiar link

O comando de start padrão é:

python3 manage.py runserver 0.0.0.0:8000

Requisitos
Copiar link

  • Certifique-se de que o arquivo manage.py está localizado na raiz do projeto e é usado como ponto de entrada da aplicação.
  • Certifique-se de definir DEBUG=True nas configurações; caso contrário, os arquivos estáticos não serão servidos.
  • Certifique-se de que a aplicação está escutando em 0.0.0.0 e não em 127.0.0.1; caso contrário, conexões externas não funcionarão.

Troubleshooting
Copiar link

Deploy falhou
Copiar link

Se houver problemas no deploy, primeiro confira o log de deploy. Ele ajuda a identificar em qual etapa ocorreu o erro.

Na maioria dos casos, os problemas estão relacionados ao comando de start.

  • Certifique-se de que tudo funciona localmente com gunicorn.
  • Verifique se todos os módulos necessários estão listados no requirements.txt.

DisallowedHost at /Invalid HTTP_HOST
Copiar link

Esse problema ocorre quando o hostname não está especificado no arquivo settings.py.

Essa configuração é uma medida de segurança para evitar ataques via header HTTP Host.

Para corrigir o problema, faça alterações no arquivo settings.py, especificando seu domínio na diretiva ALLOWED_HOSTS, por exemplo:

ALLOWED_HOSTS = ["your.domain.com"]

Você também pode permitir todos os domínios, caso não queira usar essa medida de segurança:

ALLOWED_HOSTS = ["*"]