Service 活动:失败(结果:达到服务启动限制)
在部署python项目的任务中,我已经完成了gunicorn设置 正在检查gunicorn状态文件(我今天早些时候刚刚运行了这个命令,它返回了以下内容): 我刚才去运行这个命令,结果不同:Service 活动:失败(结果:达到服务启动限制),service,gunicorn,systemd,Service,Gunicorn,Systemd,在部署python项目的任务中,我已经完成了gunicorn设置 正在检查gunicorn状态文件(我今天早些时候刚刚运行了这个命令,它返回了以下内容): 我刚才去运行这个命令,结果不同: sudo systemctl status gunicorn.socket ● gunicorn.socket - gunicorn socket Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: e
sudo systemctl status gunicorn.socket
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: failed (Result: service-start-limit-hit) since Sun 2020-02-16 21:45:01 UTC; 28min ago
Listen: /run/gunicorn.sock (Stream)
Feb 16 21:42:10 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: Listening on gunicorn socket.
Feb 16 21:45:01 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: gunicorn.socket: Failed with result 'service-st
lines 1-7/7 (END)
我运行了systemctl restart ssh
,但这并没有解决问题
有人知道这是什么原因吗 您需要了解gunicorn从活动状态更改为失败状态时的情况。 使用
sudo systemctl restart gunicorn.socket激活后,使用sudo tail-f/var/log/syslog检查
尝试访问您的网站或gunicorn正在做的任何事情,它将更改状态并在syslog中打印更多信息
如果gunicorn是python环境的午餐,请尝试重新安装类似on的环境。我三天前遇到过类似的问题。检查/var/log/syslog
是解决问题的第一种方法。主要原因是gunicorn或nginx(或您使用的任何web服务器)中的配置错误。我在课堂上按照指示做
假设您有这样的文件夹结构(在我的假设中,您安装django并使用wsgi):
/home/user/venv/myvenv->您的虚拟环境目录
/home/user/venv/myvenv/myproject->您的项目目录
/home/user/venv/myvenv/bin/gunicorn->gunicorn文件通过pip安装后
如果您创建了gunicorn服务文件(比如/etc/systemd/system/gunicorn.service),将文件gunicorn.sock
放入/run/gunicorn.sock
,您可以按照下面的配置或类似的方式操作:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=user
Group=www-data
WorkingDirectory=/home/user/venv/myvenv/myproject
ExecStart=/home/user/venv/myvenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
myproject.wsgi:application
[Install]
WantedBy=multi-user.target
ExecStart=/home/user/venv/myvenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
--chdir /home/user/venv/myvenv/myproject \
myproject.wsgi:application
请注意,myproject是您的python项目。有时,它无法工作,因为gunicorn不知道myproject文件夹的位置。您可以在ExecStart中添加--chdir
选项,使其如下所示:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=user
Group=www-data
WorkingDirectory=/home/user/venv/myvenv/myproject
ExecStart=/home/user/venv/myvenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
myproject.wsgi:application
[Install]
WantedBy=multi-user.target
ExecStart=/home/user/venv/myvenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
--chdir /home/user/venv/myvenv/myproject \
myproject.wsgi:application
--chdir
用于指向项目文件夹。每次更改gunicorn.service时,在重新启动之前,不要忘记重新加载该服务
$ sudo systemctl daemon-reload
然后:
$ sudo systemctl restart gunicorn
不要与myproject.wsgi混淆。不是文件名。它将调用myproject文件夹中的wsgi文件。有解决这种情况的方法吗?