GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer Django Framework 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 pouvant 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 vous expliquer comment configurer Django dans un environnement virtuel Python à l'aide de la base de données PostgreSQL sur Debian 11. Nous allons ensuite installer et configurer Nginx en tant que proxy inverse pour Django.

Prérequis

  • Un serveur exécutant Debian 11.
  • Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
  • Un mot de passe root est configuré sur le serveur.

Mise en route

Avant de commencer, il est conseillé de mettre à jour vos packages système vers la dernière version. Vous pouvez le faire en utilisant la commande suivante :

apt-get update -y

Une fois tous les packages mis à jour, installez les autres outils Python et le package Nginx avec la commande suivante :

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

Une fois tous les packages requis installés, vous pouvez passer à l'étape suivante.

Installer le serveur de base de données PostgreSQL

Ici, nous utiliserons PostgreSQL comme backend de base de données. Alors installons-le à l'aide de la commande suivante :

apt-get install postgresql postgresql-contrib -y

Une fois PostgreSQL installé, connectez-vous au shell 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 certains 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 le shell PostgreSQL à l'aide de la commande suivante :

\q
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 package PIP vers la dernière version à l'aide de la commande suivante :

pip3 install --upgrade pip

Ensuite, vérifiez la version du PIP à l'aide de la commande suivante :

pip --version

Exemple de sortie :

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

Ensuite, installez le package d'environnement virtuel à l'aide de 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 à l'aide de la commande ci-dessous :

source djangoenv/bin/activate

Ensuite, installez Django, Gunicorn et d'autres packages à l'aide de 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 django-admin.py script 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 fichier settings.py et définir les paramètres de votre base de données :

nano ~/djangoapp/djangoapp/settings.py

Remplacez la ligne suivante par votre nom de domaine :

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

Décommentez le backend de la base de données par défaut et ajoutez les paramètres de la 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 initial de la base de données vers la base de données PostgreSQL :

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

Exemple de sortie :

  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

Créez ensuite un compte superutilisateur pour Django avec la commande suivante :

./manage.py createsuperuser

Définissez votre nom d'utilisateur et votre mot de passe d'administrateur 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 à l'aide de la commande suivante :

./manage.py runserver 0.0.0.0:8000

Si tout va bien, vous devriez obtenir le résultat suivant :

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 de Django :

Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur 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 le Gunicorn peut servir le Django ou non. Vous pouvez démarrer le 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 le résultat suivant :

[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 depuis 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 le Gunicorn démarre et arrête 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=gunicorn socket

[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=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

Enregistrez et fermez le fichier, puis définissez les autorisations appropriées sur 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 au redémarrage du système :

systemctl start gunicorn.socket
systemctl enable gunicorn.socket

Ensuite, vérifiez l'état du Gunicorn à l'aide de la commande ci-dessous :

systemctl status gunicorn.socket

Vous devriez obtenir le résultat suivant :

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

Configurer Nginx en tant que proxy inverse pour Django

Ensuite, vous devrez configurer Nginx en tant que proxy inverse pour servir Django.

Pour cela, 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 le Nginx pour toute erreur de configuration :

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

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

systemctl restart nginx

Pour vérifier l'état du Nginx, exécutez :

systemctl status nginx

Exemple de sortie :

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

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

Toutes nos félicitations! vous avez installé avec succès une application Django avec Gunicorn et Nginx comme proxy inverse. Vous pouvez maintenant commencer à déployer votre application Python à l'aide du framework Django.


Debian
  1. Comment installer Django Web Application Framework sur Debian 10

  2. Comment installer osquery sur Debian 10

  3. Comment installer Ionic Framework sur Debian 10

  4. Comment installer PHP 8 sur Debian 11

  5. Comment installer WildFly sur Debian 11

Comment installer Django sur Debian 10

Comment installer Ionic Framework sur Debian 10

Comment installer Django sur Debian 11

Comment installer le framework Play sur Debian 11

Comment installer LEMP dans Debian 7

Comment installer le framework PHP CodeIgniter sur Debian 10