Supervisor 是用 Python 开发的 Linux/Unix 系统下的一个进程管理工具。它可以使进程脱离终端,变为后台守护进程(daemon)。实时监控进程状态,异常退出时能自动重启。
Supervisor 不支持任何版本的 Window 系统;仅支持在 Python2.4 或更高版本,但不能在任何版本的 Python 3 下工作。
联网状态下,官方推荐首选安装方法是使用easy_install,它是setuptools(Python 包管理工具)的一个功能。所以先执行如下命令安装 setuptools:yum install python-setuptools
然后执行如下命令安装 Supervisor:easy_install supervisor
输入命令查看配置文件模板来验证安装:echo_supervisord_conf
接着通过如下命令创建目录,这目录是为了让 Supervisor 加载默认配置用的目录:mkdir /etc/supervisor
加载目录有了,然后通过echo_supervisord_conf程序(用来生成初始配置文件)来初始化一个配置文件:echo_supervisord_conf > /etc/supervisor/supervisord.conf
打开新的配置文件修改:vi /etc/supervisor/supervisord.conf
将底部的:
;[include] ;files = relative/directory/*.ini
修改为:
[include] files = conf.d/*.conf
这样supervisord加载时就会自动加载/etc/supervisor/conf.d目录下,所有扩展名为.conf的配置文件。
通过命令进入/conf.d目录:cd /etc/supervisor/conf.d
创建并写入配置信息:vi testweb.conf
[program:testweb] command= dotnet TestWeb.dll --urls="http://*:8080" directory= /home/vsftpd/lk_ftp/TestWeb autostart=true autorestart=true startretries=5 startsecs=1 user=root priority=999 stderr_logfile=/var/log/WebApplication1.err.log stdout_logfile=/var/log/WebApplication1.out.log environment=ASPNETCORE_ENVIRONMENT=Production stopsignal=INT
program:自定义进程名称
command:程序启动命令
directory:命令执行的目录,即项目部署路径
autostart:在Supervisord启动时,程序是否启动
autorestart:程序退出后自动重启
startretries:启动失败自动重试次数,默认是3
startsecs:自动重启间隔
user:设置启动进程的用户,默认是root
priority:进程启动优先级,值小的优先启动
stderr_logfile:标准错误日志
stdout_logfile:标准输出日志
environment:进程环境变量
stopsignal:请求停止时用来杀死程序的信号
完成配置后就可以启动Supervisor 服务了:supervisord -c /etc/supervisor/supervisord.conf
每次修改配置文件后,都要执行重启命令,这里要注意,因为没有环境变量,这种命令都要在supervisor安装目录里执行。
查看是否生效:ps -ef | grep dotnet
进入/usr/lib/systemd/system目录,配置Supervisor开机启动:cd /usr/lib/systemd/system
新建一个“supervisord.service”文件写入配置:vi supervisord.service
# supervisord service for systemd (CentOS 7.0+) # by ET-CS (https://github.com/ET-CS) [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 supervisor
执行命令来验证是否为开机启动:systemctl is-enabled supervisord