Got 'No such file or directory' error while configuring nginx and uwsgi

匿名 (未验证) 提交于 2019-12-03 02:52:02

问题:

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

Nginx version is 1.6.3, and uwsgi is 2.0.11.1

/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

[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

server {     listen 80;     server_name example.com;     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;     } } 

However, I got errors from nginx by visiting http://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" 

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) 

It also looks normal.

Some questions here:

  1. why uid and gid does not take effect in /etc/uwsgi.d/daimaduan.ini?
  2. how to change ownership for /tmp/daimaduan-preview.sock? I tried chown-socket but failed
  3. why did I get No such file or directory errors in /var/log/daimaduan/preview/uwsgi.log?

回答1:

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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!