Background
supervisor是用Python语言开发的一套通用的进程管理程序,可以将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时可以自动拉起; 可在大多数unix系统上使用,不能在windows上运行; 目前兼容的python版本为python2.7和python3.4及以后; 之前的文章有介绍在线安装的方法:【Centos7安装配置【supervisor】【glances】【自动化脚本】】 我们这里介绍一中离线安装目前最新版supervisor-4.2.5
,基于python3.7.8
;具体步骤如下
1、首先得有个python3.7.8的环境
具体可以参考:【Centos7安装python3【Python-3.7.8】】
2、先在能上网的服务器上下载supervisor-4.2.5
pip3 install supervisor == 4.2 .5
3、然后把下载的各种依赖打包
需要打包的如下图所示
mkdir supervisor-install-all
cd supervisor-install-all/
cp /usr/local/python3/bin/echo_supervisord_conf .
cp /usr/local/python3/bin/pidproxy .
cp /usr/local/python3/bin/supervisor* .
cp -r /usr/local/python3/lib/python3.7/site-packages/supervisor* .
cd ..
tar zcf supervisor-install-all.tgz supervisor-install-all/
4、上传到不能上网的目标服务器上并解压
tar zxf supervisor-install-all.tgz
5、在目标服务器上配置supervisor
\ cp echo_supervisord_conf pidproxy supervisorctl supervisord /usr/local/python3/bin/
\ cp -r supervisor supervisor-4.2.5.dist-info/ /usr/local/python3/lib/python3.7/site-packages/
supervisorctl -h
mkdir -p /etc/supervisor/conf.d
echo_supervisord_conf > /etc/supervisord.conf
cat << EOF >> /etc/supervisord.conf
[include]
files = /etc/supervisord.d/*.ini
[inet_http_server]
port=*:9001
username=admin
password=123
EOF
cat << EOF >> /etc/supervisord.d/default.base
[program:anti_seismic_city-1.0]
directory=/root/projects/anti_seismic_city/server
command=java -Xms2048m -Xmx2048m -jar anti_seismic_city-1.0-SNAPSHOT.jar
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
stopasgroup=true ; 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ; 默认为false,向进程组发送kill信号,包括子进程
;
;
;
EOF
6、在目标服务器上启动supervisor
cat << EOF >> /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
[Install]
WantedBy=multi-user.target
EOF
systemctl start supervisord
systemctl enable supervisord
7、浏览器访问 9001端口,输入配置的用户名密码就可以看到下图