直接通过yum或pip安装Supervisor,所安装的版本通常较低,无法使用python3
yum install supervisor
pip install supervisor
可通过pip3安装,如因网络问题安装失败,可多尝试几次
pip3 install git+https://github.com/Supervisor/supervisor
或
pip3 install supervisor==4.2.1
然后,通过echo_supervisord_conf 命令生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
1.配置开启下http服务,设置端口及ip
2.配置include路径
[unix_http_server]
file=/tmp/supervisor.sock ; the path to the socket file
;chmod=0700 ; socket file mode (default 0700)
;chown=nobody:nogroup ; socket file uid:gid owner
;username=user ; default is no username (open server)
;password=123 ; default is no password (open server)
...
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:30000 ; ip_address:port specifier, *:port for all iface
;username=user ; default is no username (open server)
;password=123
...
[include]
files = /etc/supervisord.d/*.ini
在/etc/supervisord.d内创建thread.ini文件配置要启动的脚本
[program:MQTT]
command=python3 MQTT.py
directory=/home/
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3
startretries=999
stderr_logfile=/var/log/MQTT.err.log
stdout_logfile=/var/log/MQTT.out.log
参数说明
startretries=999 ;当进程启动失败后,最大尝试启动的次数
startsecs=3;这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了
配置参数详解
https://www.cnblogs.com/ajianbeyourself/p/5534737.html
使用命令supervisord -c /etc/supervisord.conf启动,测试是否安装正常
使用ps -fe | grep supervisord查看进制
常用命令
supervisorctl status //查看所有进程的状态
supervisorctl stop es //停止es
supervisorctl start es //启动es
supervisorctl restart //重启es
supervisorctl update //配置文件修改后使用该命令加载新的配置
supervisorctl reload //重新启动配置中的所有程序
在/usr/lib/systemd/system路径下,创建supervisord.service文件
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
PIDFile=/tmp/supervisord.pid
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
设置开机启动
systemctl enable supervisord
systemctl restart supervisord