supervisor在centos中的使用
- 安装命令
# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord # 开机自启动
# systemctl start supervisord # 启动supervisord服务
- 添加系统开机自启动
查看文件 /usr/lib/systemd/system/supervisord.service 是否存在有表明已经添加开机自启动。
- 修改supervisor.conf文件
vim /etc/supervisord.conf 文件
根据需求情况。配置[inet_http_server]区块,此区块为supervisor的web界面管理工具。
其中各个配置如下。
port=127.0.0.1:9001 ; Web 管理后台运行的 IP 和端口,如果开放到公网,需要注意安全性
username=user ; 登录管理后台的用户名
password=123 ; 登录管理后台的密码
查看[include]模块,此模块为包含的配置文件。
默认配置为
files = /etc/supervisord.d/*.conf
- 配置需要守护的程序
在/etc/supervisord.d/目录下添加文件后缀为 ".conf" 的文件。
配置文件的模板为
[program:my_program(程序名)]
directory=/app/my_program/(执行目录)
command=./my_program(启动程序命令)
user=root (进程执行的用户身份)
autostart=true (程序意外退出是否自动重启)
autorestart=true (当进程在running状态下exit时,是否自动重启,允许配置false, unexpected, or true三个状态,如果是false,不会自动重启,如果是unexpected,则在异常退出时进行自动重启,true则是不考虑状态码,始终自动重启;默认unexpected)
startsecs=1(项目启动后认为项目启动成功,变更进程启动状态从STARTING到RUNNING的秒数,默认是1s;)
startretries=3(失败重启次数,超过这个次数直接将状态置为FATAL,进程启动失败,默认3次)
stderr_logfile=/app/my_program/runtime/stderr.log (默认AUTO,redirect_stderr!=true的时候,stderr的输出文件)
stdout_logfile=/app/my_program/runtime/stdout.log (进程标准输出内容写入文件,如果没有设置stdout_logfile或者使用默认值AUTO,supervisor会自动选择一个本地文件,如果设置为NONE,就不创建log文件了;)
- 启动需要守护的程序
supervisorctl update // 更新配置文件
supervisorctl restart 服务名称;
服务名称为 [program:my_program(程序名)] 的程序名。
- 查看程序运行日志、错误日志
使用linux命令:"tail -f (自定义配置文件中的stderr_logfile值。)"。
如果自定义程序中控制台会输出内容。 使用”tail -f (自定义配置文件中的stdout_logfile值。)“即可查看,我们也可以通过supervisor的web管理界面查看。
例如 "tail -f /app/my_program/runtime/stdout.log", 文件地址也可以模糊输入。例如 "tail -f /app/my_program/runtime/std*"