程序守护服务 Supervisor

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

 

posted @ 2018-10-15 16:03  逍遥帝君  阅读(583)  评论(0编辑  收藏  举报