Loading repository data…
Loading repository data…
glodielukose / repository
Guide pratique pour déployer une application Flask sur un serveur Apache en utilisant WSGI, incluant l'installation, la configuration et les bonnes pratiques pour une mise en production efficace.
Ce guide vous montre comment déployer une application Flask sur un serveur Apache grâce à WSGI.
Nous allons construire pas à pas une application Flask, puis la déployer sur un serveur Apache en utilisant une passerelle WSGI.
Commençons par installer Python, Apache et la passerelle WSGI sur notre machine via le terminal :
sudo apt update -y
Installez Python avec les commandes suivantes :
sudo apt install python3 python3-pip python3-venv
sudo apt install apache2
sudo systemctl enable apache2 && sudo systemctl start apache2
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.
cd /var/www
git clone <url project>
cd /var/www/flask-wsgi-apache-setup
python3 -m venv flask-venv
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