2012-12-10 145 views
3

我的瓶的应用程序看起来像这样...
myapp.py瓶,Nginx等uwsgi

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run('0.0.0.0') 

我nginx的设置

server { 
     root /home/admin.jeremylspencer.com; 
     server_name admin.jeremylspencer.com; 

     location/{ try_files $uri @yourapplication; } 
     location @yourapplication { 
       include uwsgi_params; 
       uwsgi_pass unix:/tmp/uwsgi.sock; 
     }  

     #error_page 404 /404.html; 
     #error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
       root /usr/share/nginx/www; 
     }   
     location ~ /\.ht { 
       allow all; 
     } 
} 

于是最后我重启nginx的并运行此:

sudo uwsgi -s /tmp/uwsgi.sock --module myapp --callable app 这是输出

*** Starting uWSGI 1.4.3 (64bit) on [Mon Dec 10 15:41:00 2012] *** 
compiled with version: 4.6.3 on 10 December 2012 13:06:15 
os: Linux-3.2.0-32-generiC#51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 
nodename: jeremylspencer.com 
machine: x86_64 
clock source: unix 
detected number of CPU cores: 2 
current working directory: /home/admin.jeremylspencer.com 
detected binary path: /usr/local/bin/uwsgi 
uWSGI running as root, you can use --uid/--gid/--chroot options 
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
*** WARNING: you are running uWSGI without its master process manager *** 
your processes number limit is 31285 
your memory page size is 4096 bytes 
detected max file descriptor number: 1024 
lock engine: pthread robust mutexes 
uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3 
Python version: 2.7.3 (default, Aug 1 2012, 05:25:23) [GCC 4.6.3] 
*** Python threads support is disabled. You can enable it with --enable-threads *** 
Python main interpreter initialized at 0x1dfa790 
your server socket listen backlog is limited to 100 connections 
mapped 72392 bytes (70 KB) for 1 cores 
*** Operational MODE: single process *** 
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x1dfa790 pid: 13645 (default app) 
*** uWSGI is running in multiple interpreter mode *** 
spawned uWSGI worker 1 (and the only) (pid: 13645, cores: 1) 

但尚未我得到的是一个502错误...任何我怎样才能解决这一问题?

回答

5

Unix套接字文件系统对象,所以nginx的需要写权限/tmp/uwsgi.sock

您正在运行uWSGI为根(为什么???),所以/tmp/uwsgi.sock将属于root而nginx通常作为nobody或www-data运行。

如果你不想考虑使用TCP套接字的权限,但显然不要以root身份运行你的应用程序。