Dans ce tutoriel nous allons voir comment mettre en production un projet Django sur un serveur debian 10 avec Apache.

Les pré-requis

Configurons le serveur web apache2 pour notre projet Django

Nous avons donc un serveur web apache2 qui est installé sur le serveur, nous allons maintenant créer le virtualhost associé pour rendre accessible notre projet mais avant cela nous avons besoin d’un module spécifique WSGI.

Pour installer ce module rien de plus simple, en root lancer la commande suivante :

apt install libapache2-mod-wsgi-py3

Éditer maintenant un virtualhost /etc/apache2/sites-available/mon-site.conf et mettre les directives suivantes.

<VirtualHost *:80>
# Ne pas mettre cette directive si vous n'avez pas de nom de domaine et que vous accéder à votre serveur par ip
ServerName mon-nom-de-domaine 

# Les 4 lignes suivantes permettent de servir des fichiers dits statiques images, css, js, ...
Alias /static /opt/django-deploy-production-example/static
<Directory /opt/django-deploy-production-example/static>
Require all granted
</Directory>

<Directory /opt/django-deploy-production-example/djangoexample>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIDaemonProcess djangoexample python-home=/opt/django-deploy-production-example/venv python-path=/opt/django-deploy-production-example
WSGIProcessGroup djangoexample
WSGIScriptAlias / /opt/django-deploy-production-example/djangoexample/wsgi.py
</VirtualHost>

Il nous faut maintenant donner les bons droits sur les dossier pour le groupe www-data

chmod 775 /opt/django-deploy-production-example/
chown :www-data /opt/django-deploy-production-example

Activons maintenant ce nouveau virtualhost avec la commande suivante a2ensite mon-site puis systemctl restart apache2.

Ok donc à ce moment là nous avons un projet qui tourne sur un serveur debian 10 avec apache2 et son module WSGI. Passons à la suite. Rendez-vous sur le sommaire du tutoriel pour continuer votre lecture.

Image par Gerd Altmann de Pixabay