flask+uwsgi+nginx(upstream prema
2019-08-21 本文已影响0人
请叫我雯子小姐的小爷
先摆一张问题的截图,nginx的error.log
问题显示的是upstream prematurely closed connection while reading response header from upstream, ...
image.png
这个可以理解为,nginx收到了一个GET请求,但是,当我将这个转交给uwsgi处理的时候,无法联系上uwsgi。然后我又查看了uwsgi的日志,开启后是正常的运行状态,但是,当我试图进入网站时,他会显示 ‘-- unavailable modifier requested: 0'
这其实就是Python的映射问题,需要安装一个插件,uwsgi-plugin-python(如果用的Python3 的话是 uwsgi-plugin-python3),可以直接 sudo apt install uwsgi-plugin-python 的方式来安装,
sudo apt install uwsgi-plugin-python #python
sudo apt install uwsgi-plugin-python3 #python3
然后在uwsgi的配置文件中加上
lugin = python3 # python3
plugin = python #python
下面附上我的uwsgi配置和nginx配置
#uwsgi.ini
[uwsgi]
socket = 127.0.0.1:8001
#运行在127.0.0.1:8001端口上
chdir = /mnt/websites/flask
#flask程序的目录在chdir这里定义
wsgi-file = app.py
#flask主程序名字
callable = app
程序中的主变量名字
buffer-size=32768
接受的大小,需设置一下,不然也会出错
plugin = python3
#添加Python的映射
processes = 4
threads = 2
logto = /mnt/websites/log/%n.log
stats = 127.0.0.1:9191
# nginx.conf
server {
listen 81;
server_name 192.168.1.100;
#charset koi8-r;
access_log /mnt/websites/log/access.log;
error_log /mnt/websites/log/error.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
uwsgi_param UWSGI_PYHOME /usr/local/bin/pythonenv/flaskenv;
uwsgi_param UWSGI_CHDIR /mnt/websites/flask;
uwsgi_param UWSGI_SCRIPT app:app;
}
}
配置完成后将nginx.conf 放到 /etc/nginx/conf.d/ 文件夹下,并且重启nginx服务以及uwsgi服务
sudo mv nginx.conf /etc/nginx/conf.d/
sudo /etc/init.d/nginx restart
uwsgi -d --ini uwsgi.ini #-d意味着后台守护运行,--ini是从ini文件中读取配置
这样在浏览器输入192.168.1.100:81(或者你的公网地址:81)就会自动跳转到你的flask网站