我已经使用以下方法在nginx + uwsgi上成功部署了一个pylons应用程序:
uwsgi --paste config:/var/www/sites/helloworld/development.ini --socket :3031 -H /var/www/virtualenv
但是我正在使用nginx到虚拟主机3站点。
基于this tutorial以及来自unws主uwsgi站点的uwsgi / wiki / DynamicApps页面,我可以动态地向uwsgi添加应用程序,而无需为3个独立的3个主进程创建3个单独的uwsgi init.d脚本端口。
我的nginx虚拟主机配置就像在教程中一样设置,但是我遇到了UWSGI_SCRIPT值的问题。我把它设置为app.wsgi(位于/var/www/sites/helloworld/app.wsgi)。脚本代码是:
from paste.deploy import loadapp
wsgi_app = loadapp('config:/var/www/sites/helloworld/development.ini')
但是我找不到关于这个脚本的任何简单信息。是假设它被命名为app_wsgi.py或者完全不同的代码?应该在哪里定位? 当我访问该网站时,我得到:“uWSGI错误 - 未找到wsgi应用程序”,然后我在uwsgi.log中看到了这一点:
interpreter for app 0 initialized.
ImportError: No module named app.wsgi
[pid: 7287|app: -1|req: -1/24] XXX.XXX.XXX.133 () {48 vars in 782 bytes} [Fri Aug 13 18:41:22 2010] GET /page/view/0 => generated 46 bytes in 8 msecs (HTTP/1.1 500) 2 headers in 63 bytes (0 async switches on async core 0)
答案 0 :(得分:1)
这对我有用:
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
uwsgi_param UWSGI_PYHOME /home/don/dev/envs/pylons; #this is my virtualenv
uwsgi_param UWSGI_CHDIR /home/don/dev/envs/pylons/apps/helloworld; #so app.py can be found
uwsgi_param UWSGI_SCRIPT app; # app.py: where i put loadapp code
uwsgi_param SCRIPT_NAME ""; # this line is needed, don't know what it means
}
然后用--vhost [ - no-site]启动uwsgi,记得在你的development.ini中将debug设置为false,如果你用master和worker进程启动uwsgi,除了将你的应用程序名称从wsgi_app重命名为application, uwsgi将会寻找什么