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 -y

Une 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 -y

Une 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 -y

Une fois PostgreSQL installé, connectez-vous à l’interface shell de PostgreSQL avec la commande suivante :

su - postgres  
psql

Ensuite, 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 pip

Ensuite, vérifiez la version de PIP en utilisant la commande suivante :

pip --version

Sortie 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 virtualenv

Ensuite, créez un répertoire pour le projet Django et créez un environnement virtuel Django :

mkdir ~/djangoapp  
cd ~/djangoapp  
virtualenv djangoenv

Ensuite, activez l’environnement virtuel Django en utilisant la commande ci-dessous :

source djangoenv/bin/activate

Ensuite, 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 ~/djangoapp

Ensuite, vous devrez modifier le settings.py et définir vos paramètres de base de données :

nano ~/djangoapp/djangoapp/settings.py

Changez 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 migrate

Sortie 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... OK

Ensuite, créez un compte superutilisateur pour Django avec la commande suivante :

./manage.py createsuperuser

Dé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 collectstatic

Exé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:8000

Si 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 :

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 :

Tableau de bord admin Django

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.wsgi

Si 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: 47384

Appuyez sur CTRL + C pour arrêter le serveur Gunicorn.

Ensuite, désactivez-vous de l’environnement virtuel Python avec la commande suivante :

deactivate

Cré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.socket

Ajoutez les lignes suivantes :

[Unit]
Description=socket gunicorn

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Enregistrez et fermez le fichier, puis créez un fichier de service pour Gunicorn :

nano /etc/systemd/system/gunicorn.service

Ajoutez 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.target

Enregistrez et fermez le fichier, puis définissez les permissions appropriées pour le répertoire du projet Django :

chown -R www-data:root ~/djangoapp

Ensuite, rechargez le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, 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.socket

Ensuite, vérifiez l’état de Gunicorn en utilisant la commande ci-dessous :

systemctl status gunicorn.socket

Vous 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.conf

Ajoutez 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 -t
Sortie :
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 test

Enfin, redémarrez le service Nginx pour appliquer les modifications :

systemctl restart nginx

Pour vérifier l’état de Nginx, exécutez :

systemctl status nginx

Sortie 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/.

Application Django

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.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.