项目部署之supervisor使用

supervisor 是基于 python 的任务管理工具,用来自动运行各种后台任务,当然你也能直接利用 nohup 命令使任务自动后台运行,但如果要重启任务,每次都自己手动 kill 掉任务进程,这样很繁琐,而且一旦程序错误导致进程退出的话,系统也无法自动重载任务。
 

安装:

pip3 install supervisor

通过命令生成supervisor的配支文件

echo_supervisord_conf > /etc/supervisord.conf

然后再/etc/supervisord.conf末尾添加上如下代码

    [program:mycrm]是被管理的进程配置参数,mycrm是进程的名称
    [program:mycrm]
    command=/opt/Envs/crm_env/bin/uwsgi --ini /opt/mycrm.ini; 程序启动命令
    autostart=true       ; 在supervisord启动的时候也自动启动
    startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
    autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
    startretries=3       ; 启动失败自动重试次数,默认是3
    user=root         ; 用哪个用户启动进程,默认是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/mycrm/logs/mycrm.out
    stopasgroup=true    ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程,应改为true,否则僵尸
    killasgroup=true     ;默认为false,向进程组发送kill信号,包括子进程

最后启动supervisor,完成uWSGI启动django,nginx反向代理
 

supervisord -c /etc/supervisord.conf #启动supervisor
supervisorctl -c /etc/supervisord.conf restart my  #重启my项目
supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]

其它命令:

一、添加好配置文件后, 因为在配置文件中配置了,启动supervisor时启动项目,所以启动supervisor时项目都已经启动
    supervisord -c /etc/supervisor.conf
二、更新新的配置到supervisord    
    supervisorctl 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都不会自动重启。
 

上一篇:Centos7 防火墙相关命令

下一篇:项目部署之virtualenv的使用