Introduction de l’atelier
L’objectif de ce WePynaire est de vous montrer comment déployer une application Django sur un serveur virtuel privé linux, à la main. Nous utiliserons une méthode de déployement directe et simple, sans conteneurisation et sans pipeline d’intégration continue.
Lorsqu’on lance son application ou qu’on démarre son entreprise, l’objectif prioritaire est de fournir de la valeur à ses utilisateurs. Dans ce contexte, la simplicité est une valeur refuge que je recommande de cultiver.
Savoir déployer son site à la main permet également d’avoir un hébergement Django relativement économique comparativement à des hébergements tels que Heroku. C’est donc un excellent point de départ pour les premiers mois de vie de votre application.
Dans ce WePynaire, j’utiliserai Scaleway pour le serveur privé virtuel. La matière que nous allons voir s’applique à l’identique à n’importe quel VPS tournant sous Ubuntu ou Debian. Vous pouvez donc expérimenter avec Digital Ocean, OVH, Ionos ou d’autres fournisseurs.
Session de discussion et questions
La session de discussion et de questions en direct pour ce WePynaire a eu lieu sur Zoom le lundi 27 février à 18h.
L’enregistrement de cette session est disponible ici.
Vidéo de l’atelier
Quelques remarques:
- Le dépot de code Github de projet de départ se trouve ici.
- Le Pipfile utilisé dans ce projet est conçu pour l’exécution sans erreur en local. Il s’exécute parfaitement sur le serveur également. Il est toutefois possible d’optimiser l’installation sur le serveur avec un pipenv install –categories production.
- Une vision globale du déploiement est donnée dans ce fichier README. Voici également un exemple de fichier de configuration pour nginx et un autre exemple de configuration pour supervisor et gunicorn.
L’illustration ci-dessous montre comment est organisé le déploiement présenté dans cet atelier. On retrouve trois serveurs:
- Le serveur web nginx utilisé pour servir efficacement les fichiers statiques et de media, et pour service de proxy inverse envoyant les requêtes vers notre application Django.
- Le serveur WSGI gunicorn qui sert de point entre les requêtes HTTP reçcues et notre application Django.
- Le serveur de base de données relationnelle postgresql pour héberger nos données et les restituer.

Cette vidéo vous conduit pas à pasb dans le processus de déploiement. Le matériel nécessaire pour suivre ce WePynaire:
-
- Acheter un serveur privé vituel Ubuntu 22.04 bon marché chez DigitalOcean (dès 4 $/mois), chez Scaleway (dès 10 EUR/mois), chez Ionos (dès 2 $/mois), chez Kimsufi (dès 3.5 EUR/mois) ou encore chez OVH (dès 3.50 EUR/mois).
- Avoir un client ssh pour se connecter à votre serveur privé vituel en mode terminal. Sur MacOS ou Linux, vous disposez par défaut d’un client ssh. Sous windows, vous pouvez en installer un en installant Git for windows et en utilisant le terminal Git Bash.
- Créer une clé ssh pour se connecter au serveur distant de manière sécurisée à l’aide de votre client ssh. Vous pouvez par exemple suivre ce tutoriel.
Gérer les droits d’accès du serveur web (Nginx) à vos fichier statiques et de media
Il arrive parfois qu’ont constate que l’application Django que nous avons déployée ne parvient pas à charger les fichiers statiques et media de notre application. C’est généralement dû à un problème de droits d’accès. Cette vidéo vous en dit plus et vous montre comment résoudre le problème.