«

Linux Supervisor 守护进程基本配置

emer 发布于 2019-3-5 17:45   2244 次阅读     


方法一、使用yum命令安装(推荐)
$ sudo su - #切换为root用户

# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord # 开机自启动
# systemctl start supervisord # 启动supervisord服务

# systemctl status supervisord # 查看supervisord服务状态
# ps -ef|grep supervisord # 查看是否存在supervisord进程
模板命令:

echo_supervisord_conf
#或者
echo_supervisord_conf > supervisord.conf




supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。

组成部分
supervisord:服务守护进程
supervisorctl:命令行客户端
Web Server:提供与supervisorctl功能相当的WEB操作界面
XML-RPC Interface:XML-RPC接口

查看版本信息:

supervisord -v

参考地址:http://beginman.cn/linux/2015/04/06/Supervisor/

官网文档地址:http://www.supervisord.org

安装:

yum install python-setuptools

easy_install supervisor

配置:

1、在etc下创建目录,并赋权限

mkdir -m 700 -p /etc/supervisor

2、在目录“ /etc/supervisor”下创建配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

3、修改配置文件

vim /etc/supervisor/supervisord.conf

在文件末尾添加,注意首尾需无空格,需顶格

[include]
files=/etc/supervisor/conf.d/*.conf

4、在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”

 mkdir -m 700 /etc/supervisor/conf.d

5、创建进程配置文件,示例:Nginx和asp.net core的守护进程,关键配置:

mkdir -m 700 /etc/supervisor/conf.d/OneAspNetCore.conf

asp.net core

[program:OneAspNetCore]
command=dotnet OneAspNetCore.dll ; 运行程序的命令
directory=/home/webapps/aspnet/ ; 执行前要不要先cd到目录去,一般不用
autorestart = true ; 程序异常退出后自动重启
autostart=true ; 随着supervisord的启动而启动
startretries = 10 ; 启动失败自动重试次数,默认是 3 numprocs=1 ; 启动几个进程
stderr_logfile=/var/log/OneAspNetCore.err.log ; 错误日志文件
stdout_logfile=/var/log/OneAspNetCore.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=KILL ; 用来杀死进程的
stopsignal=INT

注:这里的日志文件目录必须存在 supervisor不会创建该日志目录

nginx

[program:nginx]
command=systemctl start nginx ; 运行程序的命令
directory= ; 执行前要不要先cd到目录去,一般不用
autorestart = true ; 程序异常退出后自动重启
autostart=true ; 随着supervisord的启动而启动
startretries = 10 ; 启动失败自动重试次数,默认是 3 numprocs=1 ; 启动几个进程
stderr_logfile=/var/log/nginx/nginx.err.log ; 错误日志文件
stdout_logfile=/var/log/nginx/nginx.out.log ; 输出日志文件
user=root ; 进程执行的用户身份
stopsignal=KILL ; 用来杀死进程的
stopsignal=INT

 启动Supervisor

supervisord -c /etc/supervisor/supervisord.conf
 ps:如果服务已启动,修改配置文件可用“ supervisorctl reload ”命令来使其生效 

配置Supervisor开机启动

新建一个“supervisord.service”文件

#supervisord service for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS) [Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

 

将文件拷贝至:“/usr/lib/systemd/system/”

执行命令:systemctl enable supervisord

执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

重启检测是否正常!!!

web界面配置

把配置文件中 inet_http_server 前面的分号去掉 在Supervisor中 ;是注释的格式 默认是不开启web界面的

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123