Gunicorn 守护进程(活动:失败)/curl(56) 接收失败:连接被对等方重置

use*_*132 5 gunicorn systemd

首先,我不确定这在这里更好还是在询问 ubuntu 时更好(ubuntu 没有“gunicorn”标签,所以我认为我在正确的地方)。如果这里不合适,请将其放在评论中,我将关闭它。

\n\n

我正在关注有关部署的 digitalocean 教程(https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04 ).我准备好gunicorn 设置了。我已经无计可施,试图让这个枪角兽发挥作用,所以我来到了这里。引号中的任何内容都是文章中当前部分的名称。在失败之前,我开始“检查 Gunicorn 套接字文件”和“检查gunicorn.sock/run 目录中是否存在该文件:”。\n检查套接字文件:

\n\n
  sudo systemctl status gunicorn.socket returns\n    Failed to dump process list, ignoring: No such file or directory\n    \xe2\x97\x8f gunicorn.socket - gunicorn socket\n       Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor pres\n       Active: active (listening) since Fri 2020-02-21 21:34:06 UTC; 1min 8s ago\n       Listen: /run/gunicorn.sock (Stream)\n       CGroup: /system.slice/gunicorn.socket\n
Run Code Online (Sandbox Code Playgroud)\n\n

检查是否存在gunicorn.sock

\n\n
file /run/gunicorn.sock\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:/run/gunicorn.sock: socket

\n\n

在“测试套接字激活”时,它失败:

\n\n
sudo systemctl status gunicorn\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
\xe2\x97\x8f gunicorn.service - gunicorn daemon\n   Loaded: loaded (/etc/systemd/system/gunicorn.service;\n   Active: failed (Result: exit-code) since Fri 2020-02-\n Main PID: 15708 (code=exited, status=217/USER)\n\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: S\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[15708\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[15708\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: g\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: g\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: g\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: g\nFeb 21 21:32:39 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: F\nlines 1-13/13 (END)\n
Run Code Online (Sandbox Code Playgroud)\n\n

它说要测试套接字激活,请执行以下操作:

\n\n
curl --unix-socket /run/gunicorn.sock localhost\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出(说我应该看到 HTML):

\n\n
curl: (56) Recv failure: Connection reset by peer\n
Run Code Online (Sandbox Code Playgroud)\n\n

不确定我是否提供了足够的信息。下面我将包括我的gunicorn.socket文件gunicorn.service以及我的服务器上的目录布局。

\n\n

Gunicorn.socket:

\n\n
[Unit]\nDescription=gunicorn socket\n\n[Socket]\nListenStream=/run/gunicorn.sock\n\n[Install]\nWantedBy=sockets.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

Gunicorn.服务:

\n\n
[Unit]\nDescription=gunicorn daemon\nRequires=gunicorn.socket\nAfter=network.target\n\n[Service]\nUser=justin\nGroup=www-data\nWorkingDirectory=/home/justin/project\nExecStart=/home/justin/project/env/bin/gunicorn \\\n          --access-logfile - \\\n          --workers 3 \\\n          --bind unix:/run/gunicorn.sock \\\n          jobzumo.wsgi:application\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

服务器/项目的布局:

\n\n
home/justin/project/\n
Run Code Online (Sandbox Code Playgroud)\n\n

project/文件夹包含envenv/bin/gunicorn确实存在)、jobzumo(django 项目)manage.pystatic.

\n\n

我唯一想到的是,我可能在使用时创建了这些gunicorn 文件root,现在我尝试使用用户修改它们justin?不太确定这里发生了什么。如果我没有提供足够的信息或者您需要我运行任何类型的调试命令,请告诉我。谢谢你的帮助。

\n

lue*_*eho 5

在本教程之后我遇到了完全相同的问题。OP的回答对我的情况没有帮助,但我在这里找到了解决方案。也许它可以帮助其他人解决这个问题。

\n

非常感谢RussellMolimock的以下评论,我在那里找到了!

\n
\n

“使用 source\n[your_project_env]/bin/activate 返回您的 virtualenv 并输入哪个 Gunicorn 这将\n返回您的 Gunicorn 可执行文件的路径。

\n

将其粘贴到 \n\xe2\x80\x99/etc/systemd/system/gunicorn.service\xe2\x80\x99 文件内的 \xe2\x80\x98ExecStart\xe2\x80\x99 值的路径部分,然后运行 \xe2\x80\x98sudo\nsystemctl daemon-reload\xe2\x80\x99 和 \'sudo systemctl restart Gunicorn\xe2\x80\x99\n 命令来重新启动守护程序,并尝试使用curl\n\xe2\x80 再次卷曲\x93unix-socket /run/gunicorn.sock 本地主机

\n

我希望这有帮助!”

\n
\n


use*_*132 1

我必须运行以下两个命令:

sudo ufw delete allow 8000
sudo ufw allow 'Nginx Full'
Run Code Online (Sandbox Code Playgroud)

现在一切正常。显然,这将我的防火墙打开到端口 80。不知道为什么,因为我没有在那里指定端口 80,但它正在工作。