web-dev-qa-db-fra.com

Comment démoniser une application Flask?

J'ai une petite application écrite en Python en utilisant Flask. À l'heure actuelle, je l'exécute sous Nohup, mais j'aimerais le démoniser. Quelle est la bonne façon de faire cela?

25
James

Il existe plusieurs façons de déployer un projet Flask . Déployer avec gunicorn pourrait être le plus simple, installez gunicorn puis:

gunicorn project:app --daemon

Bien que vous souhaitiez probablement utiliser superviseur ou quelque chose de ce genre pour surveiller gunicorn (utilisez au moins --pid pour pouvoir recharger/arrêter gunicorn facilement).

30
zeekay

Si votre superviseur est déjà installé, je pense que gunicorn serait un peu redondant. Ce qui suit est un fichier flask.ini qui peut être déposé dans /etc/supervisord.d/ (puis "supervisorctl reload" pour recharger la configuration et démarrer le processus).

command=/opt/flask/env0/bin/python /opt/flask/developer/FlaskWebServer.py
directory=/opt/flask
redirect_stderr=true
startsecs=5
autorestart=true
stdout_logfile=/opt/flask/flask.stdout.log
2
user3116242

Si vous souhaitez le surveiller et le garder persistant lors des redémarrages, vous pouvez utiliser immortal

Vous pourriez l'appeler comme ça:

immortel -l/var/log/votre-application gunicorn project: app

Ou via run.yml , par exemple:

cmd: gunicorn project:app
cwd: /path/of/project
env:
    DEBUG: 1
    ENVIRONMENT: production
 log:
    file: /var/log/app.log
    age: 86400 # seconds
    num: 7     # int
    size: 1    # MegaBytes
    timestamp: true # will add timesamp to log
 stderr:
    file: /var/log/app-error.log
    age: 86400 # seconds
    num: 7     # int
    size: 1    # MegaBytes
    timestamp: true # will add timesamp to log
 user: www

En savoir plus sur immortal: https://immortal.run/about/

0
nbari