我的烧瓶应用看起来像这样……
myapp.py
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
And this is the output
*** 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)
解决方法:
unix套接字是文件系统对象,因此Nginx需要对/tmp/uwsgi.sock的写权限
您正在以root身份运行uWsgi(为什么???)所以/tmp/uwsgi.sock将由root拥有,而Nginx通常作为nobody或www-data运行.
如果您不想获取帐户权限,只需使用TCP套接字,但显然不要以root身份运行您的应用程序.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。