运行 gunicorn 般的服务

Run gunicorn like service

我想在服务中配置 gunicorn。

我有这个服务配置:

[Unit]
Description=test

[Service]
WorkingDirectory=/var/www/cmdb
Type=forking
Restart=always
ExecStart=/var/www/test/bin/gunicorn --workers=4 --bind=0.0.0.0:8080 test.wsgi:application

[Install]
WantedBy=multi-user.target

我的问题是它没有 运行。启动服务时出现此错误:

gunicorn.service: Main process exited, code=exited, status=203/EXEC
gunicorn.service: Unit entered failed state.
gunicorn.service: Failed with result 'exit-code'.
gunicorn.service: Start request repeated too quickly.

我没有发现我的配置有错误。有人有想法吗?

假设您 运行 在 vi​​rtualenv 中,gunicorn bin 应该是这样的:

/var/www/cmdb/venv/bin/gunicorn

而不是

/var/www/test/bin/gunicorn

无论如何,我在我的系统中使用了类似这样的东西并且它工作正常:

[Unit]
Description = SampleApp
After = network.target

[Service]
PIDFile = /run/cmdb/cmdb.pid
WorkingDirectory = /var/www/cmdb
ExecStartPre = /bin/mkdir /run/cmdb
ExecStart = /var/www/cmdb/venv/bin/gunicorn test.wsgi:application -b 0.0.0.0:8000 --pid /run/cmdb/cmdb.pid
ExecReload = /bin/kill -s HUP $MAINPID
ExecStop = /bin/kill -s TERM $MAINPID
ExecStopPost = /bin/rm -rf /run/cmdb

[Install]
WantedBy = multi-user.target

注意:本例使用root作为app用户。我确实建议使用受限权限的用户访问您的应用。