zoukankan      html  css  js  c++  java
  • flask_11:uWISG简介及配置介绍

    1、回顾:

    (1)flask_9:Nginx简介及配置介绍

    (2)flask_10:Nginx和uWSGI服务器之间是如何通信的?

    python web 开发的线上流程图:

    由上面的介绍可以看出,uwsgi 服务器的作用是,在接收到nginx转发的请求后,根据自身的 uwsgi 和 WSGI 协议,找到对应的 Django/Flask 框架,Django/Flask 框架下的应用进行逻辑处理后,将返回值发送到 uwsgi 服务器,然后 uwsgi 服务器再返回给 nginx,最后 nginx将返回值返回给浏览器进行渲染显示给用户。

    2、uWISG简介:

    uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

    3、WSGI / uwsgi / uWSGI 区分

    • WSGI是一种通信协议。
    • uwsgi同WSGI一样是一种通信协议。
    • 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器

    4、为什么有了uWSGI还需要nginx?

    一种情况,本地有多个 web 服务,有 Python、php、java 编写的,都想监听 80 端口,这个时候就必须有一个负责转发的服务了。
    
    如果本机确定只跑这一个服务,但是 uwsgi 和 gevent 对于静态资源处理的并不是很好,一是性能问题,二是各种 HTTP 请求缓存头,处理的也没有 Nginx 完善。
    
    然后还有一些安全问题,Nginx 作为专业服务器,暴露在公网相对比较安全(虽然有著名的心血漏洞),uwsgi 和 gevent 的话,漏洞恐怕只比 Nginx 多而不是少。
    
    再来就是支持的协议,uwsgi 和 gunicon 早期是不支持 https 的,只能提供 http 给浏览器访问。虽然现在这两者都支持了,但是以后的 spdy 和http2,恐怕也是 nginx 跟进更快一些。
    
    还有一些运维优势,比如服务器被人 CC,这是一种非常常见的情况,nginx 可以比较方便的把一些 IP 加入黑名单,直接改配置文件就好了。要是 uwsgi 或者 gunicorn,恐怕还要修改自己应用的代码,把 IP 过滤写进去。

    5、UWSGI常用参数介绍

    chdir=/xxx/xxx # 指定项目目录
    home=/xxx/xxx # 指定虚拟环境变量
    wsgi-file=xxx # 指定加载WSGI文件
    socket=xxx # 指定uwsgi的客户端将要连接的socket的路径(使用UNIX socket的情况)或者地址(使用网络地址的情况)。
    callable=xxx # uWSGI加载的模块中哪个变量将被调用
    master=true # 指定启动主进程
    processes=4 # 设置工作进程的数量
    threads=2 # 设置每个工作进程的线程数
    vacuum=true # 当服务器退出时自动删除unix socket文件和pid文件
    logfile-chmod=644 # 指定日志文件的权限
    daemonize=%(chdir)/xxx.log # 进程在后台运行,并将日志打印到指定文件
    pidfile=%(chdir)/xxx.pid # 在失去权限前,将主进程pid写到指定的文件
    uid=xxx # uWSGI服务器运行时的用户id
    gid=xxx # uWSGI服务器运行时的用户组id
    procname-prefix-spaced=xxx # 指定工作进程名称的前缀

    6、示例配置

    [uwsgi]
    chdir=/home/git/www/cloudmonitor # 指定项目目录
    home=/home/git/www/cloudmonitor/.env # 指定python虚拟环境
    wsgi-file=manager.py # 指定加载的WSGI文件
    callable=app # 指定uWSGI加载的模块中哪个变量将被调用
    master=true # 启动主线程
    processes=4 # 设置工作进程的数量
    threads=2 # 设置每个工作进程的线程数
    socket=127.0.0.1:8888 # 指定socket地址
    vacuum=true # 当服务器退出时自动删除unix socket文件和pid文件
    logfile-chmod=644 # 指定日志文件的权限
    daemonize=%(chdir)/cloudmonitor.log # 进程在后台运行,并将日志打印到指定文件
    pidfile=%(chdir)/cloudmonitor.pid # 在失去权限前,将主进程pid写到指定的文件
    uid=git # uWSGI服务器运行时的用户id
    gid=git # uWSGI服务器运行时的用户组id
    procname-prefix-spaced=cloudmonitor # 指定工作进程名称的前缀

    本文转载自:

    (1) uWSGI常用参数介绍

    (2) Python uWSGI 安装配置

     

  • 相关阅读:
    HDU 5059 Help him
    HDU 5058 So easy
    HDU 5056 Boring count
    HDU 5055 Bob and math problem
    HDU 5054 Alice and Bob
    HDU 5019 Revenge of GCD
    HDU 5018 Revenge of Fibonacci
    HDU 1556 Color the ball
    CodeForces 702D Road to Post Office
    CodeForces 702C Cellular Network
  • 原文地址:https://www.cnblogs.com/hailin2018/p/13579874.html
Copyright © 2011-2022 走看看