Django Nginx 和 Gunicorn .sock 在连接到上游时失败(2:没有这样的文件或目录)

Posted

技术标签:

【中文标题】Django Nginx 和 Gunicorn .sock 在连接到上游时失败(2:没有这样的文件或目录)【英文标题】:Django Nginx, and Gunicorn .sock failed (2: No such file or directory) while connecting to upstream 【发布时间】:2018-12-04 03:50:42 【问题描述】:

我是 Python Django 的新手,我已经成功创建了我的应用程序,当我尝试在 Ubuntu 16.04 上托管我的 Django 应用程序时,它无法正常工作我尝试了多种方法并用谷歌搜索了很多,请帮助摆脱这种情况。

我关注了这个 URL How To Set Up Django with Postgres, nginx, and Gunicorn on Ubuntu 我已经正确完成了所有设置,但我仍然没有成功。在这里,我分享必要的文件供您参考,如果我错过了什么,请告诉我。

etc/nginx/site-available

server 
    listen *:91;
    server_name ip-address;
    location = /favicon.ico  access_log off; log_not_found off; 
    location /static/ 
            root /home/iradmin/django/scm;
    
    location / 
            include proxy_params;
            proxy_pass http://unix:/home/iradmin/django/scm/scm.sock;
    

etc/inint/gunicorn.confi

decription "Gunicorn application server handling scm"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid iradmin
setgid www-data
chdir /home/iradmin/django/scm/
exec python3venv/bin/gunicorn --workers 3 --bind unix:/home/iradmin/django/scm/scm.sock scm.wsgi:application

当我完成所有部署步骤后,我在 nginx/error.log 中遇到以下错误

2018/06/25 18:59:50 [crit] 32640#32640: *8 connect() to unix:/home/iradmin/django/scm/scm.sock failed (2: No such file or directory) while connecting to upstream, client: 10.200.101.124, server: ip-address, request: "GET / HTTP/1.1", upstream: "http://unix:/home/iradmin/django/scm/scm.sock:/", host: "10.200.101.227:91"
2018/06/25 18:59:52 [crit] 32640#32640: *10 connect() to unix:/home/iradmin/django/scm/scm.sock failed (2: No such file or directory) while connecting to upstream, client: 10.200.101.124, server: ip-address, request: "GET / HTTP/1.1", upstream: "http://unix:/home/iradmin/django/scm/scm.sock:/", host: "10.200.101.227:91"
[ N 2018-06-25 19:02:33.5097 32620/T4 age/Cor/CoreMain.cpp:1068 ]: Checking whether to disconnect long-running connections for process 32725, application /var/www/pyraMID (production)

这是我的应用程序结构

独角兽状态

root@iradmin-OptiPlex-3040:/etc/init# sudo service gunicorn status
● gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2018-06-25 19:15:22 IST; 33min ago
 Main PID: 5226 (code=exited, status=216/GROUP)

Jun 25 19:15:22 iradmin-OptiPlex-3040 systemd[1]: Started gunicorn daemon.
Jun 25 19:15:22 iradmin-OptiPlex-3040 systemd[1]: gunicorn.service: Main process exited, code=exited, status=216/GROUP
Jun 25 19:15:22 iradmin-OptiPlex-3040 systemd[1]: gunicorn.service: Unit entered failed state.
Jun 25 19:15:22 iradmin-OptiPlex-3040 systemd[1]: gunicorn.service: Failed with result 'exit-code'.

我尝试了几种方法,但我仍然不知道 .sock 文件以及如何创建它?非常感谢您的回复。

【问题讨论】:

【参考方案1】:

文件“.sock”将通过适当的配置自动创建。无需手动创建。在 etc/inint/gunicorn.confi 文件中给出 gunicorn 的绝对值

exec python3venv/bin/gunicorn

应该是

exec /path/.../python3venv/bin/gunicorn

【讨论】:

以上是关于Django Nginx 和 Gunicorn .sock 在连接到上游时失败(2:没有这样的文件或目录)的主要内容,如果未能解决你的问题,请参考以下文章

Nginx Django 和 Gunicorn。 Gunicorn 袜子文件丢失?

为啥 nginx 不会用 django 和 gunicorn 显示静态内容?

Gunicorn 和 Django 与 Upstart 和 Nginx

使用 Nginx、Gunicorn 和 Supervisor 部署 Django

使用 Django、Nginx、Gunicorn 和主管进行空日志记录

使用 nginx 和 gunicorn 运行多个 django 项目