运行 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.
我没有发现我的配置有错误。有人有想法吗?
假设您 运行 在 virtualenv 中,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用户。我确实建议使用受限权限的用户访问您的应用。
我想在服务中配置 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.
我没有发现我的配置有错误。有人有想法吗?
假设您 运行 在 virtualenv 中,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用户。我确实建议使用受限权限的用户访问您的应用。