使用 systemd 在启动时运行 Flask 应用程序

k26*_*6dr 5 python flask systemd

我有以下 systemd 服务来运行我的 Flask 应用程序:

[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
Run Code Online (Sandbox Code Playgroud)

然而,当我跑步时

systemctl start my-server.service
Run Code Online (Sandbox Code Playgroud)

我得到以下状态

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)
Run Code Online (Sandbox Code Playgroud)

如何防止 Flask 服务器退出?当我直接运行脚本时

/home/ubuntu/my-server/script.py
Run Code Online (Sandbox Code Playgroud)

效果很好。但如果我用 systemd 运行它,服务器会立即退出。

k26*_*6dr 2

解决了我自己的问题。我必须更改文件所有者以匹配 systemd 脚本,然后使其可执行:

chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py
Run Code Online (Sandbox Code Playgroud)