我想在centos 5上使用nginx,uWsgi,Flask,但总是有一些错误。
3应用程序都是最新版本,uwgsi_params文件从uwsgi / nginx复制。
我使用virtualenv来configurationpython env。
project path: /path/to/project virtualevn: /path/to/virenv/pyenv27
第一步:
我使用nginx和uWsgi,并浏览显示错误页面:
uWSGI Error wsgi application not found
Nginxconfiguration:
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; }
烧瓶文件很简单:
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。
CMD:
/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>
这里有什么不对吗?
在你的命令行版本中,你有:
/opt/uwsgi -s 127.0.0.1:5555 --no-site
但是在你的xml版本中,你缺less一个等效的no-site选项:
<uwsgi> <no-site>true</no-site> </uwsgi>
所以它试图加载Python的site.py文件。 你也可以添加一个空文件,但我会去与XML选项。 和
<no-site />
也是有效的语法,我倾向于使用真旗,我自己。