一、安装:
(1)在线安装(with pip):
pip install supervisor
(2)在线安装(without pip):
第二步:解压后执行
python setup.py install
(3)离线安装:
第二步:解压后执行
python setup.py install
二、配置Supervisor
(1)创建配置文件:
一旦supervisor安装成功,可以执行echo_supervisord_conf进行测试,将会打印默认的配置数据。
echo_supervisord_conf > /etc/supervisord.conf
注:supervisor的配置文件推荐放/etc路径下
(2)编写配置文件
配置文件最后一行,设置守护进程目录,如图所示:
files的意义在于:可以为每个进程配置一个ini文件,通过维护.net core进程进行维护管理。
示例,在/etc下创建supervisord.d文件夹,在文件夹中创建指定.net core的守护参数。
cd /etc/supervisord.d
vi zufang.ini
复制以下内容:
[program:zufang]
#运行程序的命令
command=dotnet ZuFangSystem_API.dll --urls="http://*:8010;"
#命令执行的目录
directory=/home/ZuFang
#进程环境变量
environment=ASPNETCORE_ENVIRONMENT=Production
#进程执行的用户身份
user=root
#进程停止信号,可以为TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信号默认为TERM 。当用设定的信号去干掉进程,退出码会被认为是expected,非必须设置
stopsignal=INT
#如果是true的话,子进程将在supervisord启动后被自动启动,默认就是true,非必须设置
autostart=true
#这个是设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的退出码的时候,才会被自动重启。当为true的时候,只要子进程挂掉,将会被无条件的重启
autorestart=true
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了,默认值为1 。非必须设置
startsecs=1
#错误日志文件
stderr_logfile=/var/log/zufang/zufang.err.log
#输出日志文件
stdout_logfile=/var/log/zufang/zufang.out.log
三、运行
supervisord -c /etc/supervisord.conf
四、执行supervisorctl进行守护进程的维护
supervisorctl -c /etc/supervisord.conf
将看到正在运行的进程
五、其它
(1)需要运行多个.net core,只需要创建不同的.ini文件即可,注意端口号不要冲突;
(2)supervisor可以开启网页管理,具体可参考官方文档,如何开启网页访问supervisor
(3)其它调试常用命令:
"查找supervisor进程pid: ps -ef|grep super
"关闭进程: kill -9 pid" (或者进入 supervisorctl ,执行shutdown操作)
"删除sock文件: sudo unlink /var/run/supervisor/supervisor.sock "
"重启守护服务: supervisord -c /etc/supervisord.conf.rpmnew"
"启动ctl: supervisorctl -c /etc/supervisord.conf.rpmnew"
"重新加载: 进入 supervisorctl ,执行reload命令"
(4)故障解决:
可能任然会遇到 supervisorctl中显示服务running,但实际无法访问站点的情况。
方法一:执行roload;
方法二:执行shutdown,重新启动 supervisord -c ~.conf
方法三:重启服务器(shutdown -r now),重启后重新启动supervisor
参考官网supervisor链接:supervisor参考链接