Comment utiliser Nginx avec Flask.

Comment utiliser Nginx avec Flask.
Python est un excellent langage de programmation facile à apprendre et tout-puissant, et avec des cadres tels que Django et Flask, nous pouvons l'utiliser pour créer des applications Web à part entière. Une fois que nous avons créé une application Web à l'aide de bibliothèques et de cadres tels que Flask, nous devons l'héberger sur un serveur et l'exposer au public. Ce tutoriel explique comment héberger votre application Web sur un serveur exécutant Nginx à l'aide de Gunicorn. Avant de commencer avec Flask et Gunicorn, assurez-vous de répondre aux exigences suivantes:
  • Un serveur avec un accès SSH
  • Serveur Web Nginx fonctionnant sur le serveur (installation couverte)
  • Python
  • Vous êtes un utilisateur sudo.

Configuration du serveur

Laissez-nous maintenant à définir l'environnement du serveur que nous allons utiliser pour héberger notre serveur. Ce tutoriel utilise le serveur Ubuntu. Commencez par mettre à jour les référentiels et installer python3 et pip.

Mise à jour Sudo apt-get
Sudo apt-get upgrade -y
sudo apt-get install python3 python3-pip -y

Ensuite, nous devons créer un répertoire pour stocker le projet.

sudo mkdir / var / www / application
CD / var / www / application

Changer la propriété et les autorisations du répertoire:

sudo chown -r www-data: www-data / var / www / application /

Ensuite, installez les packages à l'aide d'APT (Flask et Gunicorn)

sudo apt-get install python3-flask python3-gunicorn

Laissez-nous maintenant à initialiser une application Flask. Commencez par créer le principal.py dénouagne l'application et WSGI.py, qui fera fonctionner l'application.

Sudo Touch Main.py wsgi.py

Modifier le principal.fichier py et configurer votre application Flask et tous les itinéraires. Étant donné que ce tutoriel n'est pas un guide de flacon, nous organiserons un itinéraire de base et un message Hello World.

De Flask Import Flask
app = flacon (__ name__)
@app.itinéraire("/")
def home ():
retour "

Nginx et Gunicorn

"

Modifier le WSGI.fichier py et ajouter le code pour importer l'application, et exécuter comme:

à partir de l'application principale d'importation
Si __name__ == "__main__":
appliquer.courir (debug = true)

Enfin, testez s'il est opérationnel en appelant Flask comme:

$ FLASK RUN
* Environnement: production
Avertissement: il s'agit d'un serveur de développement. Ne l'utilisez pas dans un déploiement de production.
Utilisez plutôt un serveur WSGI de production.
* Mode de débogage: off
* Courir sur http: // 127.0.0.1: 5000 / (Appuyez sur Ctrl + C pour arrêter)

Essayez d'accéder à l'application sur http: // localhost: 5000.

Configuration de Gunicorn

Une fois notre application en cours d'exécution, nous pouvons utiliser Gunicorn pour tester l'application à l'aide des commandes:

$ sudo gunicorn - Travailleurs 5 WSGI: App
[2021-03-19 09:19:34 +0000] [14047] [info] Démarrage de Gunicorn 20.0.4
[2021-03-19 09:19:34 +0000] [14047] [Info] Écoute à: http: // 127.0.0.1: 8000 (14047)
[2021-03-19 09:19:34 +0000] [14047] [Info] Utilisation du travailleur: Sync
[2021-03-19 09:19:34 +0000] [14049] [Info] Le travailleur de démarrage avec PID: 14049
[2021-03-19 09:19:34 +0000] [14050] [Info] Le travailleur de démarrage avec PID: 14050
[2021-03-19 09:19:34 +0000] [14051] [Info] Le travailleur de démarrage avec PID: 14051
[2021-03-19 09:19:34 +0000] [14052] [Info] Le travailleur de démarrage avec PID: 14052
[2021-03-19 09:19:35 +0000] [14053] [Info] Le travailleur de démarrage avec PID: 14053

Les commandes ci-dessus exécutent l'application Flask à l'aide de Gunicorn en utilisant le nombre spécifié de travailleurs. Nous appelons ensuite le fichier wsgi: application, qui est le fichier et l'instance de l'application à exécuter.

Une fois que l'application est en cours d'exécution à l'aide de Gunicorn, appuyez sur Ctrl + C pour arrêter le serveur et configurer Nginx.

Utilisez les commandes ci-dessous pour installer et exécuter nginx.

sudo apt-get install nginx -y
sudo systemctl start nginx
sudo systemctl activer nginx

L'étape suivante consiste à modifier la configuration Nginx dans le répertoire compatible sur les sites et à ajouter le bloc serveur. Considérez la configuration suivante. Changer l'application au nom de votre projet.

sudo nano / etc / nginx / sites-disponible / application.confli
serveur
Écoutez 80;
Application server_name;
Access_log / var / log / nginx / application.accès.enregistrer;
error_log / var / log / nginx / application.erreur.enregistrer;
emplacement /
inclure proxy_params;
proxy_pass http: // unix: / var / www / application / application.chaussette;

Procédez pour créer un lien vers le répertoire activé par le site pour activer le site Web.

sudo ln -s / etc / nginx / sites-disponible / application.conf / etc / nginx / sites compatible /

Redémarrez maintenant le service Nginx comme:

sudo systemctl redémarrer nginx

Ensuite, nous devons créer un fichier unitaire Systemd pour servir l'application.

Sudo Nano / etc / Systemd / System / Application.service
[Unité]
Description = application.Service - Une application Flask fonctionne avec Gunicorn.
After = réseau.cible
[Service]
Utilisateur = www-data
Groupe = www-data
WorkingDirectory = / var / www / application /
Execstart = / usr / bin / gunicorn --workers 3 --bind Unix: / var / www / application.chaussette WSGI: App
[Installer]
Recherché = multi-utilisateurs.cible

Enfin, enregistrez le fichier unitaire, puis activez et rechargez le démon.

Application de redémarrage de Sudo SystemCTL.service
Sudo Systemctl Daemon-Reload

Vous pouvez désormais accéder à l'application à l'aide de l'adresse IP ou de l'adresse spécifiée dans le fichier de configuration Nginx. Vous devrez peut-être l'ajouter au fichier de l'hôte.

Curl http: // Application
Http / 1.1 200 OK
Serveur: werkzug / 0.16.1 Python / 3.8.5)
Date: ven, 19 mars 2021 10:00:39 GMT
Type de contenu: texte / html
Longueur du contenu: 25
Dernier mode: ven, 19 mars 2021 09:22:47 GMT

Conclusion

Ce tutoriel a expliqué comment configurer une application Python Flask et la servir sur Nginx en utilisant Gunicorn. Considérez la documentation individuelle pour en savoir plus sur les services discutés dans ce tutoriel.