supervisor 基础配置

supervisor:一种进程管理利器,让程序后台运行
类似于windows service一样的服务,能实现监控程序状态,异常退出是能自动启动


1.安装supervisor

yum install python-setuptools
easy_install supervisor  //安装依赖

2.配置supervisor
创建目录

mkdir /etc/supervisor

通过echo_supervisor_conf 程序(用来生成初始配置文件,文件名可自定义)来初始化一个配置文件

//自动生成一个默认的配置文件
echo_supervisor_conf > /etc/supervisor/supervisord.conf

通过vi 修改配置信息
vi /etc/supervisor/supervisord.conf

修改为:

[include]
files = /etc/supervisor/conf.d/*.ini         ;创建一个supervisor 进程配置文件加载目录(定位服务脚本的位置)让supervisor自动加载改目录下后缀为.ini的文件作为进程配置服务

3.为部署项目添加进程配置文件
在/etc/supervisor/conf.d/ 创建文件main.ini

vi main.ini

[program:main]            ##自定义进程名称
command=python xxxx     ## 程序启动命令 
#directory=/data/webroot/xxxx  ## 命令执行的目录 程序存放字服务器上的目录
autostart=true             ## 在supervisor启动是 程序是否启动
autorestart=true        ## 程序退出后自动重启
#startretries=5            ## 启动失败自动重试次数 默认为3
startsecs=2                ## 自动重启间隔
#user=root                ## 设置启动进程的用户 默认 root
#stderr_logfile=/var/log/xxx.err.log  ## 标准错误日志
#stdout_logfile=/var/log/xxx.out.log  ## 标准输出日志
#environment=            ## 进程环境变量
#stopsignal=INT             ## 请求停止是用来杀死程序的信号

 
4.启动服务

supervisord -c /etc/supervisor/supervisord.conf

若出现报错:
[root@yuan system]# supervisord -c /etc/supervisor/supervisord.conf
Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h


错误原因是supervisor.sock这个文件会被系统自动删除或者其他原因不存在了,删除软连接就可以

解决:
find / -name supervisor.sock
unlink /tmp/supervisor.sock

或者
有可能因为一个使用supervisor配置的应用程序正在运行需执行 supervisorctl shutdown 命令终止

supervisorctl //打开命令行
ctl中: help //查看命令
ctl中: status //查看状态
另外如果修改了 /etc/supervisor/supervisord.conf ,需要执行 supervisorctl reload 来重新加载配置文件,否则不会生效

5.配置开机自启动
生成supervisord.service文件,保存在/usr/lib/systemd/system/
vi supervisord.service

[Unit]
Description=Supervisor daemon

[Service]
Type=forking
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

保存退出

systemctl enable supervisord
systemctl is-enabled supervisord
systemctl daemon-reload   #重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载。


systemctl restart supervisord #重启,出错可能原因supervisor.sock,解决参考上方错误

 

视频链接地址:https://edu.csdn.net/course/play/25611/307228

详细配置参考地址:supervisor模块学习使用

你可能感兴趣的:(supervisor)