如果将一次通信转化为“对话”的过程
Nginx:hello wsgi,我刚收到一个请求,你准备下然后让django来处理吧 WSGI:好的nginx,我马上设置环境变量,然后把请求交给django Django:谢谢WSGI,我处理完请求马上给你响应结果 WSGI:好的,我在等着 Django:搞定啦,麻烦wsgi吧响应结果传递给nginx WSGI:太棒了,nginx,响应结果请收好,已经按照要求传递给你了 nginx:好滴。我把响应交给用户。合作愉快 uwsgi启动python web让你的django在linux上,支持并发形式启动,支持多进程,多线程,乃至于协程的一个C语言编写的高性能工具
1.安装uwsgi工具 pip3 install -i https://pypi.douban.com/simple uwsgi 2.编写uwsgi.ini配置文件,以多进程形式启动tf_crm touch uwsgi.ini #手动创建此uwsgi的配置文件,写入如下的内容参数,去启动crm # 写入如下的功能性的参数配置,用于启动项目 # 这些部署的流程,是国外的uwsgi官网,给与的用法,我们照着用即可 # 注意要根据你自己的目录,修改如下的参数 [uwsgi] # Django-related settings # the base directory (full path) # 填写crm项目的第一层绝对路径 chdir = /opt/sssss/ # Django\'s wsgi file # 填写crm项目第二层的相对路径,找到第二层目录下的wsgi.py # 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件 module = sssss.wsgi # the virtualenv (full path) # 填写虚拟环境解释器的第一层工作目录 home = /opt/sssss/saas # process-related settings # master master = true # maximum number of worker processes # 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1 ,单核的cpu填写几? # 如果是单进程,十万个请求,都丢给一个进程去处理 # 3个工作进程,十万个请求,就分给了3个进程去分摊处理 processes = 3 # the socket (use the full path to be safe # 这里的socket参数,是用于和nginx结合部署的unix-socket参数,这里临时先暂停使用 # socket = 0.0.0.0:8000 # 线上不会用http参数,因为对后端是不安全的,使用socket参数是安全的连接,用nginx反向代理去访问 # 后端程序是运行在防火墙内部,外网是无法直接访问的 # 临时使用http参数,便于我们用浏览器调试访问 http = 0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true 3.此时可以用命令,基于uwsgi协议的一个高性能web后端启动了 uwsgi --ini ./uwsgi.ini #指定配置文件启动后端 4.此时crm项目,已经用uwsgi支持了3个进程的启动了,但是由于uwsgi对静态文件的解析性能很弱,线上是丢给nginx去处理的配置uwsgi
[uwsgi] #使用nginx连接时使用,Django程序所在服务器地址 socket=0.0.0.0:8001 #直接做web服务器使用,Django程序所在服务器地址 #http=192.168.88.128:8003 #项目目录 chdir=http://www.likecs.com/home/yulinapp #项目中wsgi.py文件的目录,相对于项目自录 wsgi-file=yulinapp/industrial_infomation_api/wsgi.py #进程数 processes=4 #线程数 threads=2 #uwsgi服务器的角色 master=True #存放进程编号的文件 pidfile=uwsgi. pid #用户 uid=root gid=root