首先,我不确定这在这里更好还是在询问 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检查套接字文件:
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\nRun Code Online (Sandbox Code Playgroud)\n\n检查是否存在gunicorn.sock:
file /run/gunicorn.sock\nRun Code Online (Sandbox Code Playgroud)\n\n输出:/run/gunicorn.sock: socket
在“测试套接字激活”时,它失败:
\n\nsudo systemctl status gunicorn\nRun 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)\nRun Code Online (Sandbox Code Playgroud)\n\n它说要测试套接字激活,请执行以下操作:
\n\ncurl --unix-socket /run/gunicorn.sock localhost\nRun Code Online (Sandbox Code Playgroud)\n\n输出(说我应该看到 HTML):
\n\ncurl: (56) Recv failure: Connection reset by peer\nRun Code Online (Sandbox Code Playgroud)\n\n不确定我是否提供了足够的信息。下面我将包括我的gunicorn.socket文件gunicorn.service以及我的服务器上的目录布局。
Gunicorn.socket:
\n\n[Unit]\nDescription=gunicorn socket\n\n[Socket]\nListenStream=/run/gunicorn.sock\n\n[Install]\nWantedBy=sockets.target\nRun Code Online (Sandbox Code Playgroud)\n\nGunicorn.服务:
\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\nRun Code Online (Sandbox Code Playgroud)\n\n服务器/项目的布局:
\n\nhome/justin/project/\nRun Code Online (Sandbox Code Playgroud)\n\n该project/文件夹包含env(env/bin/gunicorn确实存在)、jobzumo(django 项目)manage.py和static.
我唯一想到的是,我可能在使用时创建了这些gunicorn 文件root,现在我尝试使用用户修改它们justin?不太确定这里发生了什么。如果我没有提供足够的信息或者您需要我运行任何类型的调试命令,请告诉我。谢谢你的帮助。
在本教程之后我遇到了完全相同的问题。OP的回答对我的情况没有帮助,但我在这里找到了解决方案。也许它可以帮助其他人解决这个问题。
\n非常感谢RussellMolimock的以下评论,我在那里找到了!
\n\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
我必须运行以下两个命令:
sudo ufw delete allow 8000
sudo ufw allow 'Nginx Full'
Run Code Online (Sandbox Code Playgroud)
现在一切正常。显然,这将我的防火墙打开到端口 80。不知道为什么,因为我没有在那里指定端口 80,但它正在工作。
| 归档时间: |
|
| 查看次数: |
4196 次 |
| 最近记录: |