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?
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).
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
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/