Este tutorial mostra, passo a passo, como criar sua primeira aplicação Django numa hospedagem com cPanel — da instalação do Python à configuração dos arquivos estáticos, com o projeto no ar ao final.
Conteúdo
Criando sua primeira aplicação Django
Este tutorial usa o Python 3.13 e o Django 5.2 LTS como referência. Novas versões são habilitadas periodicamente no painel, e você pode escolher versões anteriores durante a criação da aplicação — o Django 4.2 LTS, por exemplo, ainda recebe suporte de segurança.
Primeiramente, acesse seu painel de controle cPanel e procure a opção “Setup Python App” na guia Software.
Em seguida, você encontrará a seguinte tela com a opção “CRIAR APLICAÇÃO”:
Em “Python version”, escolha a versão do Python que deseja. Os prints deste tutorial foram feitos com a 3.10, mas o processo é idêntico nas versões atuais.
No campo “Raiz do aplicativo”, deverá inserir o nome do seu aplicativo. Nesse exemplo iremos utilizar o nome “meuapp”.
Os campos “Arquivo de inicialização do aplicativo” e “Application Entry point” devem permanecer vazias, pois serão preenchidas automaticamente pelo cPanel.
Na opção “Passenger log file” poderá definir o caminho do arquivo que receberá os logs de sua aplicação. Em nosso exemplo, iremos escolher o diretório “logs”.
Por fim, basta clicar em CRIAR e sua aplicação será criada.
Como podemos ver os campos “Arquivo de inicialização do aplicativo” e “Application Entry point” foram preenchidos de forma automática pelo cPanel.
Instalar o Django na aplicação Python
O próximo passo é instalar o Django nesta aplicação Python. Caso você seja um usuário avançado e queira usar um cliente de SSH de sua preferência, basta acessar o servidor por SSH e utilizar o comando que está em “Enter to the virtual environment.To enter to virtual environment, run the command:” no SSH para entrar no virtualenv e poder instalar tanto o Django quanto os módulos que desejar.
É possível também manipular sua conta via SSH pelo próprio painel de controle, utilizando a ferramenta Terminal e será dessa forma que iremos mostrar nesse exemplo. O primeiro passo é copiar o comando para entrar no virtualenv:
Agora que o comando foi copiado, vamos abrir o terminal :
Ao abrir o terminal, será exibido a tela lhe permitindo inserir comandos e basta colar o comando que foi copiado da tela de projetos conforme o print abaixo:
Quando teclar enter no final da linha desse comando, já estará no virtualenv e irá reparar que o nome do projeto e a versão do python estarão logo no inicio da linha:
No print acima, temos também um exemplo de uso do comando “pwd” que exibe na tela o diretório que está visualizando no momento. Pode perceber que já está no diretório do seu projeto. O comando “ls” exibido acima mostra o conteúdo gerado automaticamente pelo cPanel.
O próximo passo é a instalação do django usando o comando “pip install django”:
Criar um projeto
Agora que temos uma aplicação Python instalada com o Django, precisamos criar um projeto. Para isso, vamos usar o comando “django-admin startproject meuapp .” Segue print de exemplo:
Observação importante: No final do comando “django-admin startproject meuapp .” há um ponto no final, que significa que o projeto será instalado no diretório atual. Sem o ponto, será criado um subdiretório extra que pode gerar confusão.
Vamos ver agora os novos arquivos e diretórios criados pelo comando:
Podemos ver todos os arquivos e diretórios criados pelo django-admin. O próximo passo agora é atualizar o arquivo de inicialização da aplicação para o wsgi.py do django. Para isso, devemos voltar na tela de projetos do cpanel e editar o nosso projeto:
Devemos agora ajustar o arquivo de inicialização, inserindo o caminho do wsgi.py do projeto django:
A partir desse momento o site django já deverá estar online. Para um teste, basta acessar o site em outra aba do navegador:
Quando acessar o site, irá ver a tela do print acima. Essa tela informa que não há um host configurado com permissão para esse aplicativo. Para corrigir essa configuração, deverá acessar o gerenciador de arquivos do cPanel e editar o arquivo settings.py do seu projeto:
Ao clicar no botão “Edit” será exibido o conteúdo do arquivo settings.py e deverá localizar a linha do ALLOWED_HOSTS e irá reparar que ela está sem conteúdo:
Basta inserir o nome de seu site nessa parte com e sem www seguindo o modelo abaixo:
ALLOWED_HOSTS = ['siteexemplo.h-br.com','www.siteexemplo.h-br.com']
No mesmo arquivo settings.py, localize a linha DEBUG = True e troque por False. Com o DEBUG ligado, qualquer erro no site exibe ao visitante o caminho completo dos seus arquivos, as variáveis de ambiente, a configuração do banco de dados e parte da SECRET_KEY.
É a falha de segurança mais comum em projetos Django publicados. Durante o desenvolvimento o DEBUG ajuda; em produção, não.
Ao final da edição deverá clicar no botão “Salvar alterações” no canto superior direito.
Volte no cpanel na tela de seu aplicativo e de restart na aplicação para que as atualizações sejam aplicadas.
Agora basta testar o acesso em seu site. Estando tudo correto, ele deverá exibir a tela de demonstração do django como o print abaixo:
Agora devemos configurar o caminho dos arquivos estáticos de seu projeto. Para isso, volte no gerenciador de arquivos. O diretório publico de sua conta é o public_html. Nesse exemplo, iremos criar um diretório dentro dele de nome “static” conforme os print’s abaixo:
Agora devemos configurar o caminho no arquivo de configuração, para isso, edite novamente o arquivo settings.py:
Deverá ir até o final do arquivos e inserir a seguinte linha:
STATIC_ROOT = '/home/siteexem/public_html/static'
Observação importante: Nesse exemplo estamos usando o caminho de nossa conta de teste. Em seu caso precisará definir o caminho correto de sua conta no servidor.
Depois que inserir a linha, clique em salvar alterações. A próxima etapa é rodar o comando para coletar a nova configuração de caminho dos arquivos estáticos. Esse procedimento deve ser feito via terminal:
Agora o próximo passo é testar. Volte no gerenciador de arquivos, entre no diretório public_html/static e crie um arquivo teste conforme o print abaixo:
Depois que criar o arquivo dentro da pasta static, vamos edita-lo e inserir um conteúdo:
Depois que inserir o texto, clique no botão “salvar alterações” e faça um teste de acesso via navegador. Em nosso exemplo o link ficou da seguinte forma:
E Voila! Seu projeto já está pronto para receber seu conteúdo!
Perguntas frequentes
Preciso de VPS para hospedar Django?
Não necessariamente. Uma hospedagem compartilhada com cPanel e Setup Python App — como a usada neste tutorial — roda Django perfeitamente para sites institucionais, blogs, painéis internos e aplicações de tráfego moderado. O VPS passa a fazer sentido quando você precisa de acesso root, de bibliotecas que exigem compilação, de Celery com workers em background, ou quando o tráfego começa a esbarrar nos limites do plano.
Qual versão do Python e do Django devo escolher?
Use a versão mais recente do Python disponível no painel e uma versão LTS do Django. As LTS recebem correções de segurança por três anos, o que evita ter que migrar o projeto no meio do caminho. Versões intermediárias trazem recursos novos mas têm ciclo de suporte curto.
Por que meu site Django mostra “DisallowedHost”?
Porque o domínio que você acessou não está na lista ALLOWED_HOSTS do settings.py. É uma proteção do próprio Django contra ataques de cabeçalho Host. Acrescente seu domínio com e sem www, salve, e reinicie a aplicação no painel — o reinício é a parte que muita gente esquece.
Preciso reiniciar a aplicação depois de cada alteração?
Sim, para mudanças em arquivos Python — settings.py, views.py, models.py. O Passenger mantém o processo em memória, então a alteração só passa a valer depois do restart, feito pelo botão na tela da aplicação no cPanel. Alterações em templates HTML e arquivos estáticos não precisam.
Meus arquivos CSS e JavaScript não carregam. O que fazer?
Provavelmente falta rodar o collectstatic. O Django não serve arquivos estáticos em produção — ele espera que estejam reunidos numa pasta pública, definida no STATIC_ROOT. Depois de configurar o caminho, rode python manage.py collectstatic pelo terminal e reinicie a aplicação.
O que é o ponto no final do comando django-admin startproject meuapp .?
Ele indica que o projeto deve ser criado no diretório atual. Sem o ponto, o Django cria uma pasta extra com o mesmo nome, resultando em meuapp/meuapp/ — o que funciona, mas confunde os caminhos e é a causa mais comum de erro no Application startup file.
Preciso mudar o DEBUG para False?
Sim, antes de o site ficar público. Com DEBUG = True, qualquer erro exibe ao visitante o caminho completo dos seus arquivos, as variáveis de ambiente, a configuração do banco e parte da SECRET_KEY. É a falha de segurança mais comum em projetos Django publicados.
Posso usar banco de dados MySQL em vez do SQLite?
Sim, e para produção é o recomendado. O SQLite vem configurado por padrão e funciona para testes, mas grava num arquivo único e não lida bem com escritas simultâneas. Crie um banco MySQL no cPanel, instale o mysqlclient no virtualenv, e aponte o DATABASES do settings.py para ele.
Como instalo bibliotecas adicionais no projeto?
Pelo terminal, dentro do virtualenv. Entre no ambiente com o comando que o painel fornece e use pip install nome-da-biblioteca. Instalar fora do virtualenv não funciona — a aplicação não vê o pacote. Vale também manter um requirements.txt no projeto, com pip freeze > requirements.txt.
Onde vejo os erros da minha aplicação?
No arquivo de log do Passenger, cujo caminho você definiu ao criar a aplicação — no exemplo deste tutorial, o diretório logs. É o primeiro lugar a olhar quando o site retorna erro 500 e nenhuma mensagem aparece na tela, o que é justamente o comportamento esperado com DEBUG = False.
Posso rodar mais de uma aplicação Python na mesma conta?
Sim. Cada aplicação criada no Setup Python App tem seu próprio virtualenv e sua própria versão do Python, e pode responder num domínio ou subdomínio diferente. O limite prático é o de recursos do plano, não do painel.
O Setup Python App que você viu neste tutorial vem em todos os planos da Homehost — com virtualenv por aplicação, várias versões de Python disponíveis, terminal SSH pelo painel e MySQL incluído. Servidor no Brasil, SSL grátis e suporte em português para quando o log do Passenger não ajudar.
Ver planos de hospedagem DjangoConclusão
Publicar um projeto Django numa hospedagem com cPanel é menos trabalhoso do que a documentação oficial sugere — o Setup Python App resolve o virtualenv, o Passenger cuida do WSGI, e o que resta são três ajustes no settings.py.
São esses três que fazem toda a diferença. O ALLOWED_HOSTS, sem o qual o Django recusa qualquer requisição. O STATIC_ROOT com o collectstatic, sem os quais o site carrega sem estilo nenhum. E o DEBUG = False, sem o qual seu servidor expõe os próprios caminhos e configurações a qualquer visitante que provoque um erro.
Dois hábitos que poupam tempo depois: reinicie a aplicação sempre que alterar um arquivo Python, porque o Passenger mantém o processo em memória e não recarrega sozinho. E olhe o log do Passenger antes de qualquer outra coisa quando aparecer um erro 500 — com o DEBUG desligado, a tela não vai te dizer nada, e o log vai.
A partir daí o projeto é seu. O ambiente está pronto, e o que vem depois é código.