私の目標:
- 同じアプリケーションで複数のPython Flaskアプリケーションを提供する開発する仕える人
- サーバー側キャッシュなし
-Gunicornアプリケーションをバックグラウンドジョブとして実行する
-nginxはリバースプロキシとして機能し、ホスト名でアプリケーションインスタンスを解決し、すべてポート80で実行されます。
systemdを使用してバックグラウンドでFlask / Gunicornアプリを実行できることに気づきました。問題は、このアプリが私のアプリのキャッシュされたバージョンを提供し、新しいタスクを送信するたびに私のビルドの新しいバージョンを提供したいということです。実行中のバージョン
systemd/system/website.com.service
[Unit]
Description=Gunicorn instance to serve website.com
After=network.target
[Service]
User=melcma
Group=www-data
PIDFile=/var/tmp/gunicorn.pid
WorkingDirectory=/var/www/website.com
Environment="PATH=/var/www/website.com/env/bin"
ExecStart=/var/www/website.com/env/bin/gunicorn --workers 1 --bind unix:website.com.sock -m 007 wsgi:app
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
私が知っている限り、「ExecReload = / bin / kill -s HUP $ MAINPID」行は私のサーバーを再ロードする必要がありますが、ファイルの変更時にこれをどのようにトリガーできますか? ExecStartコマンドに「--reload」を追加しようとしましたが、うまくいきませんでした。
そしてボーナスの質問があります:
systemdを使用することがこれを達成するのに最適な方法ですか、それともむしろサーバーを損傷しますか? (バックグラウンドでジョブを実行し、gunicornインスタンスを起動し、ファイルが変更されるとそれ自体が更新されます。)