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 安装配置

     

  • 相关阅读:
    verdi issues on license
    geci
    组合数据类型练习
    熟悉常用的Linux操作
    1.大数据概述
    c语言文法分析
    词法分析器#include<stdio.h> #include<string.h> #include<iostream.h> char prog[80],token[8]; char ch; int syn,p,m=0,n,row,sum=0; char *rwtab[6]={"begin","if","then","while","do","end"
    关于编译原理
    可变参数
    函数和指针
  • 原文地址:https://www.cnblogs.com/hailin2018/p/13579874.html
Copyright © 2011-2022 走看看