Je souhaite effectuer un déploiement Flask + Nginx + Gunicorn. J'ai installé et suis en train de lancer Nginx et je lance gunicorn comme décrit dans la documentation:
gunicorn app:app
Mais quand je me déconnecte du serveur, le processus gunicorn s'achève? Quelle est la bonne façon de s’assurer que Nginx reste connecté et redémarre en cas de blocage?
Je chercherais quelque chose comme Superviseur .
Utilisez l'option --daemon
lors de l'exécution de gunicorn. Exemple:
gunicorn grand56.wsgi:application --name grand56 --workers 3 --user=root --group=root --bind=127.0.0.1:1001 --daemon
Il est important de noter que lorsque vous démarrez le processus à partir de la ligne de commande, il est un enfant de votre processus terminal (c'est-à-dire un enfant de bash
). Lorsque vous vous déconnectez du serveur, votre processus bash
est terminé, de même que tous ses enfants.
Vous voudrez utiliser n'importe quel système en place pour gérer nginx et gérer gunicorn (des scripts init.d
ou Upstart aux moniteurs de processus d'application spécialisés tels que Monit, Supervisor, Bluepill, Foreman, etc.).
Faites attention à Sean.
Cependant, vous pouvez le lancer à la volée comme ceci:
Nohup gunicorn -c config.py </dev/null >/dev/null 2>&1
et il ne dépendra plus de la connexion du terminal. Vous pouvez remplacer >/dev/null
par quelque chose comme >somelogfile
si vous souhaitez enregistrer une sortie.
Mais pour une utilisation en production, il est préférable de l'intégrer à l'outil que vous utilisez pour gérer les processus.
utilisez - daemon à la commande obligatoire de gunicorn. ex:
gunicorn --bind 0.0.0.0:8001 your_project.wsgi --daemon
Essaye ça:
Nohup gunicorn app:app &
J'ai essayé l'option systemd et cela a bien fonctionné, le lien ci-dessous a ma réponse complète et toutes les étapes pour invoquer votre application en tant que service gunicorn.
https://askubuntu.com/questions/930589/running-upstart-script-on-17-04/1010398#1010398
Courir câlin api comme ça.
--daemon doit garder le processus en arrière-plan.
--access-logfile pour conserver le journal des demandes
--bind = <ip>: <port> L'adresse IP permettra l'accès depuis d'autres systèmes (si un proxy n'est pas nécessaire).
gunicorn <pyscirpt_name>:__hug_wsgi__ --name caassist -w 4 --access-logfile /var/logs/gunicorn/gunicorn_access.log --daemon --bind=<ip>:<port>