Uwsgi ye是一个web服务器
项目部署:基本原理 利用nginx 反向代理到Uwsgi的端口 通过socket协议, nginx 可以快速的处理静态资源,uwsgi不行 动态资源给uwsgi处理
启动 python manage.py runserver 0.0.0.0:8000 也是通过wsgi协议 只不过是一个
单机启动django项目,性能低,默认使用wsgiref模块,性能低的wsgi协议
1 下载uwsgi 准备好项目的虚拟环境 前面有提到 , 在环境下 下载uWSGI pip3 install uwsgi 2 就可以启动uwsgi了 uwsgi --http :8000 --wsgi-file test/wsgi.py --py-autoreload=1 参数解析 --http 启动在8000端口, --wsgi-file 指定项目文件夹路径 或者用 --module test.wsgi 参数就要这样 --py-autoreload是热加载程序 项目改动就可以自己加载了 3 每次都这样启动就很麻烦 可以通过配置文件来启动 vim /etc/uwsgi/uwsgi.ini 配置内容如下: 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 # wsgi的文件包 # the virtualenv (full path) home = /opt/venv 项目的虚拟环境 # process-related settings # master master = true # maximum number of worker processes processes = 1 开启进程数 一般是cup个数 也有说是cpu3倍的 # the socket (use the full path to be safe socket = 0.0.0.0:8000 socket 协议开启 或者改成http协议开启(http是在测试时启用) socket 是配合nginx启动的 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true #daemonize = /opt/logs/uwsgi.log # 守护进程的方式 这要是用supervisor启动时 不要写他 跟supervisor里面的日志冲突
设置完配置之后启动方法 uwsgi --ini /etc/uwsgi/uwsgi.ini
supervisor
1 下载(在全局下载就好) pip3 install supervisor 2 echo_supervisord_conf > /etc/supervisord.conf 生成配置文件 3 配置配置文件 supervisord.conf配置文件参数解释 [program:xx]是被管理的进程配置参数,xx是进程的名称 [program:xx] command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令 autostart=true ; 在supervisord启动的时候也自动启动 startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 startretries=3 ; 启动失败自动重试次数,默认是3 user=tomcat ; 用哪个用户启动进程,默认是root priority=999 ; 进程启动优先级,默认999,值小的优先启动 redirect_stderr=true ; 把stderr重定向到stdout,默认false stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10 ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out # 这要是开启了就不要开启uwsgi保护进程开启 冲突 stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程
4 最后启动supervisor,完成uWSGI启动django,nginx反向代理
supervisord -c /etc/supervisord.conf #启动supervisor
supervisorctl -c /etxc/supervisord.conf #重启my项目
supervisorctl 进入 supervisor shell
5
一、添加好配置文件后 二、更新新的配置到supervisord supervisorctl update 更新了配置文件后要update 启动 三、重新启动配置中的所有程序 supervisorctl reload 四、启动某个进程(program_name=你配置中写的程序名称) supervisorctl start program_name 五、查看正在守候的进程 supervisorctl 六、停止某一进程 (program_name=你配置中写的程序名称) pervisorctl stop program_name 七、重启某一进程 (program_name=你配置中写的程序名称) supervisorctl restart program_name 八、停止全部进程 supervisorctl stop all 注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。