Comment installer Flask sur l’hébergement : un guide complet étape par étape
Flask est un framework web léger et flexible pour Python qui permet aux développeurs de créer et de déployer des applications web rapidement et efficacement. Que vous lanciez un projet personnel, une API REST ou un service web à grande échelle, savoir comment installer et configurer correctement Flask dans un environnement d’hébergement est une compétence essentielle. Ce guide complet vous guide à travers chaque étape — de la configuration du serveur au déploiement en production avec Gunicorn et Nginx.
1. Prérequis
Avant de vous lancer dans le processus d’installation, assurez-vous que vous disposez des éléments suivants :
Environnement d’hébergement qui supporte Python
Vous avez besoin d’un service d’hébergement qui vous donne un contrôle total sur votre environnement serveur. Les plans d’hébergement partagé restreignent souvent l’exécution de Python, donc pour les déploiements Flask, un plan VPS Hosting ou un Serveur Dédié est fortement recommandé. Ces options vous donnent un accès root, des capacités complètes de gestion des paquets et la flexibilité de configurer votre stack exactement comme vous le souhaitez.
Accès SSH
Vous aurez besoin d’un accès SSH pour vous connecter à votre serveur distant et exécuter des commandes. La plupart des environnements VPS et serveurs dédiés basés sur Linux supportent cela par défaut.
Python installé
Python 3.8 ou supérieur est recommandé. La plupart des environnements d’hébergement modernes ont Python préinstallé, mais nous vérifierons cela lors de la configuration.
Optionnel : Un nom de domaine
Si vous envisagez de rendre votre application Flask accessible publiquement via un domaine plutôt qu’une adresse IP brute, envisagez d’en enregistrer un via Enregistrement de domaine avant de commencer.
2. Connexion à votre serveur via SSH
Ouvrez votre terminal (Linux/macOS) ou un client SSH tel que PuTTY (Windows) et connectez-vous à votre serveur :
ssh username@your_server_ipRemplacez username par votre nom d’utilisateur serveur réel et your_server_ip par l’adresse IP publique de votre serveur.
Une fois connecté, vérifiez que Python 3 est disponible :
python3 --versionVous devriez voir une sortie similaire à Python 3.10.x. Si Python n’est pas installé, procédez à son installation :
sudo apt install python33. Mise à jour de votre serveur
Avant d’installer des paquets, il est recommandé de mettre à jour la liste des paquets de votre système et de mettre à niveau les paquets existants vers leurs dernières versions :
sudo apt update
sudo apt upgrade -yCela garantit que vous travaillez avec les versions les plus stables et sécurisées de toutes les dépendances.
4. Installation de Flask
Étape 1 : Installer pip
pip est le gestionnaire de paquets de Python et est requis pour installer Flask et d’autres bibliothèques Python. Installez-le s’il n’est pas déjà présent :
sudo apt install python3-pip -yVérifiez l’installation :
pip3 --versionÉtape 2 : Créer un répertoire de projet
Organisez votre application en créant un répertoire dédié :
mkdir my_flaskapp
cd my_flaskappÉtape 3 : Configurer un environnement virtuel
L’utilisation d’un environnement virtuel isole les dépendances de votre projet de l’installation Python globale, évitant les conflits de version et gardant votre serveur propre :
sudo apt install python3-venv -y
python3 -m venv venvActivez l’environnement virtuel :
source venv/bin/activateVotre invite de terminal changera pour indiquer que l’environnement virtuel est actif, affichant généralement (venv) au début de la ligne.
Étape 4 : Installer Flask
Avec l’environnement virtuel activé, installez Flask à l’aide de pip :
pip install FlaskConfirmez l’installation :
flask --versionVous devriez voir la version de Flask ainsi que les versions de Python et Werkzeug.
5. Création d’une application Flask simple
Étape 1 : Créer le fichier d’application
Créez un nouveau fichier appelé app.py dans votre répertoire de projet :
nano app.pyÉtape 2 : Écrire votre application Flask
Ajoutez le code d’application Flask minimal suivant :
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, World! Flask is running successfully."
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)Explication du code :
Flask(__name__)— Crée une nouvelle instance d’application Flask.@app.route('/')— Définit une route URL pour la page d’accueil.app.run(host='0.0.0.0', port=5000)— Démarre le serveur de développement, le rendant accessible sur toutes les interfaces réseau au port 5000.
Étape 3 : Enregistrer et quitter
Appuyez sur CTRL + X, puis Y, et appuyez sur Enter pour enregistrer le fichier et quitter l’éditeur nano.
6. Exécution de votre application Flask en mode développement
Démarrez le serveur de développement Flask pour tester votre application :
python app.pyVotre application sera maintenant accessible dans un navigateur web à :
http://your_server_ip:5000> Important : Le serveur de développement Flask intégré n’est pas adapté à une utilisation en production. Il est monothread, non optimisé pour les performances et manque de fonctionnalités de sécurité critiques. Utilisez toujours un serveur WSGI de qualité production pour les déploiements en direct.
7. Déploiement de Flask dans un environnement de production avec Gunicorn
Pour les déploiements en production, Gunicorn (Green Unicorn) est le serveur WSGI HTTP Python le plus largement utilisé. Il gère efficacement plusieurs requêtes simultanées et s’intègre parfaitement avec Nginx.
Étape 1 : Installer Gunicorn
Avec votre environnement virtuel toujours actif, installez Gunicorn :
pip install gunicornÉtape 2 : Exécuter votre application avec Gunicorn
Lancez votre application Flask en utilisant Gunicorn, en la liant à localhost sur le port 8000 :
gunicorn app:app -b 127.0.0.1:8000 --workers 3Explication des paramètres :
app:app— Fait référence à l’objetappà l’intérieur du fichierapp.py.-b 127.0.0.1:8000— Lie Gunicorn à localhost sur le port 8000 (Nginx gérera le trafic externe).--workers 3— Génère 3 processus de travail pour gérer les requêtes simultanées. Une formule courante est(2 × CPU cores) + 1.
Étape 3 : Exécuter Gunicorn en tant que service Systemd (recommandé)
Pour assurer que Gunicorn démarre automatiquement au redémarrage du serveur, créez un fichier de service systemd :
sudo nano /etc/systemd/system/my_flaskapp.serviceAjoutez la configuration suivante :
[Unit]
Description=Gunicorn instance to serve my_flaskapp
After=network.target
[Service]
User=your_username
Group=www-data
WorkingDirectory=/home/your_username/my_flaskapp
Environment="PATH=/home/your_username/my_flaskapp/venv/bin"
ExecStart=/home/your_username/my_flaskapp/venv/bin/gunicorn app:app -b 127.0.0.1:8000 --workers 3
[Install]
WantedBy=multi-user.targetRemplacez your_username par votre nom d’utilisateur serveur réel. Ensuite, activez et démarrez le service :
sudo systemctl daemon-reload
sudo systemctl start my_flaskapp
sudo systemctl enable my_flaskappVérifiez l’état du service :
sudo systemctl status my_flaskapp8. Configuration de Nginx en tant que proxy inverse
Nginx agit comme un proxy inverse, se plaçant devant Gunicorn et gérant tout le trafic HTTP/HTTPS entrant. Cette configuration améliore les performances, permet la terminaison SSL et vous permet de servir efficacement les fichiers statiques.
Étape 1 : Installer Nginx
sudo apt install nginx -yÉtape 2 : Créer un fichier de configuration Nginx
Créez une nouvelle configuration de bloc serveur pour votre application Flask :
sudo nano /etc/nginx/sites-available/my_flaskappAjoutez la configuration suivante :
server {
listen 80;
server_name your_domain_or_ip; # Replace with your domain or server IP
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static {
alias /home/your_username/my_flaskapp/static;
expires 30d;
}
}Étape 3 : Activer la configuration
Créez un lien symbolique pour activer le site et testez la configuration Nginx :
sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -tSi le test retourne syntax is ok et test is successful, redémarrez Nginx :
sudo systemctl restart nginxVotre application Flask est maintenant accessible à http://your_domain_or_ip sur le port 80.
9. Sécurisation de votre application Flask avec SSL/HTTPS
Exécuter votre application sur HTTPS n’est plus optionnel — c’est une exigence fondamentale pour la sécurité, la confiance des utilisateurs et les classements SEO. Vous pouvez obtenir et installer un certificat SSL gratuit en utilisant Certbot avec Let’s Encrypt, ou acheter un certificat premium via Certificats SSL pour une validation améliorée et une couverture de garantie.
Installer Certbot et obtenir un certificat SSL gratuit
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot modifiera automatiquement votre configuration Nginx pour activer HTTPS et configurer le renouvellement automatique des certificats.
Vérifiez que le renouvellement automatique est configuré :
sudo certbot renew --dry-run10. Configuration du pare-feu
Assurez-vous que le pare-feu de votre serveur autorise le trafic sur les ports nécessaires :
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw statusNginx Full ouvre à la fois le port 80 (HTTP) et le port 443 (HTTPS).
11. Dépannage des problèmes courants
| Problème | Cause probable | Solution |
|---|---|---|
502 Bad Gateway | Gunicorn n’est pas en cours d’exécution | Vérifiez sudo systemctl status my_flaskapp |
Permission denied sur socket | Permissions de fichier incorrectes | Assurez-vous que l’utilisateur Nginx a accès au répertoire de l’application |
| Application Flask non trouvée | Répertoire de travail incorrect dans le fichier de service | Vérifiez deux fois le chemin WorkingDirectory dans la configuration systemd |
| Port 5000 non accessible | Le pare-feu bloque le port | Ouvrez le port avec sudo ufw allow 5000 (dev uniquement) |
ModuleNotFoundError | Environnement virtuel non activé | Assurez-vous que ExecStart pointe vers le binaire Python/Gunicorn du venv |
12. Résumé et prochaines étapes
Le déploiement d’une application Flask sur un serveur d’hébergement implique plusieurs étapes interconnectées : la configuration d
