86

Ubuntu 12.04, nginx 1.2.0, uwsgi 1.0.3.

I start uwsgi with the following command:

uwsgi -s 127.0.0.1:9010 -M -t 30 -A 4 -p 4 -d /var/log/uwsgi.log

On each request nginx replies with 502 and uwsgi writes to log the following line:

-- unavailable modifier requested: 0 --
4

6 回答 6

114

原始答案

对于Ubuntu 11.10 上的Python 2,使用upstart,安装 python 插件uWSGIapt-get install uwsgi-plugin-python如果您使用 ini 文件来配置您的uWSGI应用程序,则添加plugins = python到该[uwsgi]部分,它应该可以解决这个问题。

编辑:针对 Python 3 和 Ubuntu 17.10 进行了更新

对于Ubuntu 17.10 上的Python 3systemd ,使用安装 python 插件uWSGIapt-get install uwsgi-plugin-python3如果您使用 ini 文件来配置您的uWSGI应用程序,则添加plugins = python到该[uwsgi]部分,它应该可以解决此问题。

有关开始使用python/uWSGI应用程序的更多信息,包括如何使用ini文件配置它们,请查看这个方便的指南

于 2012-06-15T17:46:05.977 回答
29

通过安装uwsgi-plugin-python3插件并添加启动命令--plugin python3选项解决uwsgi

于 2012-05-25T04:03:06.063 回答
15

我从 Ubuntu 上的新贵开始 uwsgi。我通过运行解决了这个问题apt-get install uwsgi-plugin-python,然后plugins=python在 /etc/uwsgi/applications-available 中添加到我的 application.ini。

于 2012-05-28T23:32:32.213 回答
8

来自http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html,“要将请求路由到特定插件,网络服务器需要将一个称为修饰符的幻数传递给 uWSGI 实例。默认情况下,此number 设置为 0,映射到 Python。”

我将 9 用于 bash 脚本并且它正在工作。数字及其含义在此页面上: http: //uwsgi-docs.readthedocs.org/en/latest/Protocol.html

在我的 nginx 配置中:

location ~ .cgi$ {
    include uwsgi_params;
    uwsgi_modifier1 9;
    uwsgi_pass 127.0.0.1:3031;
}
于 2014-02-05T01:23:26.183 回答
6

通过添加插件行修改您的 ini 文件。

    [uwsgi]
    plugins         = python3
于 2020-11-29T18:14:52.957 回答
1

我正在使用带有 Python 3 的 Ubuntu 18.04。下面是我用来让它工作的确切配置。

您必须安装 Python 3 uWSGI 插件:

apt install uwsgi-plugin-python3

你的 Nginx 站点配置应该指向你的 uWSGI 套接字。确保端口与后续步骤中的配置匹配。

    location / {
        uwsgi_pass 127.0.0.1:9090;
        include uwsgi_params;
    }

重新加载 Nginx 配置以反映您刚刚所做的更改:

systemctl reload nginx

您可以使用命令行参数或 ini 文件进行配置。我创建了uwsgi.ini. 确保套接字地址与您的 nginx 配置匹配。

[uwsgi]
socket = 127.0.0.1:9090
chdir = /var/www
processes = 4
threads = 2
plugins = python3
wsgi-file = /var/www/app.py

我的 app.py 只是一个基本的例子:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/plain')])
    return [b"Hello World!"]

现在从命令行启动 uWSGI 服务器:

uwsgi uwsgi.ini
于 2019-10-02T19:48:04.667 回答