Flask est un petit framework Web léger et micro écrit en Python. Il vous permet de développer facilement des applications Web sans outils ni bibliothèques. Cette application Web peut être un blog, une page wiki, des pages Web, une application de calendrier Web ou un site Web commercial. Il est simple, facile à utiliser, facile à apprendre et adapté aux débutants car il ne nécessite aucune dépendance.
Dans ce tutoriel, nous allons vous montrer comment déployer l'application Flask avec Gunicorn et Nginx sur Ubuntu 20.04.
Prérequis
- Un VPS Ubuntu 20.04 avec un accès root activé, ou un utilisateur avec des privilèges sudo.
Se connecter et mettre à jour les packages
Tout d'abord, nous allons devoir nous connecter à notre serveur en utilisant SSH. Vous pouvez le faire en saisissant cette commande :
ssh root@IP_Address -p Port_Number
N'oubliez pas de remplacer root
avec votre nom d'utilisateur si vous n'utilisez pas l'utilisateur root. Modifier IP_Address
et Port_Number
selon l'adresse IP et le numéro de port SSH de votre serveur.
Une fois connecté, vous devez mettre à jour tous vos packages vers leurs dernières versions disponibles.
apt-obtenir la mise à jour -y
apt-get upgrade -y
Une fois que tous les packages sont à jour, redémarrez votre serveur pour appliquer les modifications de configuration.
Installer les dépendances requises
Flask est une application basée sur Python. Python et les autres dépendances requises doivent donc être installés sur votre serveur. S'ils ne sont pas installés, vous pouvez tous les installer avec la commande suivante :
apt-get install python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y
Une fois toutes les dépendances installées, installez le package d'environnement virtuel Python à l'aide de la commande suivante :
apt-get install python3-venv -y
Une fois installé, vous pouvez passer à l'étape suivante.
Installer le serveur Web Nginx
Dans ce didacticiel, nous utiliserons Nginx comme proxy inverse pour l'application Flask. Vous devrez donc installer le package de serveur Web Nginx sur votre serveur. Vous pouvez l'installer à l'aide de la commande suivante :
apt-get install nginx -y
Une fois le Nginx installé, démarrez et activez le service Nginx à l'aide de la commande suivante :
systemctl start nginx systemctl enable nginx
Créer un environnement virtuel pour l'application Flask
Ensuite, vous devrez créer un environnement virtuel pour l'application Flask.
Commencez par créer un répertoire de projet avec la commande suivante :
mkdir ~/project
Ensuite, changez le répertoire de votre projet et créez un environnement virtuel Python avec la commande suivante :
cd ~/project python3 -m venv venv
Ensuite, activez votre environnement avec la commande suivante :
source venv/bin/activate
Ensuite, installez Gunicorn, Flask et d'autres composants avec la commande suivante :
pip install wheel pip install gunicorn flask
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Créer une application Flask
Ensuite, vous devrez créer un exemple d'application Flask pour votre projet. Exécutez la commande suivante pour le créer dans votre répertoire de projet :
nano ~/project/flaskapp.py
Ajoutez les codes suivants :
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Welcome to Flask Application!" if __name__ == "__main__": app.run(host='0.0.0.0')
Enregistrez et fermez le fichier puis vérifiez votre application avec la commande suivante :
cd ~/project/ python3 flaskapp.py
Si tout va bien, vous devriez obtenir le résultat suivant :
* Serving Flask app 'flaskapp' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on all addresses. WARNING: This is a development server. Do not use it in a production deployment. * Running on http://69.28.84.227:5000/ (Press CTRL+C to quit)
Appuyez sur CTRL+C pour fermer l'application.
Créer un point d'entrée WSGI pour Gunicorn
Ensuite, vous devrez créer un point d'entrée WSGI pour servir votre application via Gunicorn.
Exécutez la commande suivante pour le créer :
nano ~/project/wsgi.py
Ajoutez les lignes suivantes :
from flaskapp import app if __name__ == "__main__": app.run()
Enregistrez et fermez le fichier puis vérifiez si Gunicorn peut servir correctement l'application à l'aide de la commande ci-dessous :
cd ~/project/ gunicorn --bind 0.0.0.0:5000 wsgi:app
Si tout va bien, vous devriez obtenir le résultat suivant :
[2021-12-23 10:37:15 +0000] [9352] [INFO] Starting gunicorn 20.1.0 [2021-12-23 10:37:15 +0000] [9352] [INFO] Listening at: http://0.0.0.0:5000 (9352) [2021-12-23 10:37:15 +0000] [9352] [INFO] Using worker: sync [2021-12-23 10:37:15 +0000] [9354] [INFO] Booting worker with pid: 9354
Appuyez sur CTRL+C pour arrêter l'application. Ensuite, désactivez depuis l'environnement virtuel Python avec la commande suivante :
deactivate
Créer un fichier de service Systemd pour l'application Flask
Ensuite, vous devrez créer un fichier d'unité systemd pour l'application Flask. Vous pouvez le créer avec la commande suivante :
nano /etc/systemd/system/flask.service
Ajoutez les lignes suivantes :
[Unit] Description=Gunicorn instance to serve Flask After=network.target [Service] User=root Group=www-data WorkingDirectory=/root/project Environment="PATH=/root/project/venv/bin" ExecStart=/root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier, puis définissez le propriétaire et l'autorisation appropriés pour le projet Flask :
chown -R root:www-data /root/project chmod -R 775 /root/project
Ensuite, rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez le service flask et activez-le pour qu'il démarre au redémarrage du système :
systemctl start flask systemctl enable flask
Ensuite, vérifiez l'état du flacon avec la commande suivante :
systemctl status flask
Sortie :
● flask.service - Gunicorn instance to serve Flask Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2021-12-23 10:38:26 UTC; 8s ago Main PID: 9376 (gunicorn) Tasks: 2 (limit: 2353) Memory: 27.8M CGroup: /system.slice/flask.service ├─9376 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app └─9393 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app Dec 23 10:38:26 ubuntu2004 systemd[1]: Started Gunicorn instance to serve Flask. Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Starting gunicorn 20.1.0 Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Listening at: http://0.0.0.0:5000 (9376) Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Using worker: sync Dec 23 10:38:26 ubuntu2004 gunicorn[9393]: [2021-12-23 10:38:26 +0000] [9393] [INFO] Booting worker with pid: 9393
Configurer Nginx en tant que proxy inverse pour l'application Flask
Ensuite, vous devrez configurer Nginx en tant que proxy inverse pour servir l'application Flask via le port 80. Pour ce faire, créez un fichier de configuration d'hôte virtuel Nginx :
nano /etc/nginx/conf.d/flask.conf
Ajoutez les lignes suivantes :
server { listen 80; server_name flask.example.com; location / { include proxy_params; proxy_pass http://127.0.0.1:5000; } }
Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe :
nginx -t
Vous devriez voir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
Accéder à l'application Flask
À ce stade, votre application Flask est installée, configurée et hébergée avec un proxy Nginx. Vous pouvez maintenant y accéder en utilisant l'URL http://flask.example.com . Vous devriez voir la page suivante :
Toutes nos félicitations! vous avez déployé avec succès l'application Flask avec Gunicorn et Nginx sur le serveur Ubuntu 20.04.
Cependant, si vous êtes l'un de nos clients d'hébergement Ubuntu géré ou si vous utilisez l'un de nos plans d'hébergement VPS géré, vous n'avez pas besoin d'installer l'application Flask sur votre VPS Ubuntu 20.04 - demandez simplement à nos administrateurs, asseyez-vous et Détendez-vous. Nos administrateurs installeront l'application Flask sur Ubuntu 20.04 (ou tout autre système d'exploitation que vous avez avec nous) pour vous immédiatement.
PS. Si vous avez aimé cet article sur l'installation de l'application Flask sur un VPS Ubuntu 20.04, partagez-le avec vos amis sur les réseaux sociaux à l'aide des boutons ci-dessous, ou laissez simplement un commentaire dans la section des commentaires. Merci.