Ошибка 502 с nginx + uwsgi + django

Я попытался настроить django поверх nginx и uwsgi, и при попытке доступа к 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;
    }
}

Это мой файл testapp1.ini в / etc / nginx / apps-available /

[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  

Это файл uwsgi.log

Вт 10 июля 21:49:38 2012 - *** Запуск uWSGI 1.0.3-debian (32bit) в
[Вт 10 июля 21:49:38 2012] *** Вт 10 июля 21:49:38 2012 - скомпилированный
с версией: 4.6.2 от 20 февраля 2012 г. 10:06:16 Вт 10 июля 21:49:38
2012 г. - текущий рабочий каталог: / Вт 10 июля 21:49:38 2012 г. - запись < br> pidfile в / run / uwsgi / app / testapp1 / pid Вт 10 июля 21:49:38 2012 -
обнаружен двоичный путь: / usr / bin / uwsgi-core Вт 10 июля 21:49:38 2012 - < br> setgid () до 33 Вт 10 июля 21:49:38 2012 - setuid () до 33 Вт 10 июля
21:49:38 2012 - размер вашей страницы памяти составляет 4096 байт Вт 10 июля
21: 49:38 2012 - сокет uwsgi 0 привязан к адресу UNIX
/ run / uwsgi / app / testapp1 / socket fd 5 Вт, 10 июля 21:49:38 2012 - bind ():
Нет такого файла или каталога [ socket.c, строка 107]

Я не менял файл nginx.conf.


person Paulo    schedule 11.07.2012    source источник
comment
Пожалуйста, разместите логи nginx. Очень вероятно, что nginx не может подключиться к uWSGI. В этом случае либо используйте порт, либо исправьте разрешения .   -  person jpic    schedule 11.07.2012
comment
Эти определения сокетов одинаковы?   -  person RickyA    schedule 11.07.2012


Ответы (2)


Сообщение об ошибке достаточно ясное:

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]

Вы видите разницу между:

 socket = /run/uwsgi/testapp1/socket

а также:

 uwsgi_pass unix:///var/run/uwsgi/app/testapp1/socket;

?

Подсказка: / var / run / uwsgi / app / testapp1 / socket

person VBart    schedule 11.07.2012
comment
Извините за поздний ответ - да, это была глупая ошибка с моей стороны, чтобы указать разные пути к файлу сокета - проблема с копией и вставкой :) - person Paulo; 31.07.2012

Другой случай - проблема с разрешением (а не с ошибкой в ​​пути к сокету, как в вашем случае). В этом случае вы можете добавить это в файл uwsgi ini

[uwsgi]                                                                                                          
uid = www-data
gid = www-data
chmod-socket = 664
chown-socket = www-data
person zzart    schedule 23.10.2012
comment
Мне это было нужно chown-socket = www-data, и я не мог понять этого всю жизнь! Спасибо за это!! В качестве побочного примечания, я думаю, что достаточно установить права доступа к файлу для сокета на 664 (или самое большее 666). - person Mr. T; 01.10.2013
comment
@zzart: Я воспроизвел эту настройку, но сокет все еще создается пользователем, вошедшим в систему, а не www-data. Кроме того, uwsgi не запускается с сообщением об ошибке chown(): Operation not permitted - person user; 13.04.2015
comment
@buffer Я также обнаружил, что вы не можете использовать chown-socket в uwsgi.ini - person david30xie; 07.10.2015