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 -yUma 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 -yUma 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 -yUma vez que o PostgreSQL esteja instalado, conecte-se ao shell do PostgreSQL com o seguinte comando:
su - postgres
psqlEm 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
exitNeste 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 pipEm seguida, verifique a versão do PIP usando o seguinte comando:
pip --versionSaí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 virtualenvEm seguida, crie um diretório para o projeto Django e crie um ambiente virtual Django:
mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenvEm seguida, ative o ambiente virtual Django usando o comando abaixo:
source djangoenv/bin/activateEm seguida, instale o Django, Gunicorn e outros pacotes usando o seguinte comando:
pip install django gunicorn psycopg2-binaryNeste 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 ~/djangoappEm seguida, você precisará editar o settings.py e definir suas configurações de banco de dados:
nano ~/djangoapp/djangoapp/settings.pyAltere 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 migrateSaí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... OKEm seguida, crie uma conta de superusuário para o Django com o seguinte comando:
./manage.py createsuperuserDefina 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 collectstaticExecutar 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:8000Se 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:

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:

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.wsgiSe 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: 47384Pressione CTRL + C para parar o servidor Gunicorn.
Em seguida, desative o ambiente virtual Python com o seguinte comando:
deactivateCriar 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.socketAdicione as seguintes linhas:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.targetSalve e feche o arquivo e, em seguida, crie um arquivo de serviço para o Gunicorn:
nano /etc/systemd/system/gunicorn.serviceAdicione 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.targetSalve e feche o arquivo e, em seguida, defina as permissões adequadas para o diretório do projeto Django:
chown -R www-data:root ~/djangoappEm seguida, recarregue o daemon systemd com o seguinte comando:
systemctl daemon-reloadEm seguida, inicie o serviço Gunicorn e habilite-o para iniciar na reinicialização do sistema:
systemctl start gunicorn.socket
systemctl enable gunicorn.socketEm seguida, verifique o status do Gunicorn usando o comando abaixo:
systemctl status gunicorn.socketVocê 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.confAdicione 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 -tSaída:nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulFinalmente, reinicie o serviço Nginx para aplicar as alterações:
systemctl restart nginxPara verificar o status do Nginx, execute:
systemctl status nginxSaí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/.

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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.