在我部署python项目的任务中,我已经完成了gunicorn设置。
正在检查gunicorn状态文件(我今天早些时候刚刚运行了这个命令,它返回了以下内容):
sudo systemctl status gunicorn.socket
Failed to dump process list, ignoring: No such file or directory
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: active (listening) since Sun 2020-02-16 21:42:10 UTC; 1min 16s ago
Listen: /run/gunicorn.sock (Stream)
CGroup: /system.slice/gunicorn.socket
我刚才去运行这个命令,输出是不同的:
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
,这并没有解决这个问题。
有人知道这是什么原因吗?
发布于 2021-02-20 10:09:15
我在3天前就遇到了这样的问题。检查/var/log/syslog
是解决这个问题的第一个方法。主要是因为gunicorn或nginx (或您使用的任何web服务器)中的配置错误。我按照this link中的说明操作
假设你有这样的文件夹结构(在我的假设中,你安装了django并使用了wsgi):
通过pip在安装后通过directory
安装项目后的虚拟环境
如果您创建了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
请注意,myproject是您的python项目。有时,它不会工作,因为gunicorn不知道我的项目文件夹位置。您可以在ExecStart中添加--chdir
选项,如下所示:
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。
发布于 2020-07-01 00:58:08
您需要了解当gunicorn从活动状态更改为失败状态时发生的情况。使用sudo systemctl restart gunicorn.socket
激活后,请与sudo tail -f /var/log/syslog
进行核对
尝试访问您的网站或gunicorn正在做的任何事情,它应该会改变状态,并在syslog中打印更多信息。
如果gunicorn是来自python环境的午餐,请尝试重新安装环境,就像在this case上一样。
https://stackoverflow.com/questions/60253711
复制相似问题