{"id":9174,"date":"2024-08-30T14:24:36","date_gmt":"2024-08-30T14:24:36","guid":{"rendered":"https:\/\/www.webhi.com\/how-to\/?p=9174"},"modified":"2024-08-30T14:24:39","modified_gmt":"2024-08-30T14:24:39","slug":"deployer-application-flask-avec-gunicorn-nginx-ubuntu","status":"publish","type":"post","link":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/","title":{"rendered":"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr.jpg\" alt=\"D\u00e9ployer Application Flask avec Gunicorn et Nginx Ubuntu Debian\" class=\"wp-image-9186\" srcset=\"https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr.jpg 1200w, https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr-300x169.jpg 300w, https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr-1024x576.jpg 1024w, https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr-768x432.jpg 768w, https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr-150x84.jpg 150w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Le d\u00e9ploiement d&#8217;une application Flask est une \u00e9tape cruciale pour rendre votre application web accessible au monde entier. Bien que Flask soit fourni avec un serveur de d\u00e9veloppement int\u00e9gr\u00e9, ce dernier n&#8217;est pas adapt\u00e9 pour un environnement de production. Pour une configuration robuste, \u00e9volutive et pr\u00eate pour la production, vous aurez besoin d&#8217;une combinaison de Gunicorn, Nginx et Ubuntu. Ce guide vous guidera \u00e0 travers le processus de d\u00e9ploiement de votre application Flask avec Gunicorn et Nginx sur un serveur Ubuntu.<\/p>\n\n\n\n<p>D\u00e9ployer des applications Flask sur un serveur peut sembler difficile si vous d\u00e9butez dans le d\u00e9veloppement backend, mais ce guide complet d\u00e9taillera chaque \u00e9tape. \u00c0 la fin, vous aurez une application Flask en cours d&#8217;ex\u00e9cution sur Ubuntu, servie par Gunicorn et Nginx.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"comprendre-la-pile-de-d%C3%A9ploiement--flask-gunicorn-et-nginx\"><strong>Comprendre la Pile de D\u00e9ploiement : Flask, Gunicorn et Nginx<\/strong><\/h2>\n\n\n\n<p>Avant de plonger dans le processus de d\u00e9ploiement, il est important de comprendre les outils que nous utiliserons.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"flask--le-micro-framework-web\"><strong>Flask : Le Micro Framework Web<\/strong><\/h3>\n\n\n\n<p>Flask est un framework web l\u00e9ger \u00e9crit en Python. Il est con\u00e7u pour \u00eatre simple, flexible et facile \u00e0 utiliser, ce qui en fait un choix populaire pour la cr\u00e9ation d&#8217;applications web. Cependant, le serveur int\u00e9gr\u00e9 de Flask n&#8217;est pas adapt\u00e9 aux environnements de production car il ne peut pas g\u00e9rer plus d&#8217;une requ\u00eate \u00e0 la fois.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"gunicorn--le-serveur-http-wsgi-pour-python\"><strong>Gunicorn : Le Serveur HTTP WSGI pour Python<\/strong><\/h3>\n\n\n\n<p>Gunicorn (Green Unicorn) est un serveur HTTP WSGI pour Python qui sert votre application Flask. Il utilise un mod\u00e8le de processus pr\u00e9-fork, ce qui signifie qu&#8217;il cr\u00e9e plusieurs processus de travail pour g\u00e9rer plusieurs requ\u00eates simultan\u00e9ment. Cela en fait une solution id\u00e9ale pour servir des applications Flask en production. Gunicorn se situe entre votre application Flask et le serveur web (Nginx dans ce cas), prenant en charge la gestion des requ\u00eates et la r\u00e9ponse.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"nginx--le-serveur-web-et-proxy-inverse\"><strong>Nginx : Le Serveur Web et Proxy Inverse<\/strong><\/h3>\n\n\n\n<p>Nginx est un serveur web performant qui agit \u00e9galement comme un proxy inverse, un \u00e9quilibreur de charge et un cache HTTP. Dans cette configuration, Nginx se situera devant Gunicorn, g\u00e9rant les connexions des clients et le contenu statique, puis transmettant les requ\u00eates dynamiques \u00e0 Gunicorn. Cette s\u00e9paration des pr\u00e9occupations am\u00e9liore la s\u00e9curit\u00e9, les performances et l&#8217;\u00e9volutivit\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"configurer-le-serveur-ubuntu\"><strong>Configurer le Serveur Ubuntu<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configuration-initiale-du-serveur\"><strong>Configuration Initiale du Serveur<\/strong><\/h3>\n\n\n\n<p>Tout d&#8217;abord, vous avez besoin d&#8217;un acc\u00e8s \u00e0 un serveur Ubuntu. Il peut s&#8217;agir d&#8217;une machine physique, d&#8217;une machine virtuelle ou d&#8217;une instance cloud de fournisseurs comme AWS, DigitalOcean ou Google Cloud Platform.<\/p>\n\n\n\n<ol>\n<li><strong>Connectez-vous \u00e0 votre serveur :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ ssh nom_utilisateur@adresse_ip_serveur<\/code><\/pre>\n\n\n\n<ol start=\"2\">\n<li><strong>Mettez \u00e0 jour l&#8217;index de vos paquets :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt update<\/code><\/pre>\n\n\n\n<ol start=\"3\">\n<li><strong>Mettez \u00e0 jour les paquets install\u00e9s :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt upgrade<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installation-des-paquets-n%C3%A9cessaires\"><strong>Installation des Paquets N\u00e9cessaires<\/strong><\/h3>\n\n\n\n<p>Vous aurez besoin de Python, pip et virtualenv pour ex\u00e9cuter votre application Flask.<\/p>\n\n\n\n<ol>\n<li><strong>Installez Python et pip :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt install python3 python3-pip<\/code><\/pre>\n\n\n\n<ol start=\"2\">\n<li><strong>Installez virtualenv :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo pip3 install virtualenv<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pr%C3%A9parer-votre-application-flask\"><strong>Pr\u00e9parer Votre Application Flask<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cr%C3%A9er-une-application-flask\"><strong>Cr\u00e9er une Application Flask<\/strong><\/h3>\n\n\n\n<p>Si vous n&#8217;avez pas encore d&#8217;application Flask, vous pouvez en cr\u00e9er une simple. Voici un exemple :<\/p>\n\n\n\n<ol>\n<li><strong>Cr\u00e9ez un r\u00e9pertoire pour votre projet :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ mkdir ~\/monappflask\n$ cd ~\/monappflask<\/code><\/pre>\n\n\n\n<ol start=\"2\">\n<li><strong>Cr\u00e9ez un environnement virtuel :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ virtualenv venv<\/code><\/pre>\n\n\n\n<ol start=\"3\">\n<li><strong>Activez l&#8217;environnement virtuel :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ source venv\/bin\/activate<\/code><\/pre>\n\n\n\n<ol start=\"4\">\n<li><strong>Installez Flask :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ pip install Flask<\/code><\/pre>\n\n\n\n<ol start=\"5\">\n<li><strong>Cr\u00e9ez une simple application Flask :<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Cr\u00e9ez un fichier nomm\u00e9&nbsp;<code>app.py<\/code>&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">from flask import Flask\n\napp = Flask(__name__)\n\n@app.route('\/')\ndef hello_world():\n      return 'Bonjour, Monde !'\n\nif __name__ == '__main__':\n      app.run()<\/code><\/pre>\n\n\n\n<ol start=\"6\">\n<li><strong>Testez votre application :<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Ex\u00e9cutez l&#8217;application pour vous assurer que tout fonctionne :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ python app.py<\/code><\/pre>\n\n\n\n<p>Vous devriez voir une sortie indiquant que le serveur de d\u00e9veloppement Flask est en cours d&#8217;ex\u00e9cution. Visitez&nbsp;<code>http:\/\/adresse_ip_serveur:5000<\/code>&nbsp;dans votre navigateur, et vous devriez voir &#8220;Bonjour, Monde !&#8221;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"structurer-lapplication-flask\"><strong>Structurer l&#8217;Application Flask<\/strong><\/h3>\n\n\n\n<p>Dans un environnement de production, il est recommand\u00e9 de structurer votre application Flask de mani\u00e8re modulaire. Voici un exemple simple de la fa\u00e7on dont vous pourriez structurer votre application :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"basic\" class=\"language-basic\">monappflask\/\n\u2502\n\u251c\u2500\u2500 app\/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 routes.py\n\u2502   \u251c\u2500\u2500 models.py\n\u2502   \u2514\u2500\u2500 templates\/\n\u2502\n\u251c\u2500\u2500 venv\/\n\u251c\u2500\u2500 config.py\n\u251c\u2500\u2500 requirements.txt\n\u2514\u2500\u2500 wsgi.py<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cr%C3%A9er-un-point-dentr%C3%A9e-wsgi\"><strong>Cr\u00e9er un Point d&#8217;Entr\u00e9e WSGI<\/strong><\/h3>\n\n\n\n<p>Gunicorn a besoin d&#8217;un point d&#8217;entr\u00e9e WSGI pour servir votre application Flask. Il s&#8217;agit g\u00e9n\u00e9ralement d&#8217;un fichier nomm\u00e9&nbsp;<code>wsgi.py<\/code>&nbsp;:<\/p>\n\n\n\n<ol>\n<li><strong>Cr\u00e9ez le fichier&nbsp;<code>wsgi.py<\/code>&nbsp;:<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">from app import app\n\nif __name__ == \"__main__\":\n      app.run()<\/code><\/pre>\n\n\n\n<ol start=\"2\">\n<li><strong>Installez les d\u00e9pendances suppl\u00e9mentaires :<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Si votre application a des d\u00e9pendances suppl\u00e9mentaires, listez-les dans un fichier&nbsp;<code>requirements.txt<\/code>&nbsp;et installez-les :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ pip freeze &gt; requirements.txt\n$ pip install -r requirements.txt<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"d%C3%A9ployer-flask-avec-gunicorn\"><strong>D\u00e9ployer Flask avec Gunicorn<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installer-gunicorn\"><strong>Installer Gunicorn<\/strong><\/h3>\n\n\n\n<p>Gunicorn est un paquet Python, il peut donc \u00eatre install\u00e9 via pip.<\/p>\n\n\n\n<ol>\n<li><strong>Installez Gunicorn :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ pip install gunicorn<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ex%C3%A9cuter-gunicorn\"><strong>Ex\u00e9cuter Gunicorn<\/strong><\/h3>\n\n\n\n<p>Pour tester que Gunicorn peut servir votre application, ex\u00e9cutez la commande suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ gunicorn --bind 0.0.0.0:8000 wsgi:app<\/code><\/pre>\n\n\n\n<p>Cette commande indique \u00e0 Gunicorn de servir votre application Flask en utilisant le fichier&nbsp;<code>wsgi.py<\/code>, en se liant au port 8000. Vous devriez pouvoir acc\u00e9der \u00e0 votre application \u00e0&nbsp;<code>http:\/\/adresse_ip_serveur:8000<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configurer-gunicorn-pour-la-production\"><strong>Configurer Gunicorn pour la Production<\/strong><\/h3>\n\n\n\n<p>Pour la production, vous voudrez g\u00e9n\u00e9ralement ex\u00e9cuter Gunicorn avec plusieurs processus de travail pour g\u00e9rer plusieurs requ\u00eates simultan\u00e9ment.<\/p>\n\n\n\n<ol>\n<li><strong>Cr\u00e9ez un fichier de service systemd pour Gunicorn :<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Cela vous permettra de g\u00e9rer Gunicorn avec systemd, le syst\u00e8me d&#8217;init utilis\u00e9 par Ubuntu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo nano \/etc\/systemd\/system\/gunicorn.service<\/code><\/pre>\n\n\n\n<p>Ajoutez le contenu suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><strong>[Unit]<\/strong>\nDescription=Instance Gunicorn pour servir monappflask\nAfter=network.target\n\n<strong>[Service]<\/strong>\nUser=nom_utilisateur\nGroup=www-data\nWorkingDirectory=\/home\/nom_utilisateur\/monappflask\nEnvironment=\"PATH=\/home\/nom_utilisateur\/monappflask\/venv\/bin\"\nExecStart=\/home\/nom_utilisateur\/monappflask\/venv\/bin\/gunicorn --workers 3 --bind unix:monappflask.sock -m 007 wsgi:app\n\n<strong>[Install]<\/strong>\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>Remplacez&nbsp;<code>nom_utilisateur<\/code>&nbsp;par votre nom d&#8217;utilisateur r\u00e9el.<\/p>\n\n\n\n<ol start=\"2\">\n<li><strong>D\u00e9marrez et activez le service Gunicorn :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo systemctl start gunicorn\n$ sudo systemctl enable gunicorn<\/code><\/pre>\n\n\n\n<ol start=\"3\">\n<li><strong>V\u00e9rifiez l&#8217;\u00e9tat du service Gunicorn :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo systemctl status gunicorn<\/code><\/pre>\n\n\n\n<p>Si tout est configur\u00e9 correctement, Gunicorn devrait \u00eatre en cours d&#8217;ex\u00e9cution et servir votre application Flask.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"configurer-nginx\"><strong>Configurer Nginx<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installer-nginx\"><strong>Installer Nginx<\/strong><\/h3>\n\n\n\n<p>Si vous n&#8217;avez pas Nginx install\u00e9, vous pouvez l&#8217;installer en utilisant la commande suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt install nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configurer-nginx-comme-proxy-inverse\"><strong>Configurer Nginx comme Proxy Inverse<\/strong><\/h3>\n\n\n\n<p>Nginx agira comme un proxy inverse, en transmettant les requ\u00eates \u00e0 Gun<\/p>\n\n\n\n<p>icorn et en servant les fichiers statiques directement.<\/p>\n\n\n\n<ol>\n<li><strong>Cr\u00e9ez un nouveau bloc serveur :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo nano \/etc\/nginx\/sites-available\/monappflask<\/code><\/pre>\n\n\n\n<p>Ajoutez le contenu suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"nginx\" class=\"language-nginx\"><strong>server<\/strong> {\n      listen 80;\n      server_name votre_domaine_ou_IP;\n\n      <strong>location<\/strong> \/ {\n         include proxy_params;\n         proxy_pass http:\/\/unix:\/home\/nom_utilisateur\/monappflask\/monappflask.sock;\n      }\n\n      <strong>location<\/strong> \/static\/ {\n         alias \/home\/nom_utilisateur\/monappflask\/app\/static\/;\n      }\n\n      error_log \/home\/nom_utilisateur\/monappflask\/error.log;\n      access_log \/home\/nom_utilisateur\/monappflask\/access.log;\n}<\/code><\/pre>\n\n\n\n<p>Remplacez&nbsp;<code>nom_utilisateur<\/code>&nbsp;par votre nom d&#8217;utilisateur r\u00e9el et&nbsp;<code>votre_domaine_ou_IP<\/code>&nbsp;par l&#8217;adresse IP ou le nom de domaine de votre serveur.<\/p>\n\n\n\n<ol start=\"2\">\n<li><strong>Activez le nouveau bloc serveur :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo ln -s \/etc\/nginx\/sites-available\/monappflask \/etc\/nginx\/sites-enabled<\/code><\/pre>\n\n\n\n<ol start=\"3\">\n<li><strong>Testez la configuration de Nginx :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo nginx -t<\/code><\/pre>\n\n\n\n<p>Si le test est r\u00e9ussi, vous devriez voir un message indiquant que la configuration est correcte.<\/p>\n\n\n\n<ol start=\"4\">\n<li><strong>Red\u00e9marrez Nginx pour appliquer les modifications :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo systemctl restart nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"autoriser-nginx-%C3%A0-travers-le-pare-feu\"><strong>Autoriser Nginx \u00e0 Travers le Pare-feu<\/strong><\/h3>\n\n\n\n<p>Si vous utilisez UFW (Uncomplicated Firewall), vous devez autoriser Nginx \u00e0 travers le pare-feu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo ufw allow 'Nginx Full'<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"s%C3%A9curiser-lapplication-avec-ssl\"><strong>S\u00e9curiser l&#8217;Application avec SSL<\/strong><\/h2>\n\n\n\n<p>Pour s\u00e9curiser votre application, vous pouvez configurer SSL en utilisant Let&#8217;s Encrypt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installer-certbot\"><strong>Installer Certbot<\/strong><\/h3>\n\n\n\n<p>Certbot est un outil pour automatiser le processus d&#8217;obtention et de renouvellement des certificats SSL.<\/p>\n\n\n\n<ol>\n<li><strong>Installez Certbot et le plugin Nginx :<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt install certbot python3-certbot-nginx<\/code><\/pre>\n\n\n\n<ol start=\"2\">\n<li><strong>Obtenez un certificat SSL :<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Ex\u00e9cutez la commande suivante, en rempla\u00e7ant&nbsp;<code>votre_domaine_ou_IP<\/code>&nbsp;par votre domaine ou adresse IP :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo certbot --nginx -d votre_domaine_ou_IP<\/code><\/pre>\n\n\n\n<ol start=\"3\">\n<li><strong>V\u00e9rifiez le renouvellement du certificat SSL :<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Certbot renouvellera automatiquement vos certificats SSL. Vous pouvez simuler un renouvellement pour v\u00e9rifier si cela fonctionne :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo certbot renew --dry-run<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"surveiller-et-consigner\"><strong>Surveiller et Consigner<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"logs-de-gunicorn\"><strong>Logs de Gunicorn<\/strong><\/h3>\n\n\n\n<p>Gunicorn consigne sa sortie dans le journal systemd. Pour voir les logs :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo journalctl -u gunicorn<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"logs-de-nginx\"><strong>Logs de Nginx<\/strong><\/h3>\n\n\n\n<p>Nginx consigne les requ\u00eates et les erreurs dans les fichiers journaux situ\u00e9s dans&nbsp;<code>\/var\/log\/nginx\/<\/code>. Vous pouvez les consulter avec :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo tail -f \/var\/log\/nginx\/access.log\n$ sudo tail -f \/var\/log\/nginx\/error.log<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"d%C3%A9pannage-des-probl%C3%A8mes-courants\"><strong>D\u00e9pannage des Probl\u00e8mes Courants<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"gunicorn-%C3%A9choue-%C3%A0-d%C3%A9marrer\"><strong>Gunicorn \u00c9choue \u00e0 D\u00e9marrer<\/strong><\/h3>\n\n\n\n<ul>\n<li><strong>V\u00e9rifiez l&#8217;\u00e9tat du service Gunicorn :<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo systemctl status gunicorn<\/code><\/pre>\n\n\n\n<p>Recherchez tout message d&#8217;erreur dans la sortie.<\/p>\n\n\n\n<ul>\n<li><strong>V\u00e9rifiez les logs de Gunicorn :<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo journalctl -u gunicorn<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"nginx-%C3%A9choue-%C3%A0-d%C3%A9marrer-ou-%C3%A0-recharger\"><strong>Nginx \u00c9choue \u00e0 D\u00e9marrer ou \u00e0 Recharger<\/strong><\/h3>\n\n\n\n<ul>\n<li><strong>Testez la configuration de Nginx :<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo nginx -t<\/code><\/pre>\n\n\n\n<p>Cette commande mettra en \u00e9vidence toute erreur de syntaxe dans vos fichiers de configuration.<\/p>\n\n\n\n<ul>\n<li><strong>V\u00e9rifiez les logs de Nginx :<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo tail -f \/var\/log\/nginx\/error.log<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"automatiser-le-d%C3%A9ploiement-avec-une-pipeline-cicd\"><strong>Automatiser le D\u00e9ploiement avec une Pipeline CI\/CD<\/strong><\/h2>\n\n\n\n<p>Pour les grandes applications ou les applications fr\u00e9quemment mises \u00e0 jour, vous pourriez envisager d&#8217;automatiser le processus de d\u00e9ploiement en utilisant une pipeline d&#8217;int\u00e9gration continue\/livraison continue (CI\/CD). Cela implique de configurer un service tel que Jenkins, GitLab CI ou GitHub Actions pour d\u00e9ployer automatiquement votre application Flask \u00e0 chaque fois que vous poussez des modifications vers un d\u00e9p\u00f4t.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mettre-en-place-une-pipeline-cicd-basique\"><strong>Mettre en Place une Pipeline CI\/CD Basique<\/strong><\/h3>\n\n\n\n<ol>\n<li><strong>Choisissez un outil CI\/CD<\/strong>&nbsp;: Jenkins, GitLab CI, GitHub Actions, CircleCI, etc.<\/li>\n\n\n\n<li><strong>Configurez votre pipeline<\/strong>&nbsp;: D\u00e9finissez vos \u00e9tapes de build, test et d\u00e9ploiement.<\/li>\n\n\n\n<li><strong>Int\u00e9grez avec votre syst\u00e8me de contr\u00f4le de version<\/strong>&nbsp;: D\u00e9clenchez automatiquement les d\u00e9ploiements lorsque des modifications sont pouss\u00e9es vers votre d\u00e9p\u00f4t.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"d%C3%A9ployer-avec-les-hooks-git\"><strong>D\u00e9ployer avec les Hooks Git<\/strong><\/h3>\n\n\n\n<p>Si vous pr\u00e9f\u00e9rez une approche plus simple, vous pouvez utiliser les hooks Git pour d\u00e9clencher des scripts de d\u00e9ploiement chaque fois que vous poussez des modifications vers votre serveur.<\/p>\n\n\n\n<ol>\n<li><strong>Cr\u00e9ez un hook post-receive sur votre serveur<\/strong>&nbsp;:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ mkdir -p ~\/monappflask.git\/hooks\n$ nano ~\/monappflask.git\/hooks\/post-receive<\/code><\/pre>\n\n\n\n<p>Ajoutez le contenu suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">#!\/bin\/bash\ngit --work-tree=\/home\/nom_utilisateur\/monappflask --git-dir=\/home\/nom_utilisateur\/monappflask.git checkout -f\nsource \/home\/nom_utilisateur\/monappflask\/venv\/bin\/activate\npip install -r \/home\/nom_utilisateur\/monappflask\/requirements.txt\nsudo systemctl restart gunicorn<\/code><\/pre>\n\n\n\n<p>Rendez le hook ex\u00e9cutable :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ chmod +x ~\/monappflask.git\/hooks\/post-receive<\/code><\/pre>\n\n\n\n<ol start=\"2\">\n<li><strong>Poussez les mises \u00e0 jour vers votre serveur<\/strong>&nbsp;:<\/li>\n<\/ol>\n\n\n\n<p>Depuis votre machine locale, ajoutez le d\u00e9p\u00f4t distant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ git remote add production ssh:\/\/nom_utilisateur@adresse_ip_serveur\/home\/nom_utilisateur\/monappflask.git<\/code><\/pre>\n\n\n\n<p>Poussez les modifications vers le serveur de production :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ git push production master<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faqs\"><strong>FAQs<\/strong><\/h2>\n\n\n\n<p><strong>Quel est le r\u00f4le de Gunicorn dans le d\u00e9ploiement de Flask ?<\/strong><\/p>\n\n\n\n<p>Gunicorn sert de serveur HTTP WSGI qui g\u00e8re les requ\u00eates entrantes vers votre application Flask. Il cr\u00e9e plusieurs processus de travail pour g\u00e9rer ces requ\u00eates simultan\u00e9ment, ce qui en fait un composant essentiel dans un environnement de production.<\/p>\n\n\n\n<p><strong>Pourquoi utilise-t-on Nginx comme proxy inverse ?<\/strong><\/p>\n\n\n\n<p>Nginx est utilis\u00e9 comme proxy inverse pour g\u00e9rer les connexions des clients, g\u00e9rer les fichiers statiques, et transmettre les requ\u00eates dynamiques \u00e0 Gunicorn. Cela am\u00e9liore la s\u00e9curit\u00e9, les performances et l&#8217;\u00e9volutivit\u00e9 de votre application.<\/p>\n\n\n\n<p><strong>Comment puis-je m&#8217;assurer que mon application Flask est s\u00e9curis\u00e9e ?<\/strong><\/p>\n\n\n\n<p>S\u00e9curiser votre application Flask implique d&#8217;utiliser des certificats SSL\/TLS, de forcer l&#8217;utilisation de HTTPS, de d\u00e9finir des permissions appropri\u00e9es, et de mettre \u00e0 jour r\u00e9guli\u00e8rement votre serveur et les d\u00e9pendances de votre application.<\/p>\n\n\n\n<p><strong>Puis-je utiliser d&#8217;autres serveurs web \u00e0 la place de Nginx ?<\/strong><\/p>\n\n\n\n<p>Oui, vous pouvez utiliser d&#8217;autres serveurs web comme Apache. Cependant, Nginx est pr\u00e9f\u00e9r\u00e9 pour ses performances, sa simplicit\u00e9, et sa facilit\u00e9 d&#8217;utilisation en tant que proxy inverse.<\/p>\n\n\n\n<p><strong>Que dois-je faire si mon application plante apr\u00e8s le d\u00e9ploiement ?<\/strong><\/p>\n\n\n\n<p>V\u00e9rifiez les logs de Gunicorn et Nginx pour identifier la cause du plantage. Assurez-vous que votre application est correctement configur\u00e9e et que toutes les d\u00e9pendances sont install\u00e9es. V\u00e9rifiez \u00e9galement s&#8217;il n&#8217;y a pas d&#8217;erreurs de syntaxe dans vos fichiers de configuration.<\/p>\n\n\n\n<p><strong>Comment puis-je faire \u00e9voluer mon application Flask ?<\/strong><\/p>\n\n\n\n<p>Vous pouvez faire \u00e9voluer votre application Flask en augmentant le nombre de travailleurs Gunicorn, en \u00e9quilibrant la charge sur plusieurs serveurs, et en optimisant votre code et vos requ\u00eates de base de donn\u00e9es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>Le d\u00e9ploiement d&#8217;une application Flask avec Gunicorn et Nginx sur Ubuntu est un moyen puissant de s&#8217;assurer que votre application est robuste, \u00e9volutive et s\u00e9curis\u00e9e. En suivant les \u00e9tapes d\u00e9crites dans ce guide, vous pouvez d\u00e9ployer votre application Flask en toute confiance dans un environnement de production. De la configuration de votre serveur \u00e0 la s\u00e9curisation de votre site avec SSL en passant par le d\u00e9pannage des probl\u00e8mes courants, ce tutoriel vous fournit tout ce dont vous avez besoin pour r\u00e9ussir.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le d\u00e9ploiement d&#8217;une application Flask est une \u00e9tape cruciale pour rendre votre application web accessible au monde entier. Bien que Flask soit fourni avec un serveur de d\u00e9veloppement int\u00e9gr\u00e9, ce dernier n&#8217;est pas adapt\u00e9 pour un environnement de production. Pour une configuration robuste, \u00e9volutive et pr\u00eate pour la production, vous aurez besoin d&#8217;une combinaison de ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\" title=\"read more...\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[190,41],"tags":[],"yoast_head":"\n<title>D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu - WebHi Tutorials &amp; Documentations<\/title>\n<meta name=\"description\" content=\"D\u00e9ployer une application Flask avec Gunicorn et Nginx sur Ubuntu dans ce guide d\u00e9taill\u00e9 \u00e9tape par \u00e9tape.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu - WebHi Tutorials &amp; Documentations\" \/>\n<meta property=\"og:description\" content=\"D\u00e9ployer une application Flask avec Gunicorn et Nginx sur Ubuntu dans ce guide d\u00e9taill\u00e9 \u00e9tape par \u00e9tape.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\" \/>\n<meta property=\"og:site_name\" content=\"WebHi Tutorials &amp; Documentations\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webhi.technology\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-30T14:24:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-30T14:24:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr.jpg\" \/>\n<meta name=\"author\" content=\"webhi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@WebHiTechnology\" \/>\n<meta name=\"twitter:site\" content=\"@WebHiTechnology\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"webhi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\"},\"author\":{\"name\":\"webhi\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/#\/schema\/person\/b31e76e2311cdc0bb90f5e2733059a54\"},\"headline\":\"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu\",\"datePublished\":\"2024-08-30T14:24:36+00:00\",\"dateModified\":\"2024-08-30T14:24:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\"},\"wordCount\":1749,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webhi.com\/how-to\/#organization\"},\"articleSection\":[\"CMS &amp; D\u00e9veloppement Web\",\"Serveurs web\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\",\"url\":\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\",\"name\":\"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu - WebHi Tutorials &amp; Documentations\",\"isPartOf\":{\"@id\":\"https:\/\/www.webhi.com\/how-to\/#website\"},\"datePublished\":\"2024-08-30T14:24:36+00:00\",\"dateModified\":\"2024-08-30T14:24:39+00:00\",\"description\":\"D\u00e9ployer une application Flask avec Gunicorn et Nginx sur Ubuntu dans ce guide d\u00e9taill\u00e9 \u00e9tape par \u00e9tape.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webhi.com\/how-to\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/#website\",\"url\":\"https:\/\/www.webhi.com\/how-to\/\",\"name\":\"WebHi Tutorials &amp; Documentations\",\"description\":\"System administration and knowledge base\",\"publisher\":{\"@id\":\"https:\/\/www.webhi.com\/how-to\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webhi.com\/how-to\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/#organization\",\"name\":\"WebHi Technology\",\"url\":\"https:\/\/www.webhi.com\/how-to\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webhi.com\/how-to\/gilrogre\/2022\/07\/logo.png\",\"contentUrl\":\"https:\/\/www.webhi.com\/how-to\/gilrogre\/2022\/07\/logo.png\",\"width\":288,\"height\":95,\"caption\":\"WebHi Technology\"},\"image\":{\"@id\":\"https:\/\/www.webhi.com\/how-to\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webhi.technology\",\"https:\/\/twitter.com\/WebHiTechnology\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/#\/schema\/person\/b31e76e2311cdc0bb90f5e2733059a54\",\"name\":\"webhi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webhi.com\/how-to\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.webhi.com\/how-to\/ahuphiph\/litespeed\/avatar\/e20da107d0f4c765ead2eef88ad019d8.jpg?ver=1781819544\",\"contentUrl\":\"https:\/\/www.webhi.com\/how-to\/ahuphiph\/litespeed\/avatar\/e20da107d0f4c765ead2eef88ad019d8.jpg?ver=1781819544\",\"caption\":\"webhi\"},\"sameAs\":[\"https:\/\/www.webhi.com\/how-to\"],\"url\":\"https:\/\/www.webhi.com\/how-to\/author\/webhi\/\"}]}<\/script>\n","yoast_head_json":{"title":"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu - WebHi Tutorials &amp; Documentations","description":"D\u00e9ployer une application Flask avec Gunicorn et Nginx sur Ubuntu dans ce guide d\u00e9taill\u00e9 \u00e9tape par \u00e9tape.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/","og_locale":"en_US","og_type":"article","og_title":"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu - WebHi Tutorials &amp; Documentations","og_description":"D\u00e9ployer une application Flask avec Gunicorn et Nginx sur Ubuntu dans ce guide d\u00e9taill\u00e9 \u00e9tape par \u00e9tape.","og_url":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/","og_site_name":"WebHi Tutorials &amp; Documentations","article_publisher":"https:\/\/www.facebook.com\/webhi.technology","article_published_time":"2024-08-30T14:24:36+00:00","article_modified_time":"2024-08-30T14:24:39+00:00","og_image":[{"url":"https:\/\/www.webhi.com\/how-to\/gilrogre\/2024\/08\/gunicorn_flask_fr.jpg"}],"author":"webhi","twitter_card":"summary_large_image","twitter_creator":"@WebHiTechnology","twitter_site":"@WebHiTechnology","twitter_misc":{"Written by":"webhi","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#article","isPartOf":{"@id":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/"},"author":{"name":"webhi","@id":"https:\/\/www.webhi.com\/how-to\/#\/schema\/person\/b31e76e2311cdc0bb90f5e2733059a54"},"headline":"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu","datePublished":"2024-08-30T14:24:36+00:00","dateModified":"2024-08-30T14:24:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/"},"wordCount":1749,"commentCount":0,"publisher":{"@id":"https:\/\/www.webhi.com\/how-to\/#organization"},"articleSection":["CMS &amp; D\u00e9veloppement Web","Serveurs web"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/","url":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/","name":"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu - WebHi Tutorials &amp; Documentations","isPartOf":{"@id":"https:\/\/www.webhi.com\/how-to\/#website"},"datePublished":"2024-08-30T14:24:36+00:00","dateModified":"2024-08-30T14:24:39+00:00","description":"D\u00e9ployer une application Flask avec Gunicorn et Nginx sur Ubuntu dans ce guide d\u00e9taill\u00e9 \u00e9tape par \u00e9tape.","breadcrumb":{"@id":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.webhi.com\/how-to\/fr\/deployer-application-flask-avec-gunicorn-nginx-ubuntu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webhi.com\/how-to\/"},{"@type":"ListItem","position":2,"name":"D\u00e9ployer une Application Flask avec Gunicorn et Nginx sur Ubuntu"}]},{"@type":"WebSite","@id":"https:\/\/www.webhi.com\/how-to\/#website","url":"https:\/\/www.webhi.com\/how-to\/","name":"WebHi Tutorials &amp; Documentations","description":"System administration and knowledge base","publisher":{"@id":"https:\/\/www.webhi.com\/how-to\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webhi.com\/how-to\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webhi.com\/how-to\/#organization","name":"WebHi Technology","url":"https:\/\/www.webhi.com\/how-to\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webhi.com\/how-to\/#\/schema\/logo\/image\/","url":"https:\/\/www.webhi.com\/how-to\/gilrogre\/2022\/07\/logo.png","contentUrl":"https:\/\/www.webhi.com\/how-to\/gilrogre\/2022\/07\/logo.png","width":288,"height":95,"caption":"WebHi Technology"},"image":{"@id":"https:\/\/www.webhi.com\/how-to\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webhi.technology","https:\/\/twitter.com\/WebHiTechnology"]},{"@type":"Person","@id":"https:\/\/www.webhi.com\/how-to\/#\/schema\/person\/b31e76e2311cdc0bb90f5e2733059a54","name":"webhi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webhi.com\/how-to\/#\/schema\/person\/image\/","url":"https:\/\/www.webhi.com\/how-to\/ahuphiph\/litespeed\/avatar\/e20da107d0f4c765ead2eef88ad019d8.jpg?ver=1781819544","contentUrl":"https:\/\/www.webhi.com\/how-to\/ahuphiph\/litespeed\/avatar\/e20da107d0f4c765ead2eef88ad019d8.jpg?ver=1781819544","caption":"webhi"},"sameAs":["https:\/\/www.webhi.com\/how-to"],"url":"https:\/\/www.webhi.com\/how-to\/author\/webhi\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/posts\/9174"}],"collection":[{"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/comments?post=9174"}],"version-history":[{"count":4,"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/posts\/9174\/revisions"}],"predecessor-version":[{"id":9203,"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/posts\/9174\/revisions\/9203"}],"wp:attachment":[{"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/media?parent=9174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/categories?post=9174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webhi.com\/how-to\/wp-json\/wp\/v2\/tags?post=9174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}