Django est un framework d'application web gratuit et open-source construit dans le langage de programmation Python . Django est ultra-rapide, sécurisé et hautement évolutif. Entre les mains d'un développeur qualifié, Django peut rapidement mettre en place un site web puissant. Il s'intègre parfaitement aux serveurs web populaires (Apache, Nginx), et aux bases de données (MySQL, MariaDB, PostgreSQL, Oracle, et SQLite), etc. Django propulse certains des plus grands sites web au monde comme Instagram, Mozilla et la NASA. Ce guide montre comment configurer la base d'une application web à l'aide de Django avec PostgreSQL, Nginx et Gunicorn sur Ubuntu 20.04.
Prérequis
Ce guide nécessite que vous utilisiez un serveur Ubuntu 20.04 configuré avec un pare-feu de base et un utilisateur non-root avec les privilèges sudo. Consultez ce guide détaillé sur la configuration d'un serveur Ubuntu. Suivez ce tutoriel pour configurer un utilisateur non-root avec les privilèges sudo. Vous pouvez également configurer un pare-feu Iptables en suivant les étapes de ce guide.
Nous installerons Django dans un environnement virtuel. Avoir un environnement spécifique au projet permet de gérer plus facilement plusieurs projets depuis le même serveur. Une fois les bases de données et les applications en place, nous déploierons le serveur d'application Gunicorn. Gunicorn sera l'interface d'application qui traduit les requêtes des clients de HTTP en appels Python que notre application peut utiliser. Ensuite, nous déploierons Nginx devant Gunicorn pour sa gestion rapide des connexions et ses fonctionnalités de sécurité faciles à mettre en œuvre.
Installation des paquets nécessaires
Tout d'abord, commencez par installer tous les paquets nécessaires. Heureusement, tous ces paquets sont directement disponibles dans les dépôts de paquets officiels d'Ubuntu. Ouvrez le terminal et mettez à jour le cache des paquets APT :
|
1 |
sudo apt update |
La liste des paquets dépend de si l'application web va utiliser Python 2 ou Python 3. Exécutez la commande suivante pour installer Django avec Python 3 :
|
1 |
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl |
Django 1.11 LTS est la dernière version de Django qui prendra en charge Python 2. Si vous avez l'intention d'utiliser Django avec Python 2, installez alors les paquets suivants :
|
1 |
sudo apt install python-pip python-dev libpq-dev postgresql postgresql-contrib nginx curl |
Base de données et utilisateur PostgreSQL
En ce qui concerne la solution de base de données, nous utiliserons PostgreSQL. C'est un système de gestion de base de données relationnelle-objet puissant et open-source. PostgreSQL offre fiabilité, robustesse et performance. Pour des étapes détaillées sur la configuration de PostgreSQL, consultez ce guide sur la configuration de PostgreSQL sur le serveur Ubuntu. Pour ce guide, nous allons configurer une base de données et un utilisateur dédiés pour notre application Django.
Par défaut, PostgreSQL implémente l'« authentification par pair » (peer authentication) comme schéma d'authentification pour les connexions locales. En résumé, l'« authentification par pair » authentifiera la connexion si le nom d'utilisateur du système d'exploitation de l'utilisateur correspond à un nom d'utilisateur PostgreSQL valide. Lors de l'installation, PostgreSQL a configuré un utilisateur du système d'exploitation postgres pour correspondre à l'utilisateur administratif PostgreSQL postgres. Connectez-vous à la session interactive du shell PostgreSQL en tant que postgres en utilisant la commande suivante :
|
1 |
sudo -u postgres psql |
Vous arriverez sur l'invite de commande PostgreSQL. La première étape consiste à créer une base de données dédiée pour le projet. Pour la démonstration, la base de données sera nommée viktor_project:
|
1 |
CREATE DATABASE viktor_project; |
L'étape suivante consiste à créer un utilisateur dédié pour la base de données du projet. L'utilisateur doit avoir un nom d'utilisateur fort. Pour la démonstration, le nom d'utilisateur sera viktor_project_user:
|
1 |
CREATE USER viktor_project_user WITH PASSWORD 'password123'; |
Maintenant, nous allons modifier certains paramètres :
- Certains paramètres de connexion. En bref, il ne sera pas nécessaire de demander et de définir les valeurs correctes à chaque fois qu'une connexion est établie. Cela améliore considérablement les performances de la base de données.
- Encodage par défaut sur
UTF-8. C'est un encodage universel et Django s'y attend. - Schéma d'isolation des transactions par défaut sur « read committed ». Cela bloque la lecture à partir de transactions non validées.
- Fuseau horaire sur
UTC.
Toutes ces modifications de paramètres sont recommandées par le projet Django lui-même. Pour implémenter ces changements, exécutez les commandes suivantes. N'oubliez pas de remplacer le nom d'utilisateur de la base de données par le bon :
|
1 2 3 |
ALTER ROLE viktor_project_user SET client_encoding TO 'utf8'; ALTER ROLE viktor_project_user SET default_transaction_isolation TO 'read committed'; ALTER ROLE viktor_project_user SET timezone TO 'UTC'; |
Changez l'administrateur de la base de données pour l'utilisateur de base de données dédié :
|
1 |
GRANT ALL PRIVILEGES ON DATABASE viktor_project TO viktor_project_user; |
Notre travail avec PostgreSQL est terminé pour le moment. Quittez le shell interactif de PostgreSQL :
|
1 |
\q |
Environnement virtuel Python
Une fois la base de données préparée, nous pouvons maintenant nous concentrer sur la mise en place des autres exigences du projet. Pour une gestion plus facile, nous allons créer un environnement virtuel et y installer toutes les dépendances Python. Pour générer un environnement virtuel, nous avons besoin de virtualenv. Il peut être facilement installé avec pip.
Les commandes suivantes mettront à jour pip et installeront virtualenv. Pour Python 3, exécutez les commandes suivantes :
|
1 2 |
sudo -H pip3 install --upgrade pip sudo -H pip3 install virtualenv |
Pour Python 2, exécutez plutôt les commandes suivantes :
|
1 2 |
sudo -H pip install --upgrade pip sudo -H pip install virtualenv |
Une fois que virtualenv est installé, il est temps de créer un environnement virtuel. Ensuite, créez un répertoire dédié pour l'environnement virtuel :
|
1 |
mkdir -v ~/viktor_project |
Après cela, changez le répertoire actif actuel pour le répertoire dédié à l'environnement virtuel :
|
1 |
cd ~/viktor_project |
Dans le répertoire, exécutez la commande suivante. L'outil virtualenv créera un environnement virtuel avec le nom du projet :
|
1 |
virtualenv viktor_project |
Cela créera un sous-répertoire avec le nom du projet. Le sous-répertoire contiendra une version locale de Python et de pip. Cela offre la flexibilité d'installer et de configurer un environnement Python isolé pour le projet.
La commande suivante activera l'environnement virtuel :
|
1 |
source viktor_project/bin/activate |
L'invite du terminal changera pour indiquer que vous opérez dans un environnement virtuel Python. Maintenant que nous sommes dans l'environnement virtuel, nous allons installer les dépendances Python nécessaires. Nous avons besoin de Django, Gunicorn et psycopg2 (adaptateur PostgreSQL). La commande suivante demandera au pip local d'installer les composants :
|
1 |
pip install django gunicorn psycopg2-binary |
Même si vous utilisez Python 3, pip est la commande correcte. C'est parce que dans l'environnement virtuel, pip3 est renommé en pip.
Nouveau projet Django
Une fois les composants Python en place, nous pouvons commencer à travailler avec les fichiers réels du projet Django.
-
Création d'un projet Django
Le répertoire du projet est déjà établi. Nous allons dire à Django d'y installer ses fichiers. Cette procédure générera un répertoire de second niveau contenant le code réel. Le répertoire contiendra également un script de gestion. L'essentiel est que nous indiquons explicitement à Django le répertoire cible au lieu de le laisser décider du répertoire par rapport au répertoire actuel :
|
1 |
django-admin.py startproject viktor_project ~/viktor_project |
Django créera le projet en conséquence. Voici quelques-uns des fichiers et répertoires importants sur lesquels nous allons nous concentrer. Les noms de répertoires et de fichiers sont utilisés conformément à la démonstration.
~/viktor_project/manage.py: Le script de gestion de projet par Django.~/viktor_project/viktor_project/: C'est le paquet contenant le projet Django. Il doit contenir les fichiers __init__.py, settings.py, urls.py, asgi.py et wsgi.py.
-
Ajustement des paramètres du projet
Une fois le projet créé, la première chose à faire est d'ajuster sa configuration. Ouvrez settings.py dans un éditeur de texte :
|
1 |
nano ~/viktor_project/viktor_project/settings.py |
La première directive que nous recherchons est ALLOWED_HOSTS. Elle définit les serveurs ou noms de domaine qui peuvent se connecter à l'instance Django. Si une requête entrante avec un en-tête Host ne correspond pas à la liste ALLOWED_HOSTS, cela générera une exception. Il est recommandé par Django d'éviter certains types de vulnérabilités de sécurité :
|
1 |
ALLOWED_HOSTS = ['<server_ip_or_domain_name_1>',' server_ip_or_domain_name_2','localhost'] |
La section suivante sur laquelle nous allons nous concentrer est DATABASE. Elle gère l'accès à la base de données. Par défaut, elle contient la configuration pour le moteur de base de données SQLite. Cependant, nous allons utiliser la base de données PostgreSQL pour le projet. Django utilisera l'adaptateur psycopg2 pour communiquer avec PostgreSQL :
|
1 2 3 4 5 6 7 8 9 10 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'viktor_project', 'USER': 'viktor_project_user', 'PASSWORD': 'password123', 'HOST': 'localhost', 'PORT': '', } } |
Maintenant, allez au bas du fichier. Ajoutez les lignes suivantes pour indiquer l'emplacement des fichiers statiques. Cela aide Nginx à gérer les requêtes pour ces éléments :
|
1 2 |
import os STATIC_ROOT = os.path.join(BASE_DIR, 'static/') |
Notre travail avec settings.py est terminé pour le moment. Enregistrez le fichier et fermez l'éditeur.
-
Finalisation de la configuration initiale du projet
Nous pouvons maintenant migrer le schéma de base de données initial vers la base de données PostgreSQL dédiée. Exécutez la commande suivante :
|
1 2 |
~/viktor_project/manage.py makemigrations ~/viktor_project/manage.py migrate |
Ensuite, nous devons créer un superutilisateur pour le projet. Pour générer un superutilisateur, exécutez la commande suivante :
|
1 |
~/viktor_project/manage.py createsuperuser |
Rassemblez tous les fichiers statiques dans l'emplacement que nous avons spécifié dans settings.py. Les fichiers statiques seront collectés dans un répertoire séparé appelé « static » sous le répertoire du projet :
|
1 |
~/viktor_project/manage.py collectstatic |
Maintenant, nous devons configurer le pare-feu du serveur. Si vous avez suivi le guide de configuration du serveur, vous avez déjà configuré et activé UFW. Nous allons créer une exception pour le port 8000. C'est le port par défaut utilisé par Django. Consultez ce guide pour en savoir plus sur les bases et l'utilisation du pare-feu UFW.
|
1 |
sudo ufw allow 8000 |
Ensuite, vérifiez l'action :
|
1 |
sudo ufw status |
Enfin, nous pouvons tester le serveur en action. Démarrez le serveur de développement Django :
|
1 |
~/viktor_project/manage.py runserver 0.0.0.0:8000 |
Si la configuration a réussi, le serveur de développement Django devrait démarrer et accepter les requêtes entrantes. Ouvrez un navigateur et accédez à l'IP/domaine de votre serveur sur le port 8000 :
|
1 |
http://<server_or_domain>:8000 |
Vous devriez arriver sur la page d'index par défaut de Django. Pour accéder au panneau d'administration, ajoutez /admin à l'URL. Le panneau d'administration n'est accessible que par le superutilisateur que nous avons créé auparavant :
|
1 |
http://<server_or_domain>:8000/admin |
Après vous être connecté, vous arriverez sur l'interface d'administration par défaut de Django :
Nous avons terminé les tests pour l'instant. Pour arrêter le serveur, appuyez sur « Ctrl + C » dans la fenêtre du terminal.
-
Tester Gunicorn
Avant de quitter l'environnement virtuel, nous voulons nous assurer que Gunicorn peut servir les applications. La façon de le tester est d'utiliser Gunicorn pour charger le module WSGI du projet.
La commande Gunicorn est située dans le répertoire du projet :
|
1 2 |
cd ~/viktor_project gunicorn --bind 0.0.0.0:8000 viktor_project.wsgi |
Cela démarrera Gunicorn sur la même interface que celle sur laquelle Django s'exécutait. Nous pouvons tester à nouveau l'application depuis un navigateur web normal. Notez que l'interface d'administration n'aura aucun style appliqué car Gunicorn ne sait toujours pas comment trouver le contenu CSS statique :
|
1 |
http://<server_or_domain>:8000 |
Une fois terminé, appuyez sur « Ctrl + C » dans la fenêtre du terminal pour arrêter le serveur Gunicorn.
-
Quitter l'environnement virtuel
La configuration de l'application Django est terminée. Exécutez la commande suivante pour quitter l'environnement virtuel :
|
1 |
deactivate |
Fichiers de socket et de service Gunicorn
Nous avons vérifié que Gunicorn peut interagir avec l'application Django. Cependant, nous avons besoin d'un moyen plus robuste pour gérer le serveur d'application. C'est là que systemd entre en jeu. Systemd est l'un des systèmes d'initialisation les plus populaires disponibles sur Linux. Voici un guide détaillé sur comment gérer les services et unités systemd.
Nous pouvons créer des fichiers de socket et de service pour Gunicorn afin de laisser systemd le gérer comme s'il s'agissait d'un service. Au démarrage, le socket Gunicorn sera généré. Le socket écoutera les connexions entrantes. Lorsqu'une connexion a lieu, systemd démarrera les processus Gunicorn pour gérer la connexion.
-
Socket Gunicorn
Commençons par créer un socket Gunicorn. Le fichier doit être créé avec les privilèges sudo :
|
1 |
sudo nano /etc/systemd/system/gunicorn.socket |
Saisissez le code suivant dans le fichier :
|
1 2 3 4 5 6 7 |
[Unit] Description=gunicorn socket [Socket] ListenStream=/run/gunicorn.sock [Install] WantedBy=sockets.target |
Comme vous pouvez le voir, le code comporte trois sections.
[Unit]:Cette section décrit le socket.[Socket]:Elle définit l'emplacement du socket.[Install]:Cette partie garantit que systemd crée le socket au bon moment.
Enregistrez le fichier et fermez l'éditeur.
-
Service Gunicorn
Ensuite, nous allons créer un fichier de service pour Gunicorn. Tout comme le fichier de socket, il doit également être créé avec les privilèges sudo :
|
1 |
sudo nano /etc/systemd/system/gunicorn.service |
Saisissez le code suivant :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[Unit] Description=gunicorn daemon Requires=gunicorn.socket After=network.target [Service] User=cloudsigma Group=www-data WorkingDirectory=/home/cloudsigma/viktor_project ExecStart=/home/cloudsigma/viktor_project/viktor_project/bin/gunicorn \ --access-logfile - \ --workers 3 \ --bind unix:/run/gunicorn.sock \ viktor_project.wsgi:application [Install] WantedBy=multi-user.target |
Le code contient plusieurs sections :
[Unit]:Cette section spécifie les métadonnées et les dépendances. Elle décrit également le démarrage uniquement après que la cible réseau est atteinte.[Service]:Cette section spécifie l'utilisateur et le groupe sous lesquels le processus s'exécutera. La propriété du groupe est définie sur « www-data » afin que Nginx puisse communiquer avec Gunicorn. Elle définit également les répertoires de travail et spécifie les commandes de démarrage.[Install]:Cette section indique à systemd à quoi lier ce service s'il est activé au démarrage. Il doit démarrer après le lancement du système multi-utilisateur standard.
Ensuite, enregistrez le fichier et fermez l'éditeur.
-
Activation du socket Gunicorn
Le socket Gunicorn est prêt à l'emploi. Par conséquent, vous pouvez exécuter les commandes suivantes. Cela démarrera et activera le socket. Le fichier de socket sera créé dans /run/gunicorn.sock au démarrage. Lorsqu'une connexion est établie avec le socket, systemd démarrera le service Gunicorn pour la gérer :
|
1 2 |
sudo systemctl start gunicorn.socket sudo systemctl enable gunicorn.socket |
Vérifiez le statut du socket Gunicorn :
|
1 |
sudo systemctl status gunicorn.socket |
Maintenant, vérifiez l'existence du fichier de socket :
|
1 |
file /run/gunicorn.sock |
Si le statut de systemctl indique une erreur ou si le fichier gunicorn.sock n'a pas été trouvé, cela signifie que le socket n'a pas été créé correctement. Consultez le journal détaillé pour obtenir des indices :
|
1 |
sudo journalctl -u gunicorn.socket |
N'oubliez pas de jeter un autre coup d'œil au gunicorn.socket pour détecter d'éventuelles erreurs.
-
Activation du socket
Nous avons démarré le gunicorn.socket jusqu'à présent. Cependant, sans aucune demande de connexion, gunicorn.service ne s'activera pas. Ensuite, vérifiez le statut de Gunicorn :
|
1 |
sudo systemctl status gunicorn |
Nous pouvons tester le mécanisme d'activation du socket en envoyant une demande de connexion à l'aide de curl :
|
1 |
curl --unix-socket /run/gunicorn.sock localhost |
Vous devriez obtenir une sortie HTML de l'application. Cela indique que Gunicorn a démarré avec succès et a pu servir l'application Django. Vérifiez le statut actuel du service Gunicorn :
|
1 |
sudo systemctl status gunicorn |
S'il y a un comportement ou une sortie inattendue (indiquant une erreur), consultez les journaux détaillés pour obtenir des indices :
|
1 |
sudo journalctl -u gunicorn |
Si des modifications ont été apportées au fichier gunicorn.service, vous devez recharger le démon pour relire la définition du service. Cela nécessite également de redémarrer le service Gunicorn :
|
1 2 |
sudo systemctl daemon-reload sudo systemctl restart gunicorn |
Configuration de Nginx
Maintenant, nous allons configurer Nginx pour transmettre le trafic entrant au processus. Tout d'abord, créez un nouveau bloc de serveur dans Nginx :
|
1 |
sudo nano /etc/nginx/sites-available/viktor_project |
Ensuite, saisissez le code suivant :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
server { listen 80; server_name 31.171.250.71; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/cloudsigma/viktor_project; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } } |
Voici plusieurs blocs dans la configuration :
service:Ce bloc définit que le serveur doit écouter normalement sur le port 80 et doit répondre au nom de domaine ou à l'adresse IP du serveur.location:Il s'agit de la première entrée de localisation. Elle définit où trouver les ressources statiques.location:Il s'agit de la deuxième entrée de localisation. Ce bloc définit les paramètres de proxy standard et la manière de transmettre le trafic au socket Gunicorn.
Enregistrez le fichier et fermez l'éditeur. Liez le fichier au répertoire « sites-enabled » pour l'activer :
|
1 |
sudo ln -s /etc/nginx/sites-available/viktor_project /etc/nginx/sites-enabled |
Après cela, testez s'il y a une erreur de syntaxe dans la configuration de Nginx :
|
1 |
sudo nginx -t |
Si vous n’avez pas trouvé d'erreur, redémarrez Nginx pour appliquer la modification :
|
1 |
sudo systemctl restart nginx |
Nous devons à nouveau modifier les règles UFW. Nous n'avons plus besoin d'accéder au serveur de développement, nous pouvons donc supprimer l'exception pour le port 8000. De plus, nous voulons ouvrir le port 80 pour le trafic normal :
|
1 2 |
sudo ufw delete allow 8000 sudo ufw allow 'Nginx Full' |
Vérifiez ces modifications des règles du pare-feu :
|
1 |
sudo ufw status |
Le serveur devrait maintenant être accessible depuis un navigateur web normal.
Procédures de dépannage
Si toutes les étapes ont été correctement suivies, l'application Django devrait être accessible via Internet. Si ce n'est pas le cas, cela indique que l'installation ne s'est pas déroulée comme prévu. Nous devons procéder à un dépannage pour identifier la source du problème.
-
Nginx affiche la page par défaut
Si Nginx affiche la page par défaut au lieu du proxy de l'application, cela signifie généralement que le server_name a été mal configuré dans le bloc de serveur.
Dans cet exemple, the bloc de serveur est stocké à l'emplacement suivant :
|
1 |
/etc/nginx/sites-available/viktor_project |
L'entrée server_name détermine quel bloc de serveur Nginx utilisera pour répondre aux requêtes. Si la page par défaut s'affiche, c'est probablement parce que Nginx n'a pas pu faire correspondre la requête à un bloc de serveur explicite, il se rabat donc sur le bloc par défaut :
|
1 |
/etc/nginx/sites-available/default |
Vérifiez si le bloc de serveur de votre projet Django a un server_name.
-
502 Bad Gateway
L'erreur 502 indique que Nginx n'a pas pu relayer la requête avec succès. Un large éventail de problèmes de configuration possibles peut conduire à l'erreur 502, nous avons donc besoin d'indices pour dépanner correctement.
La principale source d'indices réside dans les journaux d'erreurs de Nginx. En général, ils indiquent les conditions qui ont causé les problèmes lors du proxy. Vérifiez le journal d'erreurs de Nginx à l'aide de la commande suivante :
|
1 |
sudo tail -F /var/log/nginx/error.log |
Une fois le journal ouvert, essayez d'accéder à nouveau au serveur. Cela devrait générer un nouveau message d'erreur dans le journal. Cela peut aider à cibler le problème. Voici quelques messages possibles :
- connect() to unix:/run/gunicorn.sock failed (2: No such file or directory)
Cela indique que Nginx n'a pas pu trouver gunicorn.sock à l'emplacement défini dans la configuration. L'emplacement est décrit par la directive proxy_pass sous le bloc du site. Vérifiez si proxy_pass indique le bon emplacement de gunicorn.sock généré par l'unité systemd gunicorn.socket :
|
1 |
/etc/nginx/sites-available/viktor_project |
Si gunicorn.sock n'a pas été trouvé sous le répertoire /run, cela signifie que systemd n'a pas pu le générer. Vous devriez revérifier les étapes de configuration du fichier socket Gunicorn.
- connect() to unix:/run/gunicorn.sock failed (13: Permission denied)
Cela indique que Nginx n'a pas pu se connecter au socket Gunicorn en raison de problèmes de permissions. Cela peut se produire si le processus a été exécuté en tant qu'utilisateur root au lieu d'un utilisateur sudo. Bien que systemd ait généré gunicorn.sock avec succès, Nginx n'est pas en mesure de l'utiliser.
Un coupable possible peut être des permissions limitées entre le répertoire racine (/) et le fichier gunicorn.sock. Vérifiez les permissions et la propriété du fichier socket et de chacun de ses répertoires parents :
|
1 |
namei -l /run/gunicorn.sock |
La première colonne décrit les permissions du fichier. La deuxième colonne décrit l'utilisateur propriétaire, et la troisième colonne le groupe propriétaire. Si l'un des répertoires menant à gunicorn.sock n'a pas les permissions de lecture et d'exécution appropriées, Nginx ne parviendra pas à accéder au socket.
-
Django affichant « could not connect to the server: Connection refused »
Cela indique que Django n'a pas réussi à se connecter au serveur PostgreSQL. Assurez-vous que le serveur PostgreSQL est opérationnel :
|
1 |
sudo systemctl status postgresql |
S'il n'est pas en cours d'exécution, exécutez les commandes suivantes pour le démarrer et l'activer :
|
1 2 |
sudo systemctl start postgresql sudo systemctl enable postgresql |
Si vous rencontrez toujours cette erreur, assurez-vous que les identifiants de la base de données sont correctement définis sous settings.py:
|
1 |
~/viktor_project/viktor_project/settings.py |
Dépannage supplémentaire
Pour un dépannage supplémentaire, divers journaux sont mis en place. Ces journaux peuvent aider à identifier l'origine des problèmes.
Voici une liste de journaux qui peuvent vous aider :
- Journaux Nginx
|
1 |
sudo journalctl -u nginx |
- Journaux d'accès - Nginx
|
1 |
sudo less /var/log/nginx/access.log |
- Journaux d'erreurs - Nginx
|
1 |
sudo less /var/log/nginx/error.log |
- Journaux d'application - Gunicorn
|
1 |
sudo journalctl -u gunicorn |
- Journaux de socket - Gunicorn
|
1 |
sudo journalctl -u gunicorn.socket |
|
1 |
sudo systemctl restart gunicorn |
|
1 2 |
sudo systemctl daemon-reload sudo systemctl restart gunicorn.socket gunicorn.service |
|
1 2 |
sudo nginx -t sudo systemctl restart nginx |
Dernières réflexions
Ce guide démontre avec succès comment poser les bases de Django. Django fournit de nombreux composants courants d'une application web, vous permettant de vous concentrer sur les éléments uniques. Le projet Django fonctionnera au sein de l'environnement virtuel. Gunicorn gère la communication entre les requêtes des clients et Django. Enfin, Nginx agit comme un proxy inverse pour gérer les connexions des clients.
Bonne programmation !










Commentaires
Aucun commentaire pour l'instant. Soyez le premier.