1

我已经成功地在 nginx + uwsgi 上部署了一个 pylons 应用程序,使用:

uwsgi --paste config:/var/www/sites/helloworld/development.ini --socket :3031 -H /var/www/virtualenv

但是我正在使用 nginx 来虚拟主机 3 个站点。

根据本教程和 unbit 上 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)
4

1 回答 1

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,如果你用 master 和 worker 进程启动 uwsgi,记得在你的 development.ini 中将 debug 设置为 false,除了将你的应用程序名称从 wsgi_app 重命名为 application,这就是 uwsgi去寻找

于 2011-01-29T04:19:11.873 回答