安装
安装Python包管理工具
yum install python-setuptools
安装Supervisor
easy_install supervisor
配置
生成supervisor的初始化配置文件
通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,如下所示:
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改配置文件
修改supervisord.conf。在文件尾部添加如下配置。
vi /etc/supervisor/supervisord.conf
在文档的末尾添加如下代码:
;conf.d 为配置表目录的文件夹,需要手动创建
[include]
files = conf.d/*.conf
查询替换supervisord.conf配置中的信息:
原文内容 | 替换内容 |
---|---|
file=/tmp/supervisor.sock | file=/var/run/supervisor.sock |
logfile=/tmp/supervisord.log | logfile=/var/log/supervisord.log |
pidfile=/tmp/supervisord.pid | pidfile=/var/run/supervisord.pid |
serverurl=unix:///tmp/supervisor.sock | serverurl=unix:///var/run/supervisor.sock |
创建守护进程配置文件夹
mkdir 0755 /etc/supervisor/conf.d
加载配置
supervisord -c /etc/supervisor/supervisord.conf
重新加载守护进程
supervisorctl reload
配置Supervisor开机启动
为supervisor创建一个服务
vi /usr/lib/systemd/system/supervisord.service
粘贴以下代码
# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
开机启动
设置
systemctl enable supervisord
验证是否开机启动配置成功
systemctl is-enabled supervisord
添加守护进程
添加守护进程配置文件:
vi /etc/supervisor/conf.d/Test_MonitorRabbitmqAuditResultMessageQueue.conf
以下是配置文件正文
#程序名称,终端控制时需要的标识,此处示例标识:Test_MonitorRabbitmqAuditResultMessageQueue
[program:Test_MonitorRabbitmqAuditResultMessageQueue]
#进程名称
process_name=%(program_name)s_%(process_num)02d
#运行程序的命令
command=php /home/wwwroot/test/think monitor:rabbitmq:audit_result_message_queue
#命令执行的目录
directory=/home/wwwroot/test
#程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
autorestart=true
#启动失败自动重试次数,默认是3
startretries=3
#程序是否自动启动
autostart=true
#用哪个用户启动进程,默认是root
user=root
#进程数
numprocs=10
#进程启动优先级,默认999,值小的优先启动
priority=999
#把stderr重定向到stdout,默认 false
redirect_stderr=true
#错误日志文件
stderr_logfile=/var/log/Test_MonitorRabbitmqAuditResultMessageQueue.err.log
#输出日志文件
stdout_logfile=/var/log/Test_MonitorRabbitmqAuditResultMessageQueue.out.log
常用的相关管理命令
supervisorctl restart <application name> ;重启指定应用
supervisorctl stop <application name> ;停止指定应用
supervisorctl start <application name> ;启动指定应用
supervisorctl restart all ;重启所有应用
supervisorctl stop all ;停止所有应用
supervisorctl start all ;启动所有应用
web管理界面开启
修改配置
vi /etc/supervisor/supervisord.conf
设置访问端口,用户名,密码
示例中的:*:9001
代表本机任意ip加端口即可访问
开启防火墙端口
firewall防火墙
firewall-cmd --zone=public --add-port=9001/tcp --permanent && firewall-cmd --reload
iptables防火墙
iptables -A INPUT -p tcp -m tcp --dport 9001 -j ACCEPT && service iptables save && service iptables restart
配置无法加载提示以下错误解决方案
[root@localhost etc]# supervisord -c /etc/supervisor/supervisord.conf
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h
[root@localhost etc]#
首先查询supervisord的进程ID
ps -ef | grep supervisord
执行后可以获得supervisord的进程ID,然后kill掉supervisord的进程
kill -s SIGTERM 14002
接着重新加载配置
supervisord -c /etc/supervisor/supervisord.conf
演示操作截图如下:第一行的14002即为进程ID