配置Nginx和uwsgi时出现“无此文件或目录"错误

编程入门 行业动态 更新时间:2024-10-28 14:26:46
本文介绍了配置Nginx和uwsgi时出现“无此文件或目录"错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

更新:如果我不使用套接字,而是使用127.0.0.1:3031,一切正常.

UPDATE: if I don't use socket and use 127.0.0.1:3031 instead, everything works fine.

Nginx版本是1.6.3,而uwsgi是2.0.11.1

Nginx version is 1.6.3, and uwsgi is 2.0.11.1

/etc/uwsgi.ini:

/etc/uwsgi.ini:

[uwsgi] uid = uwsgi gid = uwsgi pidfile = /run/uwsgi/uwsgi.pid emperor = /etc/uwsgi.d stats = /run/uwsgi/stats.sock emperor-tyrant = true cap = setgid,setuid logto = /var/log/uwsgi.log

/etc/uwsgi.d/daimaduan_preview.ini

/etc/uwsgi.d/daimaduan_preview.ini

[uwsgi] plugin = python,http protocol = uwsgi chdir = /var/www/daimaduan/preview/current master = true processes = 4 threads = 20 socket = /tmp/daimaduan-preview.sock chmod-socket = 666 uid = vagrant gid = vagrant logto = /var/log/daimaduan/preview/uwsgi.log virtualenv = /var/www/daimaduan/preview/venv wsgi-file = deploy.wsgi

/etc/nginx/conf.d/daimaduan.conf

/etc/nginx/conf.d/daimaduan.conf

server { listen 80; server_name example; access_log /var/log/daimaduan/preview/access.log; error_log /var/log/daimaduan/preview/error.log; root /var/www/daimaduan/preview/current/daimaduan; location / { uwsgi_pass unix:/tmp/daimaduan-preview.sock; include uwsgi_params; } }

但是,通过访问 127.0.0.1/,我从nginx收到了错误消息:

However, I got errors from nginx by visiting 127.0.0.1/:

2015/10/06 14:14:04 [crit] 16946#0: *1 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 14:17:44 [crit] 16995#0: *1 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 14:28:13 [crit] 16995#0: *3 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 15:29:14 [crit] 16995#0: *5 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 15:30:52 [crit] 16995#0: *7 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 15:32:48 [crit] 16995#0: *9 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 15:37:14 [crit] 16995#0: *11 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 15:38:14 [crit] 16995#0: *13 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1" 2015/10/06 15:38:21 [crit] 17577#0: *1 connect() to unix:/tmp/daimaduan-preview.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/daimaduan-preview.sock:", host: "127.0.0.1"

我很确定/tmp/daimaduan-preview.sock确实存在.我还检查了uwsgi日志:

And I am pretty sure /tmp/daimaduan-preview.sock does exist. I also checked uwsgi log:

*** Starting uWSGI 2.0.11.1 (64bit) on [Tue Oct 6 15:38:09 2015] *** compiled with version: 4.8.3 20140911 (Red Hat 4.8.3-9) on 21 July 2015 16:01:10 os: Linux-3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 nodename: localhost.localdomain machine: x86_64 clock source: unix pcre jit disabled detected number of CPU cores: 1 current working directory: /etc/uwsgi.d detected binary path: /usr/sbin/uwsgi chdir() to /var/www/daimaduan/preview/current your processes number limit is 3826 your memory page size is 4096 bytes detected max file descriptor number: 1024 lock engine: pthread robust mutexes thunder lock: disabled (you can enable it with --thunder-lock) uwsgi socket 0 inherited UNIX address /tmp/daimaduan-preview.sock fd 3 Python version: 2.7.5 (default, Jun 24 2015, 00:41:19) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] Set PythonHome to /var/www/daimaduan/preview/venv Python main interpreter initialized at 0x865410 python threads support enabled your server socket listen backlog is limited to 100 connections your mercy for graceful operations on workers is 60 seconds mapped 1342720 bytes (1311 KB) for 80 cores *** Operational MODE: preforking+threaded *** WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x865410 pid: 17132 (default app) mountpoint already configured. skip. *** uWSGI is running in multiple interpreter mode *** gracefully (RE)spawned uWSGI master process (pid: 17132) spawned uWSGI worker 1 (pid: 17475, cores: 20) spawned uWSGI worker 2 (pid: 17476, cores: 20) spawned uWSGI worker 3 (pid: 17477, cores: 20) spawned uWSGI worker 4 (pid: 17478, cores: 20)

看起来也很正常.

这里有一些问题:

  • 为什么uid和gid在/etc/uwsgi.d/daimaduan.ini中不生效?
  • 如何更改/tmp/daimaduan-preview.sock的所有权?我尝试了chown-socket但失败了
  • 为什么在/var/log/daimaduan/preview/uwsgi.log中出现No such file or directory错误?
  • why uid and gid does not take effect in /etc/uwsgi.d/daimaduan.ini?
  • how to change ownership for /tmp/daimaduan-preview.sock? I tried chown-socket but failed
  • why did I get No such file or directory errors in /var/log/daimaduan/preview/uwsgi.log?
  • 推荐答案

    将daimaduan_preview.ini的套接字文件放入/run而不是/tmp.就像在此答案中一样,您的系统可能使用了命名为空格的临时目录,这意味着每个服务只能看到其/tmp中的文件.

    Put the daimaduan_preview.ini's socket file into /run instead of /tmp. Like in this answer, your system probably using namespaced temporary directories, which means every service can only see its own files in /tmp.

    更多推荐

    配置Nginx和uwsgi时出现“无此文件或目录"错误

    本文发布于:2023-10-09 10:13:19,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1475468.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:无此   错误   文件   目录   Nginx

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!