GNU/Linux >> Tutoriels Linux >  >> Panels >> Panels

Comment déployer l'application Flask avec Nginx et Gunicorn sur Ubuntu 20.04

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.


Panels
  1. Comment déployer des applications Node.js avec pm2 et Nginx sur Ubuntu

  2. Comment installer Nginx avec Google PageSpeed ​​sur Ubuntu 20.04

  3. Comment installer Nginx avec PHP5 et MySQL sur Ubuntu 11.10

  4. Comment déployer Modsecurity avec Nginx sur Ubuntu 20.04 LTS

  5. Comment configurer Django avec Postgres, Nginx et Gunicorn sur Ubuntu 20.04

Comment installer MediaWiki avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04

Comment déployer Rocket Chat avec Nginx sur Ubuntu 18.04

Comment installer Bludit CMS avec NGINX sur Ubuntu 20.04

Comment installer Talkyard Forum avec Nginx sur Ubuntu 18.04

Comment déployer une application PHP avec Nginx et MySQL à l'aide de Docker et Docker Compose

Comment déployer l'application Laravel avec Nginx sur Ubuntu ?