Comment configurer Django avec Postgres, Nginx et Gunicorn sur Ubuntu

Comment configurer Django avec Postgres, Nginx et Gunicorn sur Ubuntu

Introduction

Django est un framework web Python open source qui facilite le développement d’applications web robustes et évolutives. Postgres est un système de gestion de base de données relationnel hautes performances et fiable. Nginx est un serveur web hautes performances et Gunicorn est un serveur WSGI Python.

Dans ce tutoriel, nous vous guiderons pas à pas dans la configuration de Django avec Postgres, Nginx et Gunicorn sur un serveur Ubuntu.

Installation de Python et Virtualenv

1. Commencez par mettre à jour la liste des paquets :

bash
sudo apt update

2. Installez Python 3.6 ou une version ultérieure :

bash
sudo apt install python3.6

3. Installez virtualenv pour créer des environnements Python isolés :

bash
sudo apt install python3-venv

Création et activation d’un environnement virtuel

1. Créez un environnement virtuel pour le projet Django :

bash
python3 -m venv django-env

2. Activez l’environnement virtuel :

bash
source django-env/bin/activate

Installation de Django et des dépendances

1. Installez Django :

bash
pip install django

2. Créez un nouveau projet Django :

bash
django-admin startproject mysite

Configuration de la base de données Postgres

1. Installez Postgres :

bash
sudo apt install postgresql

2. Créez un utilisateur et une base de données Postgres pour le projet Django :

bash
sudo -u postgres createuser --createdb mysite_user

3. Modifiez le fichier de configuration Postgres pour autoriser les connexions à distance :

bash
sudo nano /etc/postgresql/12/main/postgresql.conf

Recherchez la ligne listen_addresses et changez-la en :


listen_addresses = '*'

4. Redémarrez le service Postgres :

bash
sudo systemctl restart postgresql

Configuration de Django avec Postgres

1. Ouvrez le fichier settings.py de votre projet Django :

bash
nano mysite/settings.py

2. Configurez les paramètres de base de données :

python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mysite_db',
'USER': 'mysite_user',
'PASSWORD': 'mysite_password',
'HOST': 'localhost',
'PORT': '5432',
}
}

Installation de Nginx

1. Installez Nginx :

bash
sudo apt install nginx

2. Créez un fichier de configuration Nginx pour votre projet Django :

bash
sudo nano /etc/nginx/sites-available/mysite

Collez la configuration suivante :

conf
server {
listen 80;
server_name mysite.example.com;

location / {
proxy_pass http://127.0.0.1:8000;
}

location /static/ {
alias /home/ubuntu/mysite/static/;
}
}

3. Activez le site Nginx :

bash
sudo systemctl enable mysite

Installation et configuration de Gunicorn

1. Installez Gunicorn :

bash
pip install gunicorn

2. Créez un fichier de configuration Gunicorn :

bash
echo "bind = 127.0.0.1:8000" > mysite/wsgi.py

Lancement de l’application Django

1. Lancez l’application Django sur Gunicorn :

bash
gunicorn --bind 127.0.0.1:8000 mysite.wsgi

2. Redémarrez Nginx pour charger la nouvelle configuration :

bash
sudo systemctl restart nginx

Conclusion

Vous avez maintenant configuré avec succès Django avec Postgres, Nginx et Gunicorn sur Ubuntu. Votre application Django est désormais accessible via Nginx en tant que proxy inverse pour Gunicorn, qui sert l’application Django. Cette configuration fournit un environnement stable, performant et sécurisé pour vos applications web Django.

FAQ

Q : Pourquoi devrais-je utiliser Gunicorn avec Django ?
R : Gunicorn est un serveur WSGI hautes performances qui permet une mise à l’échelle horizontale facile et une gestion efficace des processus pour les applications Django.

Q : Comment puis-je modifier les paramètres de configuration de Nginx ?
R : Modifiez le fichier de configuration Nginx situé à /etc/nginx/sites-available/mysite.

Q : Comment puis-je mettre à jour ma base de données Postgres ?
R : Utilisez l’outil de ligne de commande psql ou un client graphique comme pgAdmin pour effectuer des modifications dans la base de données.

Q : Puis-je déployer mon application Django sur un serveur distant ?
R : Suivez les mêmes étapes sur le serveur distant et configurez Nginx pour qu’il pointe vers le serveur Gunicorn sur le serveur distant.

Q : Comment puis-je déboguer les problèmes de connexion de base de données ?
R : Vérifiez les journaux Postgres et les journaux Nginx pour les messages d’erreur. Vérifiez également que l’utilisateur de la base de données dispose des autorisations appropriées et que le port de la base de données est ouvert.

Q : Comment puis-je optimiser les performances de mon application Django ?
R : Mettez en œuvre le cache, utilisez des index de base de données et optimisez les requêtes pour améliorer les performances.

Q : Puis-je utiliser d’autres serveurs web au lieu de Nginx ?
R : Oui, vous pouvez utiliser d’autres serveurs web tels qu’Apache ou Caddy, mais Nginx est recommandé pour sa légèreté et ses performances.

Q : Comment puis-je configurer plusieurs instances de travailleurs Gunicorn ?
R : Modifiez le fichier de configuration Gunicorn et définissez le nombre de travailleurs et le nombre de threads par travailleur.

Q : Quels sont les avantages d’utiliser un environnement virtuel ?
R : Les environnements virtuels isolent les dépendances du projet, ce qui permet d’éviter les conflits et d’assurer la cohérence des environnements de développement.