使用 Systemd 启动 Gunicorn Web 服务时出现问题

使用 Systemd 启动 Gunicorn Web 服务时出现问题

我在使用 Systemd 运行 Gunicorn Web 服务时遇到问题。

以下是我为了执行而创建的文件:

shell脚本文件(/home/ubuntu/mata.sh):

#!/usr/bin/env bash

cd /home/ubuntu/workspace/test-api
/home/ubuntu/workspace/mata_venv/bin/gunicorn --workers=4 app:app --bind 0.0.0.0:xxxx

这是我的 .service 文件(/lib/systemd/system/mata.service):

[Unit]
Description=Test API Service
After=multi-user.target
[email protected]

[Service]
User=ubuntu
Type=simple
ExecStart=/home/ubuntu/mata.sh
StandardInput=tty-force

[Install]
WantedBy=multi-user.target

单独运行 shell 脚本效果很好,但是在运行时systemctl status mata.service,我收到以下消息:

Started Test API Service
mata.service: Main process exited, code=exited, status=216/GROUP
mata.service: Unit entered failed state.
mata.service: Failed with result 'exit-code'.

任何想法?

答案1

您没有“Type=simple”服务,您有一个分叉服务,因为您关心的不是“mata.sh”进程,而是“gunicorn”进程。

对于 Type=simple 服务,将该[Service]部分更改为:

[Service]
User=ubuntu
Type=simple
WorkingDirectory=/home/ubuntu/workspace/test-api
ExecStart=/home/ubuntu/workspace/mata_venv/bin/gunicorn --workers=4 app:app --bind 0.0.0.0:xxxx
StandardInput=tty-force

...我cd用 a 导入命令工作目录指示。

或者将其设为分叉服务:

[Service]
User=ubuntu
Type=forking
ExecStart=/home/ubuntu/mata.sh
StandardInput=tty-force

如果看起来,gunicorn 进程启动子进程(workers=4),您可能更喜欢 Type=forking 解决方案。

相关内容