Supervisor
supervisor 安装方案¶
pip 安装方案¶
1、适配不支持yum 安装的服务器,使用pip3 进行安装
$ pip3 install supervisor
2、创建对应的配置文件
$ echo_supervisord_conf | sudo tee /etc/supervisord.conf
3、使用systemd 管理supervisor
cat > /etc/systemd/system/supervisord.service <<EOF
[Unit]
Description=Supervisor process control system
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/local/bin/supervisord/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
User=root
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
4、 重载systemd 配置,并配置开机自启
$ systemctl daemon-reload
$ systemctl enable --now supervisord
5、 优化supervisor 子配置管理
$ mkdir -p /etc/supervisord.d/
$ sed -i "s#;\[include\]#\[include\]#g" /etc/supervisord.conf
$ sed -i "s#;files = relative/directory/\*\.ini#files = /etc/supervisord\.d/\*\.ini#g" /etc/supervisord.conf
6、 重启服务
$ systemctl restart supervisord
7、如何使用supervisior启动一个java 服务
$ cat > /etc/supervisord.d/test.ini <<EOF
[program:test]
directory=/opt/test # 服务工作目录
#command=/usr/bin/java -Xms5g -Xmx5g -Duser.timezone=America/Mexico_City -jar push-center-1.0.0-SNAPSHOT.jar
command=/usr/bin/java -jar test.jar -Duser.timezone=GMT+07 --spring.profiles.active=prod -Xmx512m -Xms512m # 服务启动命令
user=root # 什么用户启动服务
redirect_stderr=true # 重定向错误输出
stdout_logfile_backups=7 # 日志转存时间
stdout_logfile=/opt/clc-push/clc-push.log # 日志输出位置
EOF
完整例子如下:
$ cat > /etc/supervisord.d/test.ini <<EOF
[program:test]
directory=/opt/test
command=/usr/bin/java -jar test.jar -Duser.timezone=GMT+07 --spring.profiles.active=prod -Xmx512m -Xms512m
user=root
redirect_stderr=true
stdout_logfile_backups=7
stdout_logfile=/opt/clc-push/clc-push.log
EOF
8、完整安装脚本如下
#!/bin/bash
pip3 install supervisor
echo_supervisord_conf | sudo tee /etc/supervisord.conf
cat > /etc/systemd/system/supervisord.service <<EOF
[Unit]
Description=Supervisor process control system
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/local/bin/supervisord/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
User=root
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now supervisord
mkdir -p /etc/supervisord.d/
sed -i "s#;\[include\]#\[include\]#g" /etc/supervisord.conf
sed -i "s#;files = relative/directory/\*\.ini#files = /etc/supervisord\.d/\*\.ini#g" /etc/supervisord.conf
systemctl restart supervisord