如何使用UWSGI_SCRIPT动态地将pylons应用程序添加到nginx上的uwsgi进程?

时间:2010-08-13 23:39:27

标签: nginx pylons dynamic uwsgi

我已经使用以下方法在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)

1 个答案:

答案 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将会寻找什么