web-dev-qa-db-ja.com

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"

var/log/nginx/access.logにあったfavicon.icoの拒否(下)が表示されなくなった

"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" "-"
4
Brian Leach

解決済み

何時間も検索したところ、入力ミスが見つかりました。 /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.confuser nginx www-data;user nginx;に戻します

また、アプリの構成と競合する「トップレベル」の/etc/nginx/nginx.confにデフォルトのサーバーブロックがないことを確認してください(私の場合は/path/to/my/webapp/my_app_nginx.conf/etc/nginx/conf.d/フォルダーにシンボリックリンクされています)。 。

学んだ教訓...

  1. 落胆しないでください。世界で最悪の(おそらく2番目に最悪の)感情は、長期間にわたって何かを理解することができません。特にこれがあなたの趣味である場合、あなたが無能であると感じるのは簡単であるかもしれません、そして、このものは硬すぎて、あなたは十分ではありません。それにこだわる。
  2. 系統立ててください。私は特に狂ったように変化に夢中になりました。その結果、実際には何も進行せずに就寝し、同じ場所で目覚めます。それをすべて書き留め、試行したことを文書化し、以前の変更を追跡します。 ABABAが作業構成であり、---B-が探していた変更であったが、--B----A--に戻すのを忘れた場合は、繰り返して繰り返し、繰り返します。 #1を参照
  3. ソリューションに到達するための最も重要なことは、立ち上がって離れることです。
  4. 仲間(このコミュニティ)の知識を軽視しないでください。彼らがあなたの特定の問題に対して即座に答えを持っているわけではないかもしれませんが、覚えておいてください私たち全員は私たちの誰もいないほど馬鹿ではありません(またはいくつかの愚かなことを言っているそれ)。私たちは皆、一度に1つずつ、惑星からの問題をこすり洗いすることに根深い愛を持っています。
7
Brian Leach

/home/webdev/mydevelopment/git/ers_portalへのパスのどこかに適切な権限がないようです-ers_portalには適切な755があるようですが、一部のディレクトリにはありません。 /からers_portalで始まるすべてのディレクトリに、www-dataユーザーまたはそのグループ、あるいはすべてに対して少なくとも5があることを確認します。

1
drookie

問題はラインにあると思います

 try_files $uri @app;

コメントするだけで、nginxサーバーを再起動します。問題を解決するはずです。

0
Neeraj Kumar