配置Supervisor管理进程

时间:2024-01-22 07:09:45

  在Linux中使用Supervisor来管理.Net Core项目进程。我尝试配置了CentOS和Ubuntu两个系统,还是有些差异的。

CentOS.7-x64

一、安装

  1、yum install supervisor

  如果提示yum源没有supervisor,则先安装epel源:

  1)yum install wget  #没有wget命令则先安装wget

  2)wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

  3)rpm -ivh epel-release-latest-7.noarch.rpm

  2、在etc目录下会生成 supervisord.conf(supervisor配置文件)和 supervisord.d(进程配置文件夹)

  

二、配置

  1、配置待管理的进程

  1)进入进程配置文件夹 cd /etc/supervisord.d/

  2)在该目录创建进程配置文件 touch WebAPI.conf

  3)编辑 vim WebAPI.conf(没有 vim 命令就试试 vi 命令),添加进程配置信息。要启动几个进程,就对应添加几段信息

[program:WebAPI]
command=dotnet WebAPI.dll #要执行的命令,我这里运行.Net Core程序
directory=/home/lys/WebAPI #命令执行的目录
environment=ASPNETCORE_ENVIRONMENT=dev #环境变量
user=root #进程执行的用户身份
stopsignal=INT
autostart=true #是否自动启动
autorestart=true #是否自动重启
startsecs=1 #自动重启间隔
stderr_logfile=/var/log/WebAPI.err.log #标准错误日志
stdout_logfile=/var/log/WebAPI.out.log #标准输出日志

[program:WebAPI.AuthServer]
......
进程配置

  2、配置Supervisor

  1)打开配置文件 vim /etc/supervisord.conf

  2)找到 [inet_http_server] 节点

port=192.168.1.1:7002 # supervisor可视化管理url,可以配置为 *:port
username=user
password=123
Supervisor配置

   * 注意去掉前面的“分号”

  3)找到 [include] 节点

files = /etc/supervisord.d/*.conf # 这个就是进程配置文件路径
Supervisor配置

 

三、运行

  1、相关命令  

  • 停止Supervisor服务 service supervisord stop
  • 启动Supervisor服务 service supervisord start
  • 重启Supervisor服务 service supervisord restart

  2、管理进程

  启动后,通过 supervisorctl 命令查看进程状态,然后通过 stop/start/restart 进程名 管理进程,通过 status 查看所有进程运行状况;或者打开 http://192.168.1.1:7002(对应上面的配置) 管理进程,如图:

 

  如果启动Supervisor报错:什么true呀一些value值无效(具体信息忘了,大意是读取配置文件报错),这是因为在读取配置的value值时把注释也给识别进去了(不知道为啥),所以去 WebAPI.conf 把注释去掉即可。

  另外,启动项目进程时报错可以在 /var/log/WebAPI.err.log(对应上面的配置) 中查看详细信息。

 

Ubuntu.16.04-x64

一、安装

  sudo apt-get install supervisor

  这里和centos不一样的地方是,etc里只有 supervisor 文件夹,里面有 supervisord.conf(supervisor配置文件)和 conf.d(进程配置文件夹)

二、配置

  1、配置待管理的进程

  1)进入进程配置文件夹 cd /ect/supervisor/conf.d/

  2)创建进程配置文件 touch WebAPI.conf

  3)编辑 vim WebAPI.conf,同CentOS

  * 如果提示无权访问,则 sudo chmod 777 WebAPI.conf 一下

  2、配置Supervisor

  1)打开配置文件 vim /etc/supervisor/supervisord.conf

  2)手动添加 [inet_http_server] 节点,信息同CentOS配置

三、运行

  • sudo service supervisor stop  # 注意这里的进程名和CentOS也是不一样的
  • sudo service supervisor start
  • sudo service supervisor restart

 

  参考文档

  1. 官方文档
  2. ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
  3. CentOS7下Supervisor安装与配置(Linux/Unix进程管理工具)