nginxによるFlask用のシステムサービスの作成

nginxによるFlask用のシステムサービスの作成

私はnginxを介してサーバー上でFlaskアプリケーションを実行しています。 systemdファイルを作成したいのですが、これが私が持っているファイルです:

[Unit]
Description=my123 website
After=syslog.target
Requires=postgresql.service

[Service]
ExecStart=/home/user_123/my_web_app/run.py &
ExecStop=
Restart=on-abort
WorkingDirectory=/home/user_123/my_web_app/
SyslogIdentifier=my_web_app
User=user_123

[Install]
WantedBy=multi-user.target

./run.pyこれでローカルで実行します。ExecStartそして何があるべきですかExecStopExecStart持っているから正しいと思います&。しかし、だからどうですかExecStop

答え1

いいえ、そうする必要があります。いいえに追加してください。&これにより、ExecStartシステムはあなたのデバイスがフォークプロセスであると考えます。またExecStop、SIGTERMのサービス(Flaskに組み込まれているWebサーバーは理解しています)を理解する必要はなく、systemdはシグナルを送信する場所を知っています。

つまり、systemd は開始 PID を追跡し、ExecStartプロセスの終了を要求するときに SIGTERM を送信する場所を知っています。

(単位はtype=フォークをこれより複雑にすることができますが、基本単位はtype=フォークがないと仮定します。)

追加

Nginxの後ろに組み込まれたFlaskサーバーを実行するとレンダリングされます。非常にでも脆弱です。マイナーなDoS攻撃。 Flask 組み込みサーバーは本番用途には適していません。 Nginxの場合は、次のものを使用する必要があります。uWSGI

Flaskドキュメントにuwsgiについて、コマンドラインを簡単にマッピングして、uWSGI設定ファイルオプションを編集できます。 uWSGIドキュメントにシステム情報。組み込みのFlaskの代わりにuWSGIなどの実際のWebサーバーを起動するには、systemdを使用する必要があります。

関連情報