Como instalar e configurar o Django em uma hospedagem compartilhada Python - Linux

Django é uma estrutura baseada em Python que permite que você crie sites de forma rápida e fácil. Este tutorial irá demonstrar como instalar e configurar o Django em uma hospedagem compartilhada Linux.

Depois de concluir o tutorial a seguir, você terá um site Django funcionando em sua conta, no qual:

  • Carrega uma página inicial estática para o domínio.
  • Carrega a interface de administração do Django.
  • Utiliza um banco de dados SQLite.

Atenção: Você pode utilizar esse tutorial como um ponto de partida para seus próprios projetos Django, mas a UniversoNet não pode ajudá-lo a solucionar problemas ou depurar quaisquer configurações personalizadas.


1º Etapa - Criar um aplicativo Python dentro do painel de controle da sua hospedagem.

1. Faça o login no painel de controle da sua hospedagem de site - Linux.
Caso você não saiba como acessar confira este tutorial. Como acessar o painel de controle

2. Dentro do seu painel clique em Recursos Extra depois em Configurar Phyton em seguida CRIAR APLICAÇÃO.




3. Preencha os campos, veja o exemplo abaixo:


Python version, selecione 3.8.6
No momento que criamos esse tutorial essa era a ultima versão do Python em nosso sistema, sempre utilize a ultima versão para novos projetos.

Raiz do aplicativo
Será o nome do diretório da sua aplicação, não utilize caracteres especial ou acentuação. Carregue seus arquivos nessa pasta.

URL do aplicativo , selecione o domínio.
Deixe em branco para utilizar a URL raiz. Exemplo: dominio.com.br/

Arquivo de Inicialização do Aplicativo e Application Entry Point
Deixe em branco para o sistema criar um arquivo padrão. Quando essas caixas de texto estiver em branco, o Painel cria automaticamente um  arquivo de inicialização passageiro_wsgi.py e um objeto de aplicativo padrão para você.

Passenger log file
você pode opcionalmente especificar um arquivo de log para o aplicativo.

4. No canto superior direito da página, clique em CRIAR:


O painel cria o aplicativo e configura o ambiente Python.
Ambiente configurado com sucesso.

Observe que em destaque vermelho se encontra o Path físico do diretório onde foi configurado para rodar sua aplicação.



Após o painel criar sua aplicação você deverá ter um ambiente funcional para rodar Phyton, faça um teste acessando a URL da aplicação e veja se tem uma pagina de exemplo igual a imagem abaixo:

Obs. Caso ainda esteja carregando sua index anterior ou uma pagina em construção você deverá renomear pois ela tem prioridade ao carregar a pagina inicial. Após renomear aperte algumas vezes F5 para atualizar a pagina.


Pronto ! Até essa etapa você já tem um ambiente Python configurado.


2º Etapa - Instalar e Configurar o projeto Django

Depois de criar o aplicativo Python no painel de controle, você estará pronto para realizar as seguintes tarefas na linha de comando:

  • Instalar o Django.
  • Criar e configurar o projeto Django.
  • Configure o Passenger para trabalhar com o projeto Django

Para fazer isso, siga estas etapas:

1. Faça login em sua conta usando SSH

Importante: Nos planos de hospedagem compartilhada Linux o acesso via SSH é permitido somente através de chave, esse procedimento e para garantir uma maior segurança para nossos servidores e sua hospedagem.

Neste tutorial abaixo temos um passo a passo de como gerar a chave de acesso e instalar no Putty
Acessar SSH com chaves pública e privada usando o programa PuTTY

2.   Ative o ambiente virtual, usando o comando disponível na 1º etapa, passo 4 logo acima.
Esse comando fica dentro das configurações do ambiente Python.


Veja o exemplo abaixo:
Obs. Troque username por seu usuário, e myapp pela pasta que você definiu no seu ambiente Python.
source /home/username/virtualenv/myapp/3.8/bin/activate && cd /home/username/myapp

O prompt de comando agora começa com (myapp:3.8) para indicar que você está trabalhando no ambiente virtual myapp com Python 3.8. Todos os comandos a seguir neste artigo presumem que você está trabalhando no ambiente virtual Python. Se você efetuar logout de sua sessão SSH (ou desativar o ambiente virtual usando o comando deactivate), certifique-se de reativar o ambiente virtual antes de seguir qualquer uma das etapas abaixo.



3. Para instalar a última versão do Django, inicie este comando por meio do shell remoto SSH:

pip install django

Para verificar a versão do Django que está instalada, digite o seguinte comando:

django-admin --version

4. Para criar um projeto Django, digite o seguinte comando:

django-admin startproject myapp ~/myapp

5. Para criar diretórios para os arquivos de projeto estáticos, digite os seguintes comandos:

mkdir -p ~/myapp/templates/static_pages
mkdir ~/myapp/static_files
mkdir ~/myapp/static_media

6. Use um editor de texto para abrir o arquivo ~/myapp/myapp/settings.py e faça as seguintes alterações:

Dependendo da versão do django precisamos acrescentar a biblioteca import os no arquivo ~/myapp/myapp/settings.py
import os
from pathlib import Path

Localize a linha ALLOWED_HOSTS e modifique-a da seguinte maneira. Substituir [example.com] para seu próprio nome de domínio:
ALLOWED_HOSTS = ['example.com']

Localize o bloco TEMPLATES e modifique-o da seguinte maneira:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Localize a linha STATIC_URL e adicione as seguintes linhas abaixo dela:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "static_media")

7. Use um editor de texto para abrir o arquivo ~/myapp/myapp/urls.py

Exclua todo o texto existente e copie o seguinte texto para o arquivo:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import url
from django.views.generic.base import TemplateView

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^$', TemplateView.as_view(template_name='static_pages/index.html'), name='home'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

8. Use um editor de texto para abrir o arquivo ~/myapp/passenger_wsgi.py

Exclua todo o texto existente e copie o seguinte texto para o arquivo:
import os
import sys

import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application

# Set up paths and environment variables
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'

# Set script name for the PATH_INFO fix below
# SCRIPT_NAME = ''
SCRIPT_NAME = os.getcwd()

class PassengerPathInfoFix(object):
    """
        Sets PATH_INFO from REQUEST_URI because Passenger doesn't provide it.
    """
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        from urllib.parse import unquote
        environ['SCRIPT_NAME'] = SCRIPT_NAME
        request_uri = unquote(environ['REQUEST_URI'])
        script_name = unquote(environ.get('SCRIPT_NAME', ''))
        offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
        environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
        return self.app(environ, start_response)

# Set the application
application = get_wsgi_application()
application = PassengerPathInfoFix(application)

9. Use um editor de texto para criar um arquivo index.html básico no diretório ~/myapp/templates/static_pages
O arquivo pode ser tão simples quanto um arquivo de texto que diz "Hello world".

10. Precisamos criar migrações django, digite o seguinte comando:

python ~/myapp/manage.py migrate

11. Criar banco de dados padrão (SQLite) e superusuário:

python ~/myapp/manage.py createsuperuser
  • Nome do usuário prompt, digite o nome de usuário do administrador e pressione Enter.
  • Endereço de e-mail prompt, digite o endereço de e-mail do administrador e pressione Enter.
  • Senha prompt, digite a senha do administrador e pressione Enter.

12. Digite o seguinte comando para coletar os arquivos estáticos:

python ~/myapp/manage.py collectstatic

No painel de controle, reinicie o aplicativo Python:

  • No painel da sua hospedagem acesse Recursos Extra depois clique em Configurar Python .
  • Sob APLICATIVOS WEB, localize o  aplicativo myapp e, em seguida, clique no ícone Reiniciar.

Teste o site Django:

  • Use seu navegador para ir para http://www.example.com, Onde example.com representa o seu nome de domínio.
  • O arquivo index.html deve carregar.
  • Use seu navegador para ir para http://www.example.com/admin , onde example.com representa o seu nome de domínio.
  • Você deve ver a página de login de administração do Django. Para fazer login, use as credenciais de superusuário que você criou anteriormente.


Pronto ! Temos uma aplicação em ambiente Python rodando.