Django Installation · 8 min read · Dec 22, 2025

Como Instalar o Framework Django no Debian 11

Django é um framework de desenvolvimento web gratuito e de código aberto escrito em Python. É usado para desenvolver aplicações Python complexas e baseadas em banco de dados. Ele vem com um conjunto de scripts Python para criar projetos Python. Pode ser executado em qualquer sistema operacional que consiga rodar Python, incluindo Windows, macOS, Linux/Unix e Solaris. Ajuda os desenvolvedores a escrever menos código e criar um novo site em um curto espaço de tempo.

Neste tutorial, explicarei como configurar o Django em um ambiente virtual Python usando o banco de dados PostgreSQL no Debian 11. Em seguida, instalaremos e configuraremos o Nginx como um proxy reverso para o Django.

Pré-requisitos

  • Um servidor rodando Debian 11.
  • Um nome de domínio válido apontado para o IP do seu servidor.
  • Uma senha de root configurada no servidor.

Começando

Antes de começar, é uma boa ideia atualizar os pacotes do seu sistema para a versão mais recente. Você pode fazer isso usando o seguinte comando:

apt-get update -y

Uma vez que todos os pacotes estejam atualizados, instale outras ferramentas Python e o pacote Nginx com o seguinte comando:

apt-get install python3-pip python3-dev libpq-dev curl nginx -y

Uma vez que todos os pacotes necessários estejam instalados, você pode prosseguir para a próxima etapa.

Instalar o Servidor de Banco de Dados PostgreSQL

Aqui, usaremos o PostgreSQL como um backend de banco de dados. Então vamos instalá-lo usando o seguinte comando:

apt-get install postgresql postgresql-contrib -y

Uma vez que o PostgreSQL esteja instalado, conecte-se ao shell do PostgreSQL com o seguinte comando:

su - postgres  
psql

Em seguida, crie um banco de dados e um usuário para o Django com o seguinte comando:

CREATE DATABASE django;  
CREATE USER django WITH PASSWORD 'password';

Em seguida, conceda alguns papéis necessários com o seguinte comando:

ALTER ROLE django SET client_encoding TO 'utf8';  
ALTER ROLE django SET default_transaction_isolation TO 'read committed';  
ALTER ROLE django SET timezone TO 'UTC';  
GRANT ALL PRIVILEGES ON DATABASE django TO django;

Em seguida, saia do shell do PostgreSQL usando o seguinte comando:

\q  
exit

Neste ponto, o banco de dados PostgreSQL está pronto para o Django. Você pode agora prosseguir para a próxima etapa.

Criar um Ambiente Virtual Python

Em seguida, você precisará criar um ambiente virtual Python para criar um projeto Django.

Primeiro, atualize o pacote PIP para a versão mais recente usando o seguinte comando:

pip3 install --upgrade pip

Em seguida, verifique a versão do PIP usando o seguinte comando:

pip --version

Saída de exemplo:

pip 21.2.4 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)

Em seguida, instale o pacote de ambiente virtual usando o seguinte comando:

pip3 install virtualenv

Em seguida, crie um diretório para o projeto Django e crie um ambiente virtual Django:

mkdir ~/djangoapp  
cd ~/djangoapp  
virtualenv djangoenv

Em seguida, ative o ambiente virtual Django usando o comando abaixo:

source djangoenv/bin/activate

Em seguida, instale o Django, Gunicorn e outros pacotes usando o seguinte comando:

pip install django gunicorn psycopg2-binary

Neste ponto, o Django está instalado no ambiente virtual Python. Agora, você pode prosseguir para a próxima etapa.

Instalar e Configurar o Django

O Django fornece um script django-admin.py para criar um projeto. Você pode executar o seguinte comando para criar um projeto Django:

django-admin.py startproject djangoapp ~/djangoapp

Em seguida, você precisará editar o settings.py e definir suas configurações de banco de dados:

nano ~/djangoapp/djangoapp/settings.py

Altere a seguinte linha com seu nome de domínio:

ALLOWED_HOSTS = ['django.example.com', 'localhost']

Descomente o backend de banco de dados padrão e adicione as configurações do banco de dados PostgreSQL:

#DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': BASE_DIR / 'db.sqlite3',
#    }
#}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django',
        'USER': 'django',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',

    }
}

Adicione as seguintes linhas no final do arquivo:

STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Salve e feche o arquivo e, em seguida, migre o esquema inicial do banco de dados para o banco de dados PostgreSQL:

./manage.py makemigrations  
./manage.py migrate

Saída de exemplo:

  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

Em seguida, crie uma conta de superusuário para o Django com o seguinte comando:

./manage.py createsuperuser

Defina seu nome de usuário e senha de administrador conforme mostrado abaixo:

Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Em seguida, reúna todo o conteúdo estático no diretório:

./manage.py collectstatic

Executar o Servidor de Desenvolvimento Django

Neste ponto, o Django está instalado e configurado. Você pode agora iniciar o servidor de desenvolvimento Django usando o seguinte comando:

./manage.py runserver 0.0.0.0:8000

Se tudo estiver bem, você deve obter a seguinte saída:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
August 27, 2021 - 10:02:05
Django version 3.2.6, using settings 'djangoapp.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

Agora, abra seu navegador e acesse seu projeto Django usando a URL http://django.example.com:8000/admin/. Você será redirecionado para a página de login do Django:

Login do Django

Forneça seu nome de usuário de administrador, senha e clique em Login. Você deve ver o painel do Django na página seguinte:

Painel de administração do Django

Agora, volte ao seu terminal e pressione CTRL + C para parar o servidor de desenvolvimento Django.

Verificar Django com Gunicorn

Em seguida, você também precisará testar se o Gunicorn pode servir o Django ou não. Você pode iniciar o Django usando o servidor Gunicorn com o seguinte comando:

gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi

Se tudo estiver bem, você deve obter a seguinte saída:

[2021-08-27 10:04:22 +0000] [47383] [INFO] Starting gunicorn 20.1.0
[2021-08-27 10:04:22 +0000] [47383] [INFO] Listening at: http://0.0.0.0:8000 (47383)
[2021-08-27 10:04:22 +0000] [47383] [INFO] Using worker: sync
[2021-08-27 10:04:22 +0000] [47384] [INFO] Booting worker with pid: 47384

Pressione CTRL + C para parar o servidor Gunicorn.

Em seguida, desative o ambiente virtual Python com o seguinte comando:

deactivate

Criar um Arquivo de Serviço Systemd para Gunicorn

Em seguida, você precisará criar um arquivo de serviço systemd para o Gunicorn iniciar e parar o servidor da aplicação Django.

Você pode criar um Gunicorn com o seguinte comando:

nano /etc/systemd/system/gunicorn.socket

Adicione as seguintes linhas:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Salve e feche o arquivo e, em seguida, crie um arquivo de serviço para o Gunicorn:

nano /etc/systemd/system/gunicorn.service

Adicione as seguintes linhas que correspondem ao caminho do seu projeto Django:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/djangoapp
ExecStart=/root/djangoapp/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock          djangoapp.wsgi:application

[Install]
WantedBy=multi-user.target

Salve e feche o arquivo e, em seguida, defina as permissões adequadas para o diretório do projeto Django:

chown -R www-data:root ~/djangoapp

Em seguida, recarregue o daemon systemd com o seguinte comando:

systemctl daemon-reload

Em seguida, inicie o serviço Gunicorn e habilite-o para iniciar na reinicialização do sistema:

systemctl start gunicorn.socket  
systemctl enable gunicorn.socket

Em seguida, verifique o status do Gunicorn usando o comando abaixo:

systemctl status gunicorn.socket

Você deve obter a seguinte saída:

? gunicorn.socket - gunicorn socket
     Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled)
     Active: active (listening) since Fri 2021-08-27 10:05:46 UTC; 6s ago
   Triggers: ? gunicorn.service
     Listen: /run/gunicorn.sock (Stream)
     CGroup: /system.slice/gunicorn.socket

Aug 27 10:05:46 debian11 systemd[1]: Listening on gunicorn socket.

Configurar o Nginx como um Proxy Reverso para o Django

Em seguida, você precisará configurar o Nginx como um proxy reverso para servir o Django.

Para fazer isso, crie um arquivo de configuração do Nginx:

nano /etc/nginx/conf.d/django.conf

Adicione as seguintes linhas:

server {
     listen 80;
     server_name django.example.com;
    location = /favicon.ico { access_log off; log_not_found off; }


    location /static/ {
         root /root/djangoapp;
     }

    location / {
         include proxy_params;
         proxy_pass http://unix:/run/gunicorn.sock;
     }
}

Salve e feche o arquivo e, em seguida, verifique o Nginx para qualquer erro de configuração:

nginx -t
Saída:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Finalmente, reinicie o serviço Nginx para aplicar as alterações:

systemctl restart nginx

Para verificar o status do Nginx, execute:

systemctl status nginx

Saída de exemplo:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-08-27 10:06:59 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 47494 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 47495 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 47496 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 49ms
     CGroup: /system.slice/nginx.service
             ??47496 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??47497 nginx: worker process

Aug 27 10:06:59 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 27 10:06:59 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Aug 27 10:06:59 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Agora, você pode acessar a aplicação Django usando a URL http://django.example.com/admin. Você também pode acessar a aplicação Django usando a URL http://django.example.com/.

Aplicativo Django

Conclusão

Parabéns! você instalou com sucesso uma aplicação Django com Gunicorn e Nginx como um proxy reverso. Agora você pode começar a implantar sua aplicação Python usando o framework Django.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.