wsgi (Web Server Gateway Interface)web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。
uwsgi 是一种传输协议,用于定义传输信息的类型。
uWSGI 是实现了uwsgi协议WSGI的web服务器。
python环境
安装环境管理
pip install virtualenvwrapper
加载相关环境配置
which virtualenvwrapper.sh
# 查找到后,用source进行加载
source /usr/local/bin/virtualenvwrapper.sh
创建环境
mkvirtualenv envname
查看环境
lsvirtualenv
进入环境
workon envname
退出环境
deactivatec
删除环境
rmvirtualenv envname
环境中安装相关包
pip install uwsgi flask
uWSGI
测试
uwsgi --version
报错1
uwsgi: error while loading shared libraries: libssl.so.1.1
uwsgi: error while loading shared libraries: libcrypto.so.1.1
uwsgi loading shared libraries:libicui18n.so.58
## ldd uwsgi 查看缺少哪些动态文件,然后将对应anaconda3/lib 下的文件cp到对应 /lib64下解决
报错2
uwsgi: /lib64/./libstdc++.so.6: version `CXXABI_1.3.8' not found_zan110120
## 处理办法查看/lib64下libstdc++.so.6的指向是否与anaconda3/lib下的libstdc++.so.6指向是否一致,若不一致,重新在lib64生成对应软链接[ ln -s 指向的文件 链接名称]
uwsgi.ini文件编写
[uwsgi]
#配合nginx使用
socket = 127.0.0.1:8000
# 如果是单独使用就使用
# http = ip:port
# 配置中如果使用socket,直接访问时就会报invalid request block size: 21327 (max 4096)...skip
chdir = 自己项目路径
#wsgi文件 run就是flask启动文件去掉后缀名 app是run.py里面的Flask对象
module = run:app
#指定工作进程
processes = 4
#主进程
master = true
#每个工作进程有2个线程
threads = 2
#指的后台启动 日志输出的地方
daemonize = uwsgi.log
#保存主进程的进程号
pidfile = uwsgi.pid
启动参数
uwsgi --ini uwsgi.ini
uwsgi -d --ini uwsgi.ini
# 后台启动,如果有生成--ini文件,使用rm ./--ini删除
pkill -f uwsgi -9
# 停止
uwsgi --stop uwsgi.pid
# 停止
uwsgi --reload uwsgi.pid
# 重启
nginx
新建一个配置文件xx.conf
server {
# 监听端口
listen 80;
# 监听ip 换成服务器公网IP
server_name 127.0.0.1;
#动态请求
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
#静态请求
location /static {
alias /xxxxt/static;
}
}
也可以和原已经的配置文件共用一个server配置文件,只添加location /xx1,同理flask中的请求也添加到对应的 /xx1
提示nginx: [warn] conflicting server name “localhost” on 0.0.0.0:80, ignored
代表配置文件中重复绑定了server name,将重复清理即可。
nginx -s reload