其他分享
首页 > 其他分享> > 安装Supervisor

安装Supervisor

作者:互联网

系统:CentOS 7     防火墙状态:关闭

一:基础知识

1、什么是守护进程

  在linux或者unix操作系统中,守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。
由于在linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终
端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且它脱离终端的目的是为了避免进程在运行的过程
中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转,直到整个系统关闭才退出。

本篇的创建守护进程,是指发布在Linux上 asp.net core 程序的dotnet xxx.dll命令的宿主进程创建一个守护进程。

在 Linux 上有很多可以管理进程的工具,我们使用 Supervisor 来做这个事情。原因有两点:

2、认识 Supervisor

2.1 Supervisor 介绍

官方文档:http://supervisord.org/

  Supervisor是一个客户端/服务器系统,采用 Python(2.4+) 开发的,它是一个允许用户管理,基于 Unix 系统进程的 Client/Server 系统,提供了大量功能来实现对进程的管理。

 

2.2 Supervisor 特征

2.3  两个重要文件

    supervisord

    负责管理进程的server端,配置文件是/etc/supervisor/supervisord.conf

    supervisorctl

    client端的命令行工具,管理子进程,配置文件在/etc/supervisor/supervisord.d/目录下

3、废话少说直接安装 Supervisor

1.先安装supervisor

yum install -y supervisor

(如果用的是阿里云的CentOS7会提示找不到supervisor,则yum install epel-release先安装EPEL源)

2. 设置开机启动

systemctl enable supervisord

3.启动supervisord

systemctl start supervisord

4.查看状态

systemctl status supervisord

5.修改配置文件,设置web访问

vim /etc/supervisord.conf

 如下图把[inet_http_server]模块的注释去掉并修改IP、用户名与密码

把 [inet_http_server] 改成
port=192.168.1.108:9001 即 ip:9001(或者0.0.0.0:9001)

username=root 

password=123456

6.重启配置文件

supervisorctl reload

  PS:如果防火墙开启状态,添加9001端口到防火墙

firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --reload 

7. 安装完成,访问supervisor

 到此。supervisor安装完成。

8. 将.net core 项目添加到Supervisor 

  1) 查看supervisor配置文件

cat /etc/supervisord.conf

     

       配置需要管理的进程,就是在目录 /etc/supervisord.d/下面 添加 .ini的文件。

  也可修改为files = supervisord.d/*.conf后缀 ,这样就是添加 .conf的文件。其他没区别。

  2)添加需要管理进程的文件 

$ cd /etc/supervisord.d/
$ vim YFTimeProjectConf.conf

  将下面这段话贴进去:

[program: YFTimeProject]
command=dotnet YiSha.Admin.Web.dll ; 运行程序的命令
directory=/root/DotNetCoreArea/YFTimewebpublish/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/ProjectName.err.log ; 错误日志文件
stdout_logfile=/var/log/ProjectName.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔

  PS:program: 访问supervisor主页时,显示在name这一列的 信息,就是当前进程保护的程序在页面呈现的名字。

               command: 就是dotnet命令,启动项目。 

 

     directory:项目的绝对你路径

访问supervisor 站点网址,即可看到:

 

 

            running就表示添加当前项目到了守护进程成功。

    3)报错处理

(1)使用Supervisor 为服务创建守护进程失败

1 2 3 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 supervisord. For help, use /usr/bin/supervisord –h

  是因为有一个使用supervisor配置的应用程序正在运行,需要执行supervisorctl shutdown命令终止它,或重新创建一个ProjectName.conf文件再执行第一条命令。

 

(2)如果运行supervisorctl出现以下错误

1 error: <class 'socket.error'>, [Errno 111] Connection refused: file/usr/lib64/python2.6/socket.py line: 567

 

  说明Supervisor 服务没有启动成功,或Supervisor 服务被关闭了,重启启动服务即可。

     4)常用命令

supervisorctl:

sudo service supervisor stop 停止supervisor服务 sudo service supervisor start 启动supervisor服务 $ supervisorctl shutdown #关闭所有任务 $ supervisorctl stop|start program_name #启动或停止服务 $ supervisorctl status #查看所有任务状态

supervisord:(可以不带后面的.service)

systemctl start supervisord.service        开启服务
systemctl enable supervisord.service      开机自启
systemctl status supervisord.service    查询服务状态  

  

 借鉴:

https://www.cnblogs.com/yjlch1016/p/10162918.html

https://www.cnblogs.com/along21/p/10255681.html

标签:supervisor,supervisord,supervisorctl,conf,进程,Supervisor,安装
来源: https://www.cnblogs.com/huangshuqiang/p/15524132.html