1.安装supervisor
root@debian-lege-pro:~# apt-get install supervisor
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
python-medusa python-meld3
Suggested packages:
python-medusa-doc
The following NEW packages will be installed:
python-medusa python-meld3 supervisor
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 296 kB of archives.
After this operation, 1,278 kB of additional disk space will be used.
Do you want to continue [Y/n]?
2.查看配置文件在/etc/spuervisor下,开机自启动
root@debian-lege-pro:~# cd /etc/supervisor/
root@debian-lege-pro:/etc/supervisor# ls
conf.d supervisord.conf
其中conf.d是一个子目录,其中存放着supervisor监管的进程的配置信息,一个进程有一个对应的配置文件;supervisord.conf是supervisor的主配置文件,定义服务名称以及接口等等。
其实自启动,也就是在主机开启的时候,执行了sudo supervisord -c /etc/supervisord.conf
vi /usr/lib/systemd/system/supervisord.service
写入以下内容:
[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 is-enabled supervisord
反馈:enable #证明成功
3.编写监控脚本
root@debian-lege-pro:/etc/supervisor# cd conf.d/
root@debian-lege-pro:/etc/supervisor/conf.d# ls
README
root@debian-lege-pro:/etc/supervisor/conf.d# vim jiaoben.conf
[program:jiaoben.py] #程序的名字,在supervisor中可以用这个名字来管理该程序。
user=root #指定运行用户
command=/home/jiaoben.py #启动程序的命令
autorstart=true #设置改程序是否虽supervisor的启动而启动
directory=/home/lege #相当于在该目录下执行程序
autorestart=true #程序停止之后是否需要重新将其启动
startsecs=5 #重新启动时,等待的时间
startretries=100 #重启程序的次数
redirect_stderr=true #是否将程序错误信息重定向的到文件
stdout_logfile=/home/lege/supervisor_log/log.txt #将程序输出重定向到该文件
stderr_logfile=/home/lege/supervisor_log/err.txt #将程序错误信息重定向到该文件
保存文件,配置完成。
4.使配置更改生效
每次修改主配置文件或增改子配置文件都需要执行supervisorctl update使新配置生效。或者用supervisorctl reload重新重新启动supervisor程序。
5.修改主配置文件
root@debian-lege-pro:vim /etc/supervisor/supervisord.conf
[inet_http_server]
port = 192.168.170.137:9001 #IP和绑定端口
username = root #管理员名称
password = 123456 #管理员密码
这样,在浏览器中输入配置中写的地址和端口号,输入配置好的用户名和密码,便可以看到基于网页的控制台界面。从中,可以察看supervisor监控的>信息,可以察看进程的日志等。
6.一定要指定user用户否则会运行报错的,如下:
root@debian-lege-pro:/home# supervisorctl update
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 224
关键在于配合服务使用,而且脚本要编写正确,在浏览器中输入配置中写的地址和端口号,输入配置好的用户名和密码,便可以看到基于网页的控制台界面。从中,可以察看supervisor监控的>信息,可以察看进程的日志等。