Назад | Перейти на главную страницу

Ошибка nginx (13: в доступе отказано) uwsgi (неверный шлюз 502)

У меня проблемы с запуском моего приложения в новой капле DigitalOcean. На машине работает CentOS 6.5.

Мой /etc/nginx/nginx.conf

user  nginx www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;
(continues)

Мой myapp_nginx.conf

server {

   server_name 104.xxx.x.xxx;
    listen      8080;
    charset     utf-8;
    client_max_body_size 30M;

    location / {
        index index.html index.htm;
        root /home/webdev/mydevelopment/git/ers_portal;
        try_files $uri @app;
    }

    location /static {
    alias /home/webdev/mydevelopment/git/ers_portal/app/static;
    }

    location @app {
        include uwsgi_params;
        uwsgi_pass unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock;
    }
}

Мой myapp_uwsgi.ini

[uwsgi]
master = true
#user info
uid = webdev
gid = www-data

#application's base folder
base = /home/webdev/mydevelopment/git/ers_portal

#chdir to this folder when starting
#chdir = /home/webdev/mydevelopment/git/ers_portal

#python module to import
app = run_web
module = %(app)

home = /home/webdev/mydevelopment/venvs/ecodev_do
pythonpath = %(base)

#socket file's location
socket = /home/webdev/mydevelopment/git/ers_portal/%n.sock

#permissions for the socket file
chmod-socket    = 666

#the variable that holds a flask application inside the module imported at line #6
#uwsgi varible only, does not relate to your flask application
callable = app

#location of log files
logto = /home/webdev/mydevelopment/git/ers_portal/logs/%n.log

Сообщения об ошибках, напечатанные в nginx error.log всякий раз, когда я делаю веб-запрос 104.xxx.x.xxx:8080

2014/11/19 23:14:47 [crit] 28090#0: *1 stat() "/home/webdev/mydevelopment/git/ers_portal/favicon.ico" failed (13: Permission denied), client: 71.211.xxx.xxx, server: 104.xxx.x.xxx, request: "GET /favicon.ico HTTP/1.1", host: "104.xxx.x.xxx:8080"
2014/11/19 23:14:47 [crit] 28090#0: *1 connect() to unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock failed (13: Permission denied) while connecting to upstream, client: 71.211.xxx.xxx, server: 104.xxx.x.xxx, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock:", host: "104.xxx.x.xxx:8080"

папка проекта: drwxr-xr-x 6 webdev www-data 4.0K Nov 19 23:40 ers_portal

сокет внутри этой папки: srw-rw-rw- 1 webdev www-data 0 Nov 19 23:45 ers_portal_uwsgi.sock

Если у вас есть дополнительная информация, просто дайте мне знать. Спасибо!!

РЕДАКТИРОВАТЬ

Я изменил разрешения, как предложил @Eugene. Теперь в моем /var/log/nginx/access.log я вижу

[20/Nov/2014:01:37:58 -0500] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"

В /var/log/nginx/error.log я вижу

2014/11/20 01:38:27 [crit] 28639#0: *1 connect() to unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock failed (2: No such file or directory) while connecting to upstream, client: 71.21.my.local.ip, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock:", host: "104.ser.ver.ip"

Отклонение favicon.ico (ниже), которое было в var/log/nginx/access.log больше не появляется

"GET /favicon.ico HTTP/1.1" 502 574 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"

Решено

Я нашел свою опечатку после многих часов поиска. В /path/to/my/webapp/my_app_nginx.conf строка, которая читает

location @app {
        include uwsgi_params;
        uwsgi_pass unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock;
    }

должен прочесть

location @app {
        include uwsgi_params;
        uwsgi_pass unix:/home/webdev/mydevelopment/git/ers_portal/ers_portal_uwsgi.sock;
    }

Также в /etc/nginx/nginx.conf изменение user nginx www-data; вернуться к user nginx;

Также убедитесь, что на «верхнем уровне» нет серверного блока по умолчанию. /etc/nginx/nginx.conf это конфликтует с конфигурацией вашего приложения (в моем случае /path/to/my/webapp/my_app_nginx.conf, который связан с /etc/nginx/conf.d/ папка).

Уроки выучены...

  1. Не расстраивайтесь. Худшее (возможно, второе худшее) чувство в мире - это неспособность что-то понять в течение длительного периода времени. Особенно, если это ваше хобби, вы можете легко почувствовать, что вы некомпетентны, что это слишком сложно, и что вы недостаточно хороши. Придерживайтесь этого.
  2. Будьте методичны. Я сходил с ума от перемен, особенно в конце. В результате вы ложитесь спать без особого прогресса и просыпаетесь в том же месте, где были. Запишите все это, задокументируйте, что вы пробовали, и отслеживайте предыдущие изменения. если ABABA это рабочий конфиг, а ---B- было изменение, которое вы искали, но вы забыли изменить --B-- вернуться к --A--, вы будете повторять и повторять и повторять себя. См # 1
  3. Помните, что иногда самое важное для решения проблемы - это встать и уйти.
  4. Не сбрасывайте со счетов знания своих коллег (этого сообщества). Хотя у них может не быть мгновенного ответа на вашу конкретную проблему, помните Все мы не такие тупые, как никто из нас (или какая-то такая дурацкая фраза). У всех нас есть глубокая любовь к устранению проблем с планеты, по одной за раз.

Похоже, у вас нет необходимых разрешений на пути к /home/webdev/mydevelopment/git/ers_portal - хотя ers_portal кажется, есть правильный 755, в некоторых каталогах нет. Убедитесь, что все каталоги, начиная с / к ers_portal иметь хотя бы 5 для пользователя www-data, или его группы, или для всех.

Я думаю проблема в линии

 try_files $uri @app;

Просто прокомментируйте его и перезапустите сервер nginx. Это должно решить проблему.