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 --
Answers:
原始答案
对于Python 2里在Ubuntu 11.10,使用upstart
,安装python插件uWSGI
用apt-get install uwsgi-plugin-python
,如果你正在使用INI文件来配置你的uWSGI
应用程序,然后添加plugins = python
到[uwsgi]
部分,它应该解决这个问题。
编辑:更新为Python 3和Ubuntu 17.10
对于Python 3的在Ubuntu 17.10,使用systemd
,安装python插件uWSGI
用apt-get install uwsgi-plugin-python3
,如果你正在使用INI文件来配置你的uWSGI
应用程序,然后添加plugins = python
到[uwsgi]
部分,它应该解决这个问题。
有关python
/ uWSGI
app入门的更多信息,包括如何使用ini
文件配置它们的信息,请查看此便捷指南
来自http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html,“要将请求路由到特定插件,网络服务器需要向uWSGI实例传递一个称为修饰符的魔术数字。默认情况下, number设置为0,即映射到Python。”
我正在为bash脚本使用9,它正在工作。数字及其含义在此页面上: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;
}
我正在将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
service uwsgi start
。