Nginx+uWsgi+Flask无法设置成功

Nginx+uWsgi+Flask无法设置成功

我想在 centos 5 上使用 nginx、uWsgi、Flask,但总是出现一些错误。

3个app都是最新版本,uwgsi_params文件从uwsgi/nginx复制而来。

我使用 virtualenv 来配置 python 环境。

project path: /path/to/project
virtualevn: /path/to/virenv/pyenv27

第一步:

我使用 nginx 和 uWsgi,并浏览显示错误页面:

uWSGI Error
wsgi application not found

Nginx 配置:

location / {
      uwsgi_pass 127.0.0.1:5555;
      uwsgi_param UWSGI_PYHOME /path/to/virenv/pyenv27;
      uwsgi_param UWSGI_CHDIR /path/to/project;
      uwsgi_param UWSGI_SCRIPT uwsgi;
      uwsgi_param SCRIPT_NAME "";

      include uwsgi_params;

}

Flask文件很简单:

import sys
sys.path.append(sys.path[0])

from flask import Flask
app = Flask(__name__)

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


#app.config.from_pyfile('product.cfg')

def application(environ, start_response):
    return app(environ, start_response)

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

uWsgi 命令:

/opt/uwsgi -s 127.0.0.1:5555 -M 4 -t 30 -A 4 -p 4 -d /var/log/uwsgi.log --pidfile /var/run/uwsgi.pid --no-site --vhost --limit-as 256 

2步骤

我只使用 uWsgi。

命令:

/opt/uwsgi/uwsgi --xml /path/to/project/uwsgi.xml

但我得到了错误:

ImportError: No module named site

uWsgi xml:

<uwsgi>
<chdir>/path/to/project/</chdir>
<pythonpath>/path/to/project</pythonpath>
<virtualenv>/path/to/virenv/pyenv27</virtualenv>

<wsgi-file>/path/to/project/uwsgi.py</wsgi-file>


<callable>app</callable>

<socket>:6000</socket>
<chmod-socket>666</chmod-socket>

<master />
<processes>1</processes>
<uid>uwsgi</uid>
<gid>uwsgi</gid>

<disable-logging>false</disable-logging><!-- Errors are still logged; this just disables request logging which Cherokee takes care of -->
<daemonize>/path/to/project/uwsgi.log</daemonize>
<vacuum />
<no-orphans />
</uwsgi>

这里有什么问题吗?

答案1

在您的命令行版本中,您有:

/opt/uwsgi -s 127.0.0.1:5555 --no-site

但是在您的 xml 版本中,您缺少一个等效no-site选项:

<uwsgi>
<no-site>true</no-site>
</uwsgi>

所以它正在尝试加载 Pythonsite.py文件。您也可以添加一个空文件,但我会选择 xml 选项。并且

<no-site />

也是有效的语法,我倾向于使用真的旗帜,我自己。

相关内容