一、什么是Supervisor?

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

二、安装Superviser  安装路径/usr/bin/supervisord,配置文件/etc/supervisor.conf

yum install python-setuptools

easy_install supervisor

三、配置Supervisor

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改supervisord.conf文件,将文件尾部的配置

;[include]
;files=relative/directory/*.ini
修改为:

;[include]
;files=conf.d/*.conf

四、配置Asp.NET Core的应用的守护

1)在 /etc/supervisor/conf.d 创建一个TestApi.conf文件

[program:TestApi ]
command=dotnet TestApi.dll; #运行程序的命令
directory=/var/www/core/; #命令执行的目录
autorestart=true; #程序意外退出是否自动重启
stderr_logfile=/var/www/core/error.log; #错误日志文件
stdout_logfile=/var/www/core/out.log; #输出日志文件
#进程环境变量
environment=ASPNETCORE_ENVIRONMENT=Production;
user=root; #进程执行的用户身份
stopsignal=INT

2)

supervisord -c /etc/supervisor/TestApi.conf

ps -ef | grep TestApi

运行supervisord,查看是否生效

五、错误解析

1)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

解决方法

find / -name supervisor.sock

unlink /name/supervisor.sock
05-11 01:08