在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
* 注意去掉前面的“分号”
3)找到 [include] 节点
files = /etc/supervisord.d/*.conf # 这个就是进程配置文件路径
三、运行
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