flaskアプリを実行する次のsystemdサービスがあります。
[Unit]
Description=My Flask server
After=network.target
[Service]
User=ubuntu
ExecStart=/home/ubuntu/my-server/script.py
WorkingDirectory=/home/ubuntu/my-server/
Restart=on-failure
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
ただし、実行すると
systemctl start my-server.service
私は次のステータスを取得します
my-server.service - My Flask server
Loaded: loaded (/etc/systemd/system/my-server.service; enabled; vendor preset: enabled)
Active: active (exited) (Result: exit-code) since Wed 2017-06-21 22:24:18 UTC; 8min ago
Main PID: 8407
(code=exited, status=203/EXEC)
Flaskサーバーが終了しないようにするにはどうすればよいですか?スクリプトを直接実行すると
/home/ubuntu/my-server/script.py
正常に動作します。しかし、systemdで実行すると、サーバーはすぐに終了します。
私自身の問題を修正しました。 systemdスクリプトに一致するようにファイルの所有者を変更し、実行可能にする必要がありました。
chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py
これが役立つかどうかはわかりませんが、 this は個人プロジェクトのflaskアプリケーションを制御するために使用するサービスファイルです。デフォルトでは、systemdはパーソナライズなしで/ bin/shシェルでスクリプトを実行すると思います。/bin/shシェルに切り替えてコマンドを実行してみてください。環境変数が欠落している可能性があります。
リンクからのユニットファイル:
[Unit]
Description=Persistent Transactions API
After=syslog.target network.target electrum.service
[Service]
User=percy
Group=percy
ExecStart=/bin/bash -c "source /opt/persist_transaction/bin/activate ; /opt/persist_transaction/api.py -c /opt/persist_transaction/config.ini"
Restart=always
[Install]
WantedBy=multi-user.target