uWSGI:如何安装粘贴部署(金字塔)应用程序?

问题描述 投票:6回答:3

我有:

我有一个由Paste ini构建的金字塔应用程序,由uWSGI提供服务并由nginx代理。效果很好。这是nginx的配置:

server {
    listen 80;
    server_name localhost;
    access_log /var/log/myapp/nginx.access.log;
    error_log /var/log/myapp/nginx.error.log warn;

    location / {
        uwsgi_pass localhost:8080;
        include uwsgi_params;
    }
}

这是uWSGI ini配置:

[uwsgi]
socket = 127.0.0.1:8080
virtualenv = /srv/myapp/venv
die-on-term = 1
master = 1
logto = /var/log/myapp/uwsgi.log

此配置位于在Pyramid的production.ini内部],以便我使用此命令为应用程序提供服务:

uwsgi --ini-paste-logged production.ini

所有这些都很好。

我想做什么:

一个简单的更改。我想将此应用程序作为子文件夹而不是根目录。我不想从http://localhost提供服务,而是想从http://localhost/myapp提供服务。

现在一切

坏了。

如果将nginx location指令从/更改为/myapp/myapp/,则会得到404,因为WSGI应用程序收到的URI都以/myapp开头。

uWSGI解决方案似乎是mount the WSGI callable on the subfolder,然后传递--manage-script-name选项,这时uWSGI应该神奇地从uri中删除子文件夹前缀并解决问题。

但是,我发现的文档和所有其他资源仅给出了以下形式的示例:

mount = /myapp=myapp.py

我没有包含可调用的WSGI的myapp.py,因为我的可调用项是由PasteDeploy构建的。

因此,是否可能

从粘贴ini内装入可调用的WSGI?还是我必须将uwsgi配置从Paste ini中分离出来,并通过调用wsgi.py来定义单独的paste.deploy.loadapp来生成可安装的wsgi可调用项?

或者还有另一种方法可以将此应用程序作为nginx的子文件夹提供,同时又不会弄乱网址反转?

我拥有:我有一个金字塔应用程序,该应用程序是由Paste ini构建的,由uWSGI提供服务并由nginx代理。效果很好。这是nginx的配置:server {listen 80; server_name ...

nginx pyramid uwsgi
3个回答
0
投票

是的,使用Nginx可以将您的Pyramid挂载为子目录。您需要使用的是uWSGI的Modifier1选项,如下所示:


0
投票

我想按照您的建议去做,但这是我能找到的最接近的解决方案:如果您愿意修改PasteDeploy配置,则可以按照以下步骤操作:http://docs.pylonsproject.org/docs/pyramid/en/1.0-branch/narr/vhosting.html


0
投票

从Python2切换到Python3后,我的部署遇到了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.