- Description
- Prérequis
- Installation
- Configuration de l'application Flask
- Configuration d'Apache
- Tester l'Application
- Ressources Utiles
- Licence
Ce guide vous montre comment déployer une application Flask sur un serveur Apache grâce à WSGI.
- Flask : un micro-framework Python facilitant la création d'applications web.
- Apache : un serveur web qui gère les différentes requêtes en production et les redirige vers les applications appropriées. Cependant, Apache ne peut pas traiter les requêtes Python seul ; une passerelle est nécessaire.
- WSGI : une norme qui permet de connecter des applications web développées avec des frameworks comme Flask ou Django à des serveurs web tels qu'Apache ou Nginx.
Nous allons construire pas à pas une application Flask, puis la déployer sur un serveur Apache en utilisant une passerelle WSGI.
- Python, Flask
- Ubuntu 22.04
Commençons par installer Python, Apache et la passerelle WSGI sur notre machine via le terminal :
- Mettez à jour les paquets :
sudo apt update -y
Installez Python avec les commandes suivantes :
sudo apt install python3 python3-pip python3-venv
- Installez Apache :
sudo apt install apache2
- Lancez Apache :
sudo systemctl enable apache2 && sudo systemctl start apache2
- Vérifiez le statut d'Apache :
sudo systemctl status apache2
Installez le module WSGI pour Apache :
sudo apt install libapache2-mod-wsgi-py3
À cette étape, nous allons créer un environnement Python et cloner le projet sur notre machine.
- Accédez au dossier www :
cd /var/www
- Clonez le projet :
git clone <url project>
- Accédez au répertoire du projet :
cd /var/www/flask-wsgi-apache-setup
- Créez l'environnement virtuel dans le projet :
python3 -m venv flask-venv
- Activez l'environnement :
source flask-venv/bin/activate
Installez Flask :
pip3 install flask
Définissez la variable d'environnement FLASK_APP
:
export FLASK_APP=app.py
Testez si tout fonctionne correctement :
flask run --host=0.0.0.0
Une fois le test terminé, désactivez l'environnement :
deactivate
Maintenant que notre application Flask est prête, nous devons la déployer sur un serveur Apache. Apache ne comprend pas directement le code Python, nous utiliserons donc WSGI pour servir notre application.
Créez un fichier .wsgi
dans le répertoire de l’application :
nano flask-app.wsgi
Ajoutez le contenu suivant :
import sys
sys.path.insert(0, "/var/www/flask-wsgi-apache-setup")
from app import app as application
Accédez au dossier de configuration d'Apache :
cd /etc/apache2/sites-available
Créez un fichier de configuration :
nano flask-wsgi-apache-setup.conf
Ajoutez-y le contenu suivant, en remplaçant yourdomain.com
par votre adresse IP :
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/flask-wsgi-apache-setup
WSGIDaemonProcess app user=www-data group=www-data threads=5 python-home=/var/www/flask-wsgi-apache-setup/flask-venv
WSGIScriptAlias / /var/www/flask-wsgi-apache-setup/flask-app.wsgi
ErrorLog ${APACHE_LOG_DIR}/flask-error.log
CustomLog ${APACHE_LOG_DIR}/flask-access.log combined
<Directory /var/www/flask-wsgi-apache-setup>
WSGIProcessGroup app
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
</VirtualHost>
Redémarrez Apache pour appliquer les modifications :
sudo a2dissite 000-default.conf
sudo a2ensite flask-wsgi-apache-setup.conf
sudo systemctl restart apache2
Pour vérifier que tout fonctionne, entrez l'adresse IP dans votre navigateur.
MIT License