15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
01.11.2024
3 +1

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_ip

Remplacez 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 --version

Vous devriez voir une sortie similaire à Python 3.10.x. Si Python n’est pas installé, procédez à son installation :

sudo apt install python3

3. 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 -y

Cela 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 -y

Vé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 venv

Activez l’environnement virtuel :

source venv/bin/activate

Votre 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 Flask

Confirmez l’installation :

flask --version

Vous 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.py

Votre 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 3

Explication des paramètres :

  • app:app — Fait référence à l’objet app à l’intérieur du fichier app.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.service

Ajoutez 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.target

Remplacez 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_flaskapp

Vérifiez l’état du service :

sudo systemctl status my_flaskapp

8. 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_flaskapp

Ajoutez 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 -t

Si le test retourne syntax is ok et test is successful, redémarrez Nginx :

sudo systemctl restart nginx

Votre 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.com

Certbot 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-run

10. 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 status

Nginx Full ouvre à la fois le port 80 (HTTP) et le port 443 (HTTPS).

11. Dépannage des problèmes courants

ProblèmeCause probableSolution
502 Bad GatewayGunicorn n’est pas en cours d’exécutionVérifiez sudo systemctl status my_flaskapp
Permission denied sur socketPermissions de fichier incorrectesAssurez-vous que l’utilisateur Nginx a accès au répertoire de l’application
Application Flask non trouvéeRépertoire de travail incorrect dans le fichier de serviceVérifiez deux fois le chemin WorkingDirectory dans la configuration systemd
Port 5000 non accessibleLe pare-feu bloque le portOuvrez le port avec sudo ufw allow 5000 (dev uniquement)
ModuleNotFoundErrorEnvironnement 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

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer