Ubuntu 22.04.1 LTS 安装 supervisor
2024-01-25 15:39 猎手家园 阅读(1056) 评论(0) 编辑 收藏 举报Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
1、安装
apt-get install supervisor
2、安装完成后文件位置
配置文件:supervisor.conf ----> /etc/supervisor/supervisor.conf
执行文件:supervisor ----> /etc/init.d/supervisor
supervisord ----> /usr/bin/supervisord
pid文件:supervisord.pid ----> /var/run/supervisord.pid
sock文件:supervisor.sock ----> /var/run/supervisor.sock
3、配置 supervisor.conf
# supervisor 配置文件 [unix_http_server] file=/var/run/supervisor.sock chmod=0700 [supervisord] logfile=/root/export/logs/supervisor/supervisord.log pidfile=/var/run/supervisord.pid childlogdir=/root/export/logs/supervisor # 以下部分必须保留在RPC的配置文件中 # (supervisorctl/web接口)要工作,可以通过在单独的rpcinterface:节中定义它们来添加 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface # 通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致 [supervisorctl] serverurl=unix:///var/run/supervisor.sock # 配置web访问 #[inet_http_server] #port=127.0.0.1:9001 #username=user #password=123456 [include] files = /etc/supervisor/conf.d/*.conf
4、子进程配置,以nginx为例
conf.d/nginx-child.conf
# 项目名称 [program:nginx] # 脚本目录 directory=/usr/local/nginx/sbin # 脚本执行命令 command=/usr/local/nginx/sbin/nginx # supervisor启动的时候是否随着同时启动,默认true autostart=true # 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 autorestart=true # 这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1 startsecs=1 # 启动失败自动重试次数,默认是3 startretries=3 # 脚本运行的用户身份 user=root # 进程启动优先级,默认999,值小的优先启动 priority=1 # 日志输出 stderr_logfile=/root/export/logs/nginx/nginx_stderr.log stdout_logfile=/root/export/logs/nginx/nginx_stdout.log # 把 stderr 重定向到 stdout,默认 false redirect_stderr=true # stdout 日志文件大小,默认 50MB stdout_logfile_maxbytes=20M # stdout 日志文件备份数,默认 10 stdout_logfile_backups=20
5、启动
/etc/init.d/supervisor start
6、常用命令
supervisorctl status #查看所有进程的状态 supervisorctl stop nginx #停止子进程nginx supervisorctl start nginx #启动子进程nginx supervisorctl restart #重启 supervisorctl update #配置文件修改后使用该命令加载新的配置 supervisorctl reload #重新启动配置中的所有程序
说明1:把 nginx 换成 all 可以管理配置中的所有进程。
说明2:直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。