Django Installation · 8 min read · Dec 22, 2025
Comment installer le framework Django sur Debian 11

Django est un framework de développement web gratuit et open-source écrit en Python. Il est utilisé pour développer des applications Python complexes et basées sur des bases de données. Il est livré avec un ensemble de scripts Python pour créer des projets Python. Il peut être exécuté sur n’importe quel système d’exploitation capable d’exécuter Python, y compris Windows, macOS, Linux/Unix et Solaris. Il aide les développeurs à écrire moins de code et à créer un nouveau site web en peu de temps.
Dans ce tutoriel, je vais expliquer comment configurer Django dans un environnement virtuel Python en utilisant la base de données PostgreSQL sur Debian 11. Nous allons ensuite installer et configurer Nginx comme proxy inverse pour Django.
Prérequis
- Un serveur exécutant Debian 11.
- Un nom de domaine valide pointant vers l’IP de votre serveur.
- Un mot de passe root configuré sur le serveur.
Commencer
Avant de commencer, il est conseillé de mettre à jour vos paquets système vers la dernière version. Vous pouvez le faire en utilisant la commande suivante :
apt-get update -yUne fois tous les paquets mis à jour, installez d’autres outils Python et le paquet Nginx avec la commande suivante :
apt-get install python3-pip python3-dev libpq-dev curl nginx -yUne fois tous les paquets requis installés, vous pouvez passer à l’étape suivante.
Installer le serveur de base de données PostgreSQL
Ici, nous allons utiliser PostgreSQL comme backend de base de données. Alors installons-le en utilisant la commande suivante :
apt-get install postgresql postgresql-contrib -yUne fois PostgreSQL installé, connectez-vous à l’interface shell de PostgreSQL avec la commande suivante :
su - postgres
psqlEnsuite, créez une base de données et un utilisateur pour Django avec la commande suivante :
CREATE DATABASE django;
CREATE USER django WITH PASSWORD 'password';Ensuite, accordez quelques rôles requis avec la commande suivante :
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;Ensuite, quittez l’interface shell de PostgreSQL en utilisant la commande suivante :
oq
exitÀ ce stade, la base de données PostgreSQL est prête pour Django. Vous pouvez maintenant passer à l’étape suivante.
Créer un environnement virtuel Python
Ensuite, vous devrez créer un environnement virtuel Python pour créer un projet Django.
Tout d’abord, mettez à niveau le paquet PIP vers la dernière version en utilisant la commande suivante :
pip3 install --upgrade pipEnsuite, vérifiez la version de PIP en utilisant la commande suivante :
pip --versionSortie d’exemple :
pip 21.2.4 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)Ensuite, installez le paquet d’environnement virtuel en utilisant la commande suivante :
pip3 install virtualenvEnsuite, créez un répertoire pour le projet Django et créez un environnement virtuel Django :
mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenvEnsuite, activez l’environnement virtuel Django en utilisant la commande ci-dessous :
source djangoenv/bin/activateEnsuite, installez Django, Gunicorn et d’autres paquets en utilisant la commande suivante :
pip install django gunicorn psycopg2-binaryÀ ce stade, Django est installé dans l’environnement virtuel Python. Vous pouvez maintenant passer à l’étape suivante.
Installer et configurer Django
Django fournit un script django-admin.py pour créer un projet. Vous pouvez exécuter la commande suivante pour créer un projet Django :
django-admin.py startproject djangoapp ~/djangoappEnsuite, vous devrez modifier le settings.py et définir vos paramètres de base de données :
nano ~/djangoapp/djangoapp/settings.pyChangez la ligne suivante avec votre nom de domaine :
ALLOWED_HOSTS = ['django.example.com', 'localhost']Décommentez le backend de base de données par défaut et ajoutez les paramètres de base de données 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': '',
}
}Ajoutez les lignes suivantes à la fin du fichier :
STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')Enregistrez et fermez le fichier, puis migrez le schéma de base de données initial vers la base de données PostgreSQL :
./manage.py makemigrations
./manage.py migrateSortie d’exemple :
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... OKEnsuite, créez un compte superutilisateur pour Django avec la commande suivante :
./manage.py createsuperuserDéfinissez votre nom d’utilisateur et votre mot de passe administratifs comme indiqué ci-dessous :
Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.Ensuite, rassemblez tout le contenu statique dans le répertoire :
./manage.py collectstaticExécuter le serveur de développement Django
À ce stade, Django est installé et configuré. Vous pouvez maintenant démarrer le serveur de développement Django en utilisant la commande suivante :
./manage.py runserver 0.0.0.0:8000Si tout va bien, vous devriez obtenir la sortie suivante :
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.Maintenant, ouvrez votre navigateur web et accédez à votre projet Django en utilisant l’URL http://django.example.com:8000/admin/. Vous serez redirigé vers la page de connexion Django :

Fournissez votre nom d’utilisateur administrateur, votre mot de passe et cliquez sur Connexion. Vous devriez voir le tableau de bord Django sur la page suivante :

Maintenant, retournez à votre terminal et appuyez sur CTRL + C pour arrêter le serveur de développement Django.
Vérifier Django avec Gunicorn
Ensuite, vous devrez également tester si Gunicorn peut servir Django ou non. Vous pouvez démarrer Django en utilisant le serveur Gunicorn avec la commande suivante :
gunicorn --bind 0.0.0.0:8000 djangoapp.wsgiSi tout va bien, vous devriez obtenir la sortie suivante :
[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: 47384Appuyez sur CTRL + C pour arrêter le serveur Gunicorn.
Ensuite, désactivez-vous de l’environnement virtuel Python avec la commande suivante :
deactivateCréer un fichier de service Systemd pour Gunicorn
Ensuite, vous devrez créer un fichier de service systemd pour que Gunicorn puisse démarrer et arrêter le serveur d’application Django.
Vous pouvez créer un Gunicorn avec la commande suivante :
nano /etc/systemd/system/gunicorn.socketAjoutez les lignes suivantes :
[Unit]
Description=socket gunicorn
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.targetEnregistrez et fermez le fichier, puis créez un fichier de service pour Gunicorn :
nano /etc/systemd/system/gunicorn.serviceAjoutez les lignes suivantes qui correspondent au chemin de votre projet Django :
[Unit]
Description=daemon gunicorn
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.targetEnregistrez et fermez le fichier, puis définissez les permissions appropriées pour le répertoire du projet Django :
chown -R www-data:root ~/djangoappEnsuite, rechargez le démon systemd avec la commande suivante :
systemctl daemon-reloadEnsuite, démarrez le service Gunicorn et activez-le pour qu’il démarre au redémarrage du système :
systemctl start gunicorn.socket
systemctl enable gunicorn.socketEnsuite, vérifiez l’état de Gunicorn en utilisant la commande ci-dessous :
systemctl status gunicorn.socketVous devriez obtenir la sortie suivante :
? gunicorn.socket - socket gunicorn
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.Configurer Nginx comme proxy inverse pour Django
Ensuite, vous devrez configurer Nginx comme proxy inverse pour servir Django.
Pour ce faire, créez un fichier de configuration Nginx :
nano /etc/nginx/conf.d/django.confAjoutez les lignes suivantes :
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;
}
}Enregistrez et fermez le fichier, puis vérifiez Nginx pour toute erreur de configuration :
ginx -tSortie :ginx: le fichier de configuration /etc/nginx/nginx.conf a une syntaxe correcte
ginx: le fichier de configuration /etc/nginx/nginx.conf a réussi le testEnfin, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginxPour vérifier l’état de Nginx, exécutez :
systemctl status nginxSortie d’exemple :
? nginx.service - Un serveur web haute performance et un serveur proxy inverse
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: processus maître /usr/sbin/nginx -g daemon on; master_process on;
??47497 nginx: processus de travail
Aug 27 10:06:59 debian11 systemd[1]: Démarrage d'un serveur web haute performance et d'un serveur proxy inverse...
Aug 27 10:06:59 debian11 systemd[1]: nginx.service: Échec de l'analyse du PID à partir du fichier /run/nginx.pid: Argument invalide
Aug 27 10:06:59 debian11 systemd[1]: Démarré un serveur web haute performance et un serveur proxy inverse.Maintenant, vous pouvez accéder à l’application Django en utilisant l’URL http://django.example.com/admin. Vous pouvez également accéder à l’application Django en utilisant l’URL http://django.example.com/.

Conclusion
Félicitations ! vous avez réussi à installer une application Django avec Gunicorn et Nginx comme proxy inverse. Vous pouvez maintenant commencer à déployer votre application Python en utilisant le framework Django.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.