Python/Flask sur un serveur Apache

Faire tourner un programme Flask sur un serveur Apache demande plusieurs choses :

Configuration Apache

Il sera d'une part nécessaire d'installer le module WSGI, de l'autre de créer un VirtualHost pour le projet.

Il faudra choisir un nom pour l'application Flask

Le fichier de configuration du VHost contiendra les directives suivantes :

WSGIDaemonProcess __nom_app__ threads=5
WSGIScriptAlias / __path_to_wsgi_file__
<Directory __path_to_directory__ >
    WSGIProcessGroup __nom_app__
    WSGIApplicationGroup %{GLOBAL}
    AllowOverride None
    Require all granted
</Directory>

On y ajoutera les informations habituelles sur le ServerName, ServerAdmin et les logs

Fichier WSGI

Ce fichier devra établir le chemin de recherche avant d'inclure l'application Flask
#!/usr/bin/python3
import sys
sys.path.insert(0,"/path/to/flask/app")
from app import app as application

Application Flask

L'application Flask instanciera l'objet Flask dans la variable app dans le fichier app.py.

Si on désire utiliser un autre nom de fichier ou un autre nom de variable, il conviendra de modifier la dernière ligne du fichier WSGI en conséquence

Rechargement de l'application

Apache ne recharge l'application que si le fichier WSGI est modifié. Une façon de faire est de télécharger ce fichier dans le projet et de mettre un commentaire en 2eme ligne contenant un tampon horaire. Lorsque l'on met à jour l'application, on change le dit tampon horaire ce qui forcera l'upload du WSGI et le rechargement de ce dernier.

Exemple de commentaire : # WSGI AAMMJJHHMM

Penser également à mettre le répertoire venv dans la liste des exclusions du déploiement automatique (tout au début de l'écran d'options)