参考: https://www.cnblogs.com/pyyu/p/9481344.html
一、什么是wsgi, uwsgi, uWSGI
wsgi
全称web server gateway interface,wsgi不是服务器,也不是python模块,
只是一种协议,描述web server如何和web application通信的规则。
运行在wsgi上的web框架有bottle,flask,django
uwsgi
和wsgi一样是通信协议,是uWSGI服务器的单独协议,用于定义传输信息的类型
uWSGI
是一个web服务器,实现了WSGI协议,uwsgi协议
二、安装uWSGI
复制代码 进入虚拟环境venv,安装uwsgi (venv) [root@slave 192.168.11.64 /opt]$pip3 install uwsgi 检查uwsgi版本 (venv) [root@slave 192.168.11.64 /opt]$uwsgi --version 2.0.17.1 #检查uwsgi python版本 uwsgi --python-version
三、uWSG简单运行
#启动一个python uwsgi --http :8000 --wsgi-file test.py http :8000: 使用http协议,端口8000 wsgi-file test.py: 加载指定的文件,test.py #test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3
热加载python程序
在启动命令后面加上参数 uwsgi --http :8088 --module mysite.wsgi --py-autoreload=1 #发布命令 command= /home/venv/bin/uwsgi --uwsgi 0.0.0.0:8000 --chdir /opt/mysite --home=/home/venv --module mysite.wsgi #此时修改django代码,uWSGI会自动加载django程序,页面生效
运行django程序
#mysite/wsgi.py 确保找到这个文件 uwsgi --http :8000 --module mysite.wsgi module mysite.wsgi: 加载指定的wsgi模块
四、使用.ini配置文件加载python程序
4.1 uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建uwsgi_nginx.ini,添加如下配置:
# mysite_uwsgi.ini file [uwsgi] # Django-related settings # the base directory (full path) chdir = /opt/mysite # Django's wsgi file module = mysite.wsgi # the virtualenv (full path) home = /opt/venv # process-related settings # master master = true # maximum number of worker processes processes = 1 # the socket (use the full path to be safe socket = 0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
#添加配置选择 [uwsgi] #配置和nginx连接的socket连接 socket=127.0.0.1:8002 #配置项目路径,项目的所在目录 chdir=/home/pp1709/wangsen_work/wsftp/myweb #配置wsgi接口模块文件路径 wsgi-file=myweb/wsgi.py #配置启动的进程数 processes=4 #配置每个进程的线程数 threads=2 #配置启动管理主进程 master=True #配置存放主进程的进程号文件 pidfile=uwsgi.pid #配置dump日志记录 daemonize=uwsgi.log`
4.2 指定配置文件启动
uwsgi --ini /etc/uwsgi_nginx.ini #不加--ini也可以
- 显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功。
- 通过 ps -ef|grep uwsgi 查看确认是否uwsgi启动。
4.3 停止运行uwsgi,通过包含主进程编号的文件设置停止项目
> uwsgi --stop uwsgi.pid
4.4 重启uwsgi
> uwsgi --reload uwsgi.pid