uwsgi使用介绍
2017-09-11 本文已影响1842人
红薯爱帅
1,简单介绍
WSGI(Web Server Gateway Interface),定义了web服务器(nginx、apache、iis等)和 web应用(或者将web框架,flask、django等)之间的接口规范。也就是说,只要 web服务器和 web应用都遵守WSGI协议,那么 web服务器和 web应用就可以随意的组合。
uwsgi.jpguwsgi的启动可以把参数加载命令行中,也可以是配置文件 .ini, .xml, .yaml 配置文件中,个人用的比较多得是 .ini 文件。
通过uwsgi --help
可以查看得到:
-x|--xmlconfig load config from xml file
-x|--xml load config from xml file
--ini load config from ini file
-y|--yaml load config from yaml file
-y|--yml load config from yaml file
2,安装部署
- 一键安装
pip install uwsgitop
- 源码安装
# 可以去pypi,搜索uwsgi下载:
https://pypi.python.org/pypi/uWSGI/
# 安装命令如下:
tar xvzf uwsgi-2.0.9.tar.gz
cd uwsgi-2.0.9
make
- 目录规划
(.env) zhangshuaipeng@orange:~/web/flask/mysite$ tree .
.
├── hello.py
├── hello.pyc
├── uwsgi
│ ├── uwsgi.log # 日志文件,通过该文件查看uwsgi的日志
│ ├── uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止
│ ├── uwsgi.sock # socket文件,配置nginx时候使用
│ └── uwsgi.status # status文件,可以查看uwsgi的运行状态
└── uwsgi.ini
- 配置使用
(.env) zhangshuaipeng@orange:~/web/flask/mysite$ vi uwsgi.ini
[uwsgi]
chdir=/home/zhangshuaipeng/web/flask/mysite/
home=/home/zhangshuaipeng/web/flask/mysite/.env
module=hello # python文件的名称
callable=app
master=true
processes=2 # worker进程个数
chmod-socket=666
logfile-chmod=644
uid=zhangshuaipeng_web
gid=zhangshuaipeng_web
procname-prefix-spaced=mysite # uwsgi的进程名称前缀
py-autoreload=1 # py文件修改,自动加载
#http=0.0.0.0:8080 # 监听端口,测试时候使用
vacuum=true # 退出uwsgi是否清理中间文件,包含pid、sock和status文件
socket=%(chdir)/uwsgi/uwsgi.sock # socket文件,配置nginx时候使用
stats=%(chdir)/uwsgi/uwsgi.status # status文件,可以查看uwsgi的运行状态
pidfile=%(chdir)/uwsgi/uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止
daemonize=%(chdir)/uwsgi/uwsgi.log # 日志文件,通过该文件查看uwsgi的日志
- 常用命令
uwsgi --ini uwsgi.ini # 启动
uwsgi --reload uwsgi.pid # 重启
uwsgi --stop uwsgi.pid # 关闭
3,服务监控
- 读取uwsgi实时状态
uwsgi --connect-and-read uwsgi/uwsgi.status
读取的结果是个json串,包括每个总的状态,每个work是状态,响应时间等,非常全面,也有一些开源的监控可以使用
- 实时动态查看状态 - uwsgitop
这里有个uwsgi官方制作的实用工具 uwsgitop, 下面看下效果。
# pip install uwsgitop
# uwsgitop uwsgi/uwsgi.status
uwsgi-2.0.9 - Mon Sep 14 11:20:44 2015 - req: 0 - RPS: 0 - lq: 0 - tx: 0
node: lzz-rmbp - cwd: /Users/liuzhizhi/erya/portal - uid: 501 - gid: 20 - masterpid: 12748
WID % PID REQ RPS EXC SIG STATUS AVG RSS VSZ TX RunT
1 0.0 12749 0 0 0 0 idle 0ms 0 0 0 0
2 0.0 12750 0 0 0 0 idle 0ms 0 0 0 0
3 0.0 12751 0 0 0 0 idle 0ms 0 0 0 0
4 0.0 12752 0 0 0 0 idle 0ms 0 0 0 0
5 0.0 12753 0 0 0 0 idle 0ms 0 0 0 0
6 0.0 12754 0 0 0 0 idle 0ms 0 0 0 0
7 0.0 12755 0 0 0 0 idle 0ms 0 0 0 0
8 0.0 12756 0 0 0 0 idle 0ms 0 0 0 0
4,参考资料
-
如何理解Nginx, WSGI, Flask之间的关系
http://blog.csdn.net/lihao21/article/details/52304119 -
uWSGI的安装与配置
http://blog.csdn.net/chenggong2dm/article/details/43937433 -
uWSGI实战之操作经验
http://blog.csdn.net/orangleliu/article/details/48437319 -
uwsgi安装参考
http://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html -
uwsgi配置参考
http://uwsgi-docs.readthedocs.io/en/latest/Options.html#vacuum -
Nginx+uWSGI
https://my.oschina.net/guol/blog/121418