简介
- 介绍
uWSGI 是一个快速的、纯C语言开发的、自维护的、对开发者友好的 WSGI 服务器,旨在提供专业的 Python web应用发布和开发。 - 安装
uwsgi是python的一个包,所以直接命令安装即可
pip install uwsgi
名词解析
WSGI:
英文全称:Web Server Gateway Interface,Web服务网管接口,简单来说它是一种Web服务器和应用程序间的通信规范。
uwsgi:
uwsgi是一种通信协议,不过跟WSGI分属两种东西,该协议下速度比较快。
uWSGI:
uWSGI是一个Web Server,并且独占uwsgi协议,但是同时支持WSGI协议、HTTP协议等,它的功能是把HTTP协议转化成语言支持的网络协议供python使用。
启动方式
- 命令行启动
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
- 配置文件启动
由于uwsgi参数众多,通过命令行启动略显繁琐,uwsgi提供通过配置文件启动,支持的配置文件有一下格式:- ini
- xml
- json
- yaml
默认支持格式为ini,同样为官方推荐格式。
- 配置文件:
# 文件名:uwsgi.ini
[uwsgi]
http = 127.0.0.1:8080 # 可直接当web服务器,也可用来连接nginx
# socket = 127.0.0.1:8080 # 与nginx连用时使用
chdir = /zet/ZetCore # 设置工作目录
wsgi-file = ZetCore.wsgi # 指定与web程序通讯文件
# module = ZetCore.wsgi:application # 明确web程序中的通讯模块
home = /zet/Venvs/ZetCoreVenv # 设置虚拟环境路径
pidfile = uwsgi.pid # 指定pid文件的位置,记录主进程的pid号。
worker = 16 # 启动进程数
# processes = 16 启动进程数 二者设置一个即可
buffer-size = 4096 # 设置用于uwsgi包解析的内部缓存区大小。默认是4k。
chmod-socket = 666 # unix socket是个文件,所以会受到unix系统的权限限制。如果你的uwsgi客户端没有权限访问uWSGI socket,你可以用这个选项设置unix socket的权限。
vacuum = true # 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件
disable-logging = true # 不记录请求信息的日志。只记录错误以及uWSGI内部消息到日志中。
log-maxsize = 10000000 # 设置日志最大为10m,超过10m自动分隔
logto = /var/log/zet/ZetCore.log
- 启动语句
uwsgi --ini /zet/ZetCore/uwsgi.ini
难点解析
一、配置文件中socket与http的区别:
- 当使用http时,uWSGI可以充当web服务器,客户端可直接访问,当然也可以通过nginx转发到uWSGI,此时nginx与uWSGI之间通讯协议是http协议。nginx中通过proxy_pass实现。
- 当使用socket时,uWSGI无法当做web服务器,只能通过nginx访问,此时nginx与uWSGI之间的通信协议是uwsgi,相比HTTP协议,此协议效率更高。nginx中通过uwsgi_pass实现。