uwsgi使用介绍

作者: 红薯爱帅 | 来源:发表于2017-09-11 18:22 被阅读1842次

    1,简单介绍

    WSGI(Web Server Gateway Interface),定义了web服务器(nginx、apache、iis等)和 web应用(或者将web框架,flask、django等)之间的接口规范。也就是说,只要 web服务器和 web应用都遵守WSGI协议,那么 web服务器和 web应用就可以随意的组合。

    uwsgi.jpg

    uwsgi的启动可以把参数加载命令行中,也可以是配置文件 .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,参考资料

    相关文章

      网友评论

        本文标题:uwsgi使用介绍

        本文链接:https://www.haomeiwen.com/subject/kebfsxtx.html