4.1 安装
- 安装
$ pip3 install -i https://pypi.douban.com/simple/ uwsgi
4.2 配置文件
-
配置文件
$ mkdir /opt/venv_crm/uwsgi/ # 创建配置文件目录 $ vim /opt/venv_crm/uwsgi/uwsgi.ini # 创建配置文件 ####################################### 主要配置 ############################################ [uwsgi] # the base directory (full path) django 程序的主目录绝对路径 chdir = /root/crmProject/ # Django's wsgi file #wsgi-file =src/wsgi.py # 找到第二层目录下的wsgi.py module = crmProject.wsgi # python环境 # 如果是虚拟环境,填写虚拟环境的第一层绝对路径 home = /root/venv01 #the local unix socket file than commnuincate to Nginx 用于和 nginx 进行数据交互的端口 # 用于和nginx结合部署的unix-socket参数 # 使用此协议运行后台,浏览器就无法通过http协议直接访问uwsgi+django项目,而是通过nginx反向代理,更安全 socket = 0.0.0.0:8000 # 对外提供 http 服务的端口,线上不会用http参数,因为对后端是不安全的,临时使用方便浏览器调试 # http = :8000 master = true # 主进程 # maximum number of worker processes,优化建议:2*cpu核数+1 processes = 5 # clear environment on exit vacuum = true ########################################## end ############################################ #thread numbers startched in each worker process #threads = 10 #一个高阶的cheap模式,在启动的时候只会分配n个工作进程,并使用自适应算法启动新的进程 #cheaper = 10 #在经过sec秒的不活跃状态的进程会被销毁(进入了cheap模式),并最少保留cheaper指定的进程数 #idle = 3600 #monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况 stats = 127.0.0.1:9000 #设置一个请求的超时时间(秒),如果一个请求超过了这个时间,则请求被丢弃 harakiri = 60 #当一个请求被harakiri杀掉会,会输出一条日志 harakiri-verbose = true #开启内存使用情况报告 memory-report = true #设置平滑的重启(直到处理完接收到的请求)的长等待时间(秒) reload-mercy = 10 #设置工作进程使用虚拟内存超过N MB就回收重启 reload-on-as= 1024 #自动给进程命名 auto-procname = true #为进程指定前缀 procname-prefix-spaced = xc-mms #设置工作进程每处理N个进程就会被回收重启 max-requests=500000 #设置工作进程使用物理内存超过N MB就回收重启 reload-on-rss=100 #设置socket超时时间,默认4秒 socket-timeout=10 #限制http请求体的大小(Bytes) limit-post=4096 #不记录request日志,只记录错误日志 disable-logging = true #将日志打印到syslog上 #log-syslog = true # 后台运行,并输出日志 daemonize = /home/opadm/log/uwsgi.log stats=./uwsgi.status ########################################## 其它配置 ########################################## """ uid = root gid = root vhost = true //多站模式 no-site = true //多站模式是不设置入口模块和文件 workers = 2 //子进程数 reload-mercy = 10 //平滑的重启 vacuum = true //退出重启时清理文件 max=requests = 1000 //开启10000个进程后,自动respawn下 limit-as = 512 //将进程总内存量控制在512M buffer-size = 30000 pidfile = /var/run/uwsgi9090.pid //pid文件,用于下面脚本启动、停止该进程 daemonize = /website/uwsgi9090.log """
4.3 启动
-
启动
$ uwsgi --ini /etc/uwsgi/uwsgi.ini
-
关闭
$ uwsgi --stop uwsgi.pi
-
杀死进程
$ pkill -9 uwsgi
4.4 supervisor 快速启动
-
安装
$ yum -y install supervisor
-
配置文件
$ echo_supervisord_conf > /etc/supervisord.conf # 导出配置文件 $ vim /etc/supervisord.conf # 编辑配置文件 # 追加如下内容 [program:uwsgi_crm] command = /opt/python379/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini ; 绝对路径执行命令 autostart = true ; 在supervisord启动的时候也自动启动 startsecs = 10 ; 启动10秒后没有异常退出,表示启动成功,默认为1秒 autorestart = true ; 程序退出后自动重启,可选值[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 stopasgroup = true ; 默认为false,进程被杀死时,是否向进程组发送stop信号,包括子进程 killasgroup = true ; 默认为false,是向进程组发送kill信号,包括子进程
-
启动supervisord
$ supervisord -c /etc/supervisord.conf
-
进程管理
$ supervisorctl -c /etc/supervisord.conf >> status # 查看进程状态 >> stop uwsgi_crm # 停止uwsgi_crm进程 >> stop all # 停止所有进程 >> start uwsgi_crm # 开启uwsgi_crm进程 >> restart uwsgi_crm # 重启uwsgi_crm进程 >> exit # 退出
-
关闭
$ supervisorctl shutdown