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 --
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 --
原始答案
对于在Ubuntu 11.10上使用upstart
的Python 2,请使用apt-get install uwsgi-plugin-python
安装uWSGI
的Python插件。如果您正在使用ini文件来配置uWSGI
应用程序,则在[uwsgi]
部分中添加plugins = python
即可解决此问题。
编辑:针对Python 3和Ubuntu 17.10进行更新
对于在Ubuntu 17.10上使用systemd
的Python 3,请使用apt-get install uwsgi-plugin-python3
安装uWSGI
的Python插件。如果您正在使用ini文件来配置uWSGI
应用程序,则在[uwsgi]
部分中添加plugins = python3
即可解决此问题。
python
/uWSGI
应用程序,包括如何使用ini
文件进行配置,请参阅这个方便的指南。/usr/lib64/uwsgi
中的版本(例如),在我的CentOS机器上,我不得不使用plugins = python36
。 - Wes Hardakerplugins = python3
。 - Galen通过安装 uwsgi-plugin-python3
插件,并将 --plugin python3
选项添加到 uwsgi
启动命令中解决问题
我正在Ubuntu上使用upstart启动uwsgi。我通过运行apt-get install uwsgi-plugin-python
来解决问题,然后在/etc/uwsgi/applications-available中的application.ini文件中添加plugins=python
即可。
location ~ .cgi$ {
include uwsgi_params;
uwsgi_modifier1 9;
uwsgi_pass 127.0.0.1:3031;
}
通过添加插件行修改您的ini文件。
[uwsgi]
plugins = python3
我正在使用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;
}
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
service uwsgi start
。 - sorin