Centos安装supervisord 添加开机自启动服务 使用

ZhangJian 2022-04-10 n次浏览 学习记录 编辑

安装方法1: yum install -y epel-release yum源安装: yum -y install supervisor 软件的安装路径:/usr/bin/supervisord,配置文件:/etc/supervisor.conf(先执行输出配置文件 再复制保存到文件 /usr/soft/python3.9/bin/echo_supervisord_conf)

方法2: Python安装: pip install supervisor 软件路径:python目录下 例如:/www/server/panel/pyenv/bin/supervisord python安装后创建软连接

ln -s /www/server/panel/pyenv/bin/supervisord /usr/bin/supervisord 
ln -s /www/server/panel/pyenv/bin/supervisorctl /usr/bin/supervisorctl 

supervisor启动要传入配置文件路径 supervisord -c /etc/supervisor.conf

测试Yum方式安装试添加好开机脚本的 supervisord开机自启动脚本(各版本系统):https://github.com/Supervisor/initscripts Centos7添加开机自启脚本 vi /lib/systemd/system/supervisord.service

# supervisord service for sysstemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
[Service]
ExecStart=/usr/bin/supervisord - c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target

这个自启动脚本需要修改/etc/supervisord.conf配置文件: vi /etc/supervisrod.conf nodaemon=false改成true

自启命令 systemctl enable supervisord.service systemctl start/restart/stop supervisor.service

子进程配置文件说明: 给需要管理的子进程(程序)编写一个配置文件,放在/etc/supervisor.d/目录下,以.ini作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)。如任意定义一个和脚本相关的项目名称的选项组(/etc/supervisord.d/test.conf):

#项目名
[program:blog]
#脚本目录
directory=/opt/bin
#脚本执行命令
command=/usr/bin/python /opt/bin/test.py

#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的
autorestart=false
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
startsecs=1

#脚本运行的用户身份 
user = test

#日志输出 
stderr_logfile=/tmp/blog_stderr.log 
stdout_logfile=/tmp/blog_stdout.log 
#把stderr重定向到stdout,默认 false
redirect_stderr = true
#stdout日志文件大小,默认 50MB
stdout_logfile_maxbytes = 20M
#stdout日志文件备份数
stdout_logfile_backups = 20

例子:

[program:pyweb]
command=/root/pyenv/v1/bin/gunicorn -w 4 -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -b 127.0.0.1:8001 main:app
directory=/root/python/pyweb
user=root
stdout_logfile=/root/logs/pyweb.log
stdout_logfile_maxbytes=10MB
redirect_stderr = true
stdout_logfile_backups = 3


[program:esp8266]
command=/root/pyenv/v1/bin/python main.py
directory=/root/python/esp8266
user=root
stdout_logfile=/root/logs/esp8266.log
stdout_logfile_maxbytes=10MB
redirect_stderr = true
stdout_logfile_backups = 3



supervisor命令说明 常用命令

supervisorctl status        //查看所有进程的状态
supervisorctl stop es       //停止es
supervisorctl start es      //启动es
supervisorctl restart       //重启es
supervisorctl update        //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序

注:把es换成all可以管理配置中的所有进程。直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。 如果修改了 /etc/supervisord.conf ,需要执行 supervisorctl reload 来重新加载配置文件,否则不会生效。。。 参考:https://blog.csdn.net/DBC_121/article/details/104005076

配置参考:https://www.jianshu.com/p/8b4a0e35ebe3

systemctl start supervisord
systemctl stop supervisord
systemctl restart supervisord
systemctl enable supervisord
systemctl disable supervisord