Démarrage du serveur de flacon en arrière-plan
J'ai un flacon d'application que je suis en train de démarrage de la manière suivante:
#phantom.py
__author__ = 'uruddarraju'
from phantom.api.v1 import app
app.run(host='0.0.0.0', port=8080, debug=True)
et lorsque j'exécute ce script, il s'exécute avec succès par d'impression:
loading config from /home/uruddarraju/virtualenvs/PHANTOMNEW/Phantom/etc/phantom/phantom.ini
* Running on http://0.0.0.0:8080/
Mais il ne revient jamais et si je fais un CTRL-C, le serveur s'arrête. Je suis en train de déployer cette production et que vous voulez exécuter ce démarrage sur le fond, où le processus reste en place aussi longtemps que le serveur est up.
Quelle est la meilleure façon de le faire?
source d'informationauteur Uday
Vous devez vous connecter pour publier un commentaire.
Ma façon préférée de le faire dans la production est de combiner la fiole avec de l'uwsgi et nginx pour garder la persistance. Voici de belles instructions d'installation pour vous aider à démarrer: http://www.markjberger.com/flask-with-virtualenv-uwsgi-nginx/
Jist:
Assurez-vous d'abord que votre vps a les dernières mises à jour:
Maintenant installer python et virtualenv:
Faire un dossier pour votre site web:
Installation virtualenv et installer le flacon:
Lieu de votre ballon d'application dans ce dossier. Assurez-vous que votre hôte est configuré pour 0.0.0.0 et que votre application est en vertu de si
__name__ == '__main__':
. Si votre application est en fonction, uwsgi ne sera pas en mesure de les appeler.Maintenant est un bon moment pour tester votre application avec la fiole de développement de serveur pour voir si tout fonctionne jusqu'à présent. Si tout se passe bien, installer nginx et uwsgi:
Ensuite, nous devons créer un fichier de socket pour nginx pour communiquer avec uwsgi:
En changeant le propriétaire de monsite.chaussette pour www-data, nginx sera en mesure d'écrire sur le support. Maintenant, tout ce que nous avons à faire est d'ajouter nos fichiers de configuration pour nginx et uwsgi. Tout d'abord supprimer la configuration par défaut de nginx:
Créer un nouveau fichier de configuration monsite et ajoutez les éléments suivants:
Afin de permettre au site, nous devons lien de notre fichier de configuration /etc/nginx/sites-enabled/:
Le processus est similaire pour uwsgi. Créer le fichier /etc/uwsgi/apps-disponible/monsite.ini et ajoutez les éléments suivants:
Module est le nom de votre script python et exigible est le nom de votre ballon d'instance. Donc, si votre flacon site était dans un fichier appelé mysite.py qui ressemblait à ceci:
Votre monsite.fichier ini serait:
Lien le fichier de configuration pour le permis-dossier apps:
Enfin, redémarrer nginx et uwsgi:
Est probablement la façon la plus simple de le faire fonctionner en arrière-plan. Qui vous a dit que vous ne devriez pas utiliser l'application.run() serveur de servir votre ballon d'application si vous vous déplacez en production comme @LukasGraf mentionne (ainsi que je crois que leur documentation)
Essayer Supervisord. Il commence commandes qu'un utilisateur spécifié et redémarre après qu'ils se terminent. La config est très simple pour ce que vous voulez faire.