使用uvicorn替代uwsgi部署django3服务
pip install uvicorn # 使用pip安装
uvicorn myproject.asgi:application 启动命令,asgi.py文件默认在settings.py文件同级目录。http://www.uvicorn.org/settings/ uvicorn 可配置host port worker等参数
supervisor管理uvicorn和日志
supervisor使用2.2版本
- 名称 # 随意填写推荐使用项目名
- 启动用户 # 推荐使用root
- 运行目录 # 选择项目目录
- 启动命令 # venv/bin/uvicorn --fd 0 myproject.asgi:application 使用python环境的bin目录,未安装虚拟环境或conda使用usr/bin/ 目录, 由supervisor统一管理服务端口必须加 --fd 0 参数
- 进程数量 # 推荐使用核数*2
填完以上内容完成添加守护进程,进入子配置文件选择对应配置,myproject.ini
[fcgi-program:myproject] # 第一行必须修改为fcgi-program,默认为program
socket=tcp://localhost:9987 # 第二行需要手动配置与nginx通信的端口
command=venv/bin/uvicorn --fd 0 myproject.asgi:application
directory=/home/projects/myproject/
autorestart=true
startsecs=3
startretries=3
stdout_logfile=/www/server/panel/plugin/supervisor/log/myproject.out.log #日志目录可改为/home/log
stderr_logfile=/www/server/panel/plugin/supervisor/log/myproject.err.log
stdout_logfile_maxbytes=0 # 默认超过2MB大小自动切割,推荐使用0不作切割,由其它工具切割,详细配置请看下文
stderr_logfile_maxbytes=0
user=root
priority=999
numprocs=4
process_name=%(program_name)s_%(process_num)02d
使用logrotate进行日志管理按天备份
centos默认安装logrotate,若未安装请自行安装
- 进入/etc/logrotate.d/目录创建自定义配置 # 推荐使用vim /etc/logrotate.d/superviosr-log
- 进入文件使用如下配置
/www/server/panel/plugin/supervisor/log/*.log { #日志目录,使用*通配所有.log后缀日志文件
size=10M # 限制日志大于10M才切割
daily # 指定转储周期为每天
rotate 200 # 指定日志文件删除之前的转储次数,200表示保留200次备份
dateext # 使用日期为转储文件的后缀
dateyesterday # 使用昨天日期作为文件后缀
copytruncate # 用于还在打开中的日志文件,把当前日志备份再截断
compress # 通过gzip压缩转储以后的日志
missingok # 忽略错误
notifempty # 如果没有日志 不进行轮询
}
- logrotate -vf /etc/logrotate.d/log-file # 手动执行查看运行效果,logrotate默认执行计划在/etc/anacrontab ,一般会在每天的3点05分到3点50分之间执行
- -f 强制轮询 -v 打印logrotate 日志