一、概述
supervisor是一个进程管理工具,在ubuntu中也有一些其他的进程管理工具,比如systemctl。但是作为日常开发部署服务器,supervisor还是一个非常好用的工具。它可以:
1. 开机自启动
2. 进程异常中断自动检测重启进程
3. WEB页面管理进程,并提供restful接口管理进程
二、安装
root@ubuntu:/opt# apt install supervisor
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python
python-meld3 python-minimal python-pkg-resources python2.7 python2.7-minimal
Suggested packages:
python-doc python-tk python-setuptools python2.7-doc binutils binfmt-support
supervisor-doc
The following NEW packages will be installed:
libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python
python-meld3 python-minimal python-pkg-resources python2.7 python2.7-minimal
supervisor
0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
配置文件在:/etc/supervisor/supervisord.conf
我们第一步需要将上面配置文件中的地址指向/opt统一管理起来,当然你可以换一个你更为习惯的路径。
supervisor进程管理一堆进程,当然supervisor也同样被systemctl管理,我们可以使用systemctl命令查看supervisor进程的状态,启动或者关闭进程,命令如下:
supervisord -c /etc/supervisor/supervisord.conf
systemctl status supervisor
systemctl start supervisor
systemctl stop supervisor
systemctl restart supervisor
WEB页面管理进程
在supervisor配置文件中添加:
[inet_http_server]
port=127.0.0.1:9001 ; 服务器ip
username=xxx ;自定义
password=xxx ;自定义
我们打开浏览器:
在管理页面上我们可以管理进程,也是挺方便的,对于少量机器还是挺方便的,并且http接口我们也可以远程调用管理进程。这样我们可以依托supervisor工具统一管理进程
三、测试
我这里首先写一个jar包,这个jar包功能就是每秒钟写日志,持续100秒便结束进程。
[program:test-process-name]
command=/home/xuanchi/jdk/jdk1.8.0_101/bin/java -jar /home/xuanchi/supervisor/supervisor-1.0.0.jar
directory=/home/xuanchi/supervisor/ ; 执行 command 之前,先切换到工作目录
user=xuanchi ; 使用 oxygen 用户来启动该进程
autorestart=true
startsecs=5
redirect_stderr= true
stdout_logfile = /home/xuanchi/supervisor/supervisor-stdout.log
loglevel=info
stdout_logfile_maxbytes = 20M
stdout_logfile_backup = 10
我们验证了我们的结果,当进程自动结束后,supervisor检查到进程结束会自动拉起来,保证进行不会异常中断。然后我们重启服务器,重启后发现进程还在正常运行,说明开机重启功能是可以的。