安装参考:
https://www.cnblogs.com/zgcblog/p/10192077.html
https://www.cnblogs.com/yangbo981205/p/14928897.html
用pip3快速安装:(如果安装失败,先更新一下yum:yum -y update)
yum install -y python3 &&pip3 install supervisor
安装后配置:
mkdir /usr/supervisor ;sudo chmod -R 777 /usr/supervisor ;echo_supervisord_conf > /usr/supervisor/supervisord.conf ;mkdir /usr/supervisor/supervisord.d ;mkdir /usr/supervisor/logs
执行:vim /usr/supervisor/supervisord.conf
这里把所有的/tmp路径改掉,要不重启后容易被linux自动清掉。
/tmp/supervisor.sock 改成/var/run/supervisor.sock(有两个位置需要改)
/tmp/supervisord.log 改成/var/log/supervisor.log
/tmp/supervisord.pid 改成 /var/run/supervisor.pid
配置 vim /usr/supervisor/supervisord.conf
最后一句话改为:
[include]
files = /usr/supervisor/supervisord.d/*.conf
配置文件 vim /usr/supervisor/supervisord.d/nginx.conf
[program:nginx] ; 管理的子程序名字,要和项目有关联,不能乱写
command = /usr/local/nginx/sbin/nginx -g 'daemon off;'
#让监控的目标nginx在前台运行
priority=1 ; 数字越高,优先级越高(对不同进程而言)
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
stopasgroup=true ; 重要的设置,一起管理子进程
stdout_logfile_maxbytes=20MB ; 日志文件大小限制
stdout_logfile_backups=10 ; 日志文件备份数量
stdout_logfile =/usr/supervisor/logs/nginx-supervisor.log ;错误日志输出位置,目录要存在
说明:“/usr/local/nginx/sbin/nginx”为nginx启动路径。
【supervisor常用指令】
[全局指令]
supervisorctl status #查看所有进程运行状况
supervisorctl reread #重读配置
supervisorctl update #更新配置
supervisorctl restart nginx #关闭并重启nginx
supervisorctl reload #关闭并重新加载开启所有配置
supervisorctl stop all #关闭所有监控的服务程序
supervisorctl start all #开启所有监控的服务程序
[控制台]
#进入控制台
supervisorctl
#重新读取配置
reread
#更新配置
update
#重新启动配置中的所有程序
reload
#开始nginx
start nginx
#结束nginx
stop nginx
#开始所有配置进程
start all
#结束所有配置进程
stop all
#查看状态
status
#退出控制台
exit
[长指令:/usr/supervisor/supervisord.conf为配置的位置]
/usr/bin/supervisord -c /usr/supervisor/supervisord.conf ——启动Supervisor进程
# 父进程起来之后,就用【supervisorctl】这个工具管理子进程
/usr/bin/supervisorctl -c /usr/supervisor/supervisord.conf status ——查看状态
/usr/bin/supervisorctl -c /usr/supervisor/supervisord.conf reload ——重新载入配置文件
/usr/bin/supervisorctl -c /usr/supervisor/supervisord.conf update —— # 每次修改配置后,建议使用此命令,不会全部重启
supervisorctl -c /usr/supervisor/supervisord.conf start [all]|[x] ——启动所有/指定的程序进程
/usr/bin/supervisorctl -c /usr/supervisor/supervisord.conf stop [all]|[x] ——关闭所有/指定的程序进程
killall supervisord ——关闭supervisord
查看supervisor运行状态
ps -A | grep supervisor
查看所有进程运行状况
supervisorctl status
其它相关教程:
https://blog.csdn.net/qq_28885149/article/details/79364685
https://www.cnblogs.com/eleven24/p/9026139.html
开机启动设置:https://www.cnblogs.com/94cool/p/5952219.html
vim /usr/lib/systemd/system/supervisord.service
输入以下内容(注意路径修改):
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /usr/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 enable supervisord
检查生效情况:systemctl is-enabled supervisord
其他说明:配置“inet_http_server”web管理界面后如果发现无法访问?
1、配置改为“port=*:9001”,然后更新一下;
2、检查服务器防火墙是否开放了9001端口,也可以关闭防火墙;
3、检查阿里云或者其他服务器运营商管理后台配置,在访问规则里面开放9001端口,然后再试就可以了。
使用supervisorctl status 命令报Server requires authentication error错误,检查下方代码有没被注释掉,解开后update一下即可
serverurl=unix:///var/supervisor.sock ; use a unix:// URL for a unix socket