一、什么是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