Ubuntu 12.04,nginx 1.2.0,uwsgi 1.0.3。
我使用以下命令启动uwsgi:
uwsgi -s 127.0.0.1:9010 -M -t 30 -A 4 -p 4 -d /var/log/uwsgi.log
在每个请求中,nginx回复502并且uwsgi写入以记录以下行:
-- unavailable modifier requested: 0 --
答案 0 :(得分:101)
原始回答
对于Ubuntu 11.10上的 Python 2 ,使用upstart
,安装带有apt-get install uwsgi-plugin-python
的uwsgi的python插件,并将plugins = python
添加到各个uwsgi应用程序配置解决方案这个问题。
编辑:针对Python 3和Ubuntu 17.10进行了更新
对于Ubuntu 17.10上的 Python 3 ,使用systemd
,使用apt-get install uwsgi-plugin-python3
安装uwsgi的python插件,并将plugins = python
添加到各个uwsgi应用程序配置解决方案中这个问题。
答案 1 :(得分:20)
通过安装uwsgi-plugin-python3
插件并向--plugin python3
启动命令添加uwsgi
选项解决
答案 2 :(得分:16)
我在Ubuntu上从upstart开始使用uwsgi。我通过运行apt-get install uwsgi-plugin-python
,然后将plugins=python
添加到/ etc / uwsgi / applications-available中的application.ini来解决了这个问题。
答案 3 :(得分:6)
来自http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html,“要将请求路由到特定插件,Web服务器需要将一个称为修饰符的幻数传递给uWSGI实例。默认情况下,此数字设置为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;
}
答案 4 :(得分:1)
通过添加的插件行修改您的ini文件。
[uwsgi]
plugins = python3
答案 5 :(得分:0)
我正在将Ubuntu 18.04与Python 3配合使用。以下是我用来使其正常工作的确切配置。
您必须安装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