Si vous avez une application Django en production, vous atteindrez tôt ou tard les limites de l'hébergement mutualisé : lenteur, restrictions de configuration, manque de contrôle. La solution est de migrer vers un VPS (serveur privé virtuel).

Dans cet article, je vous explique étape par étape comment j'ai migré axxyss.com vers un VPS Debian 12 avec nginx comme serveur web et gunicorn comme serveur WSGI.


Pourquoi un VPS ?

L'hébergement mutualisé est économique mais présente des limitations importantes :

  • Vous ne pouvez pas installer librement des paquets système
  • Les ressources (CPU, RAM) sont partagées avec d'autres utilisateurs
  • Les configurations comme les websockets ou les workers personnalisés ne sont pas disponibles
  • Les performances sont imprévisibles

Avec un VPS, vous avez le contrôle total sur le serveur : installez ce dont vous avez besoin, configurez nginx selon vos besoins et définissez le nombre de workers gunicorn requis par votre application.


Prérequis

  • Un VPS avec Debian 12 (j'utilise Strato, mais n'importe quel fournisseur convient)
  • Accès SSH au serveur
  • Votre projet Django fonctionnel en local
  • Un domaine pointant vers l'IP du VPS

Étape 1 — Préparer le serveur

Connectez-vous au VPS via SSH et mettez à jour le système :

ssh utilisateur@votre_ip -p 22
sudo apt update && sudo apt upgrade -y

Installez les dépendances nécessaires :

sudo apt install python3 python3-pip python3-venv nginx git -y

Étape 2 — Téléverser le projet

Clonez votre dépôt depuis GitHub :

cd /var/www/
git clone https://github.com/votre_utilisateur/votre_projet.git
cd votre_projet

Créez l'environnement virtuel et installez les dépendances :

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Étape 3 — Configurer les variables d'environnement

Créez le fichier .env avec vos variables de production :

nano .env
DEBUG=False
SECRET_KEY=votre_clé_secrète
ALLOWED_HOSTS=votredomaine.com
DB_NAME=nom_db
DB_USER=utilisateur_db
DB_PASSWORD=mot_de_passe_db

Étape 4 — Configurer gunicorn comme service systemd

Créez le fichier de service :

sudo nano /etc/systemd/system/monapp.service
[Unit]
Description=Daemon Gunicorn pour monapp.com
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/votre_projet
ExecStart=/var/www/votre_projet/venv/bin/gunicorn \
    --workers 3 \
    --bind unix:/tmp/monapp.sock \
    --timeout 120 \
    monapp.wsgi:application

[Install]
WantedBy=multi-user.target

Activez et démarrez le service :

sudo systemctl daemon-reload
sudo systemctl enable monapp
sudo systemctl start monapp

Étape 5 — Configurer nginx

Créez le fichier de configuration nginx :

sudo nano /etc/nginx/sites-available/monapp
server {
    listen 80;
    server_name votredomaine.com www.votredomaine.com;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        root /var/www/votre_projet;
    }

    location /media/ {
        root /var/www/votre_projet;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/tmp/monapp.sock;
    }
}

Activez le site :

sudo ln -s /etc/nginx/sites-available/monapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Étape 6 — Certificat SSL avec Let's Encrypt

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d votredomaine.com -d www.votredomaine.com

Certbot configure automatiquement nginx pour HTTPS et renouvelle le certificat tous les 90 jours.


Étape 7 — Fichiers statiques et migrations

source venv/bin/activate
python manage.py collectstatic
python manage.py migrate

Conclusion

La migration vers un VPS nécessite un peu plus de configuration initiale, mais les avantages sont clairs : performance, contrôle total et scalabilité. Une fois configuré, le flux de déploiement est simple :

git pull origin main
sudo systemctl restart monapp

Si vous avez des questions sur la migration de votre projet Django vers un VPS, n'hésitez pas à me contacter — c'est exactement le type de projets sur lesquels je travaille.


# Debian, Développement Web, Django, Hosting, Linux, Serveur, Web, Wordpress


Pour laisser un commentaire, vous devez être connecté :

Sign IN

Commentaires : (0)

Il n'y a pas encore de commentaires.