与nginx + uwsgi + django有502错误

Pau*_*ulo 8 django nginx uwsgi

我试图在nginx和uwsgi上配置django,并且在尝试访问localhost时遇到502错误的网关错误

这是我的/ etc/ngingx/sites-available/default文件

server {
    server_name testapp1.com www.testapp1.com;
    access_log /var/log/nginx/testapp1.com.access.log;

    location / {
        uwsgi_pass unix:///var/run/uwsgi/app/testapp1/socket;
        include uwsgi_params;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在/ etc/nginx/apps-available /中的testapp1.ini文件

[uwsgi]  
    thread=3  
    master=1  
    env = DJANGO_SETTINGS_MODULE=testapp1.settings  
    module = django.core.handlers.wsgi:WSGIHandler()  
    chdir = /home/paul/apps/testapp1  
    socket = /run/uwsgi/testapp1/socket  
    logto = /var/log/uwsgi/testapp1.log  
Run Code Online (Sandbox Code Playgroud)

这是uwsgi.log文件

周二7月10日21时49分38秒2012 -***上启动uWSGI 1.0.3-debian的(32位)
[星期二7月10日21时49分38秒2012]***星期二7月10日21时49分38秒2012 -编
带版本:4.6.2于2012年2月20日10:06:16 Tue Jul 10 21:49:38
2012 - 当前工作目录:/ Tue Jul 10 21:49:38 2012 - 将
pidfile 写入/ run/uwsgi/app/testapp1/pid Tue Jul 10 21:49:38 2012 -
检测到二进制路径:/ usr/bin/uwsgi-core Tue Jul 10 21:49:38 2012 -
setgid()to 33 Tue Jul 10 21:49:38 2012 - setuid ()to 33 Tue Jul 10
21:49:38 2012 - 你的内存页面大小是4096字节Tue Jul 10
21:49:38 2012 - uwsgi socket 0绑定到UNIX地址
/run/uwsgi/app/testapp1/socket fd 5 Tue Jul 10 21:49:38 2012 - bind():
没有这样的文件或目录[socket.c第107行]

我没有更改nginx.conf文件.

zza*_*art 23

其他情况是它是一个权限问题(不是像你的情况下的套接字路径拼写错误).在这种情况下,您可以将此添加到uwsgi ini文件中

[uwsgi]                                                                                                          
uid = www-data
gid = www-data
chmod-socket = 664
chown-socket = www-data
Run Code Online (Sandbox Code Playgroud)

  • 我需要这个`chown-socket = www-data`,我无法理解我的生活!谢谢你!! 作为旁注,我认为将套接字的文件权限设置为664(或最多666)就足够了. (3认同)
  • @zzart:我已经复制了这个设置,但是套接字仍由登录用户而不是www-data创建.此外,uwsgi无法以错误消息`chown()开头:不允许操作 (3认同)

VBa*_*art 14

错误消息足够清楚:

Tue Jul 10 21:49:38 2012 - uwsgi socket 0 bound to UNIX address
/run/uwsgi/app/testapp1/socket fd 5
Tue Jul 10 21:49:38 2012 - bind():
No such file or directory [socket.c line 107]
Run Code Online (Sandbox Code Playgroud)

你看到以下区别:

 socket = /run/uwsgi/testapp1/socket
Run Code Online (Sandbox Code Playgroud)

和:

 uwsgi_pass unix:///var/run/uwsgi/app/testapp1/socket;
Run Code Online (Sandbox Code Playgroud)

提示:/var/run/uwsgi/app/testapp1/socket