Supervisor守护进程安装配置

首先简单了解下Supervisor, Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

执行下面的命令,安装python。

yum install python-setuptools

easy_install supervisor

在/etc/目录下,创建supervisor文件夹。

mkdir /etc/supervisor

在该目录下,生成supervisord.conf文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改/etc/supervisor/supervisord.conf文件内容,在文件中找到[include],把;去掉,把files = ./conf.d/*.conf

[include]

files=./conf.d/*.conf

然后,在conf.d目录中,创建一个名为helloworld.conf的文件,配置如下:

[program: ProjectName]

command=dotnet helloworld.dll ; 运行程序的命令

directory=/wwwroot/demo/ ; 命令执行的目录

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 ; 自动重启间隔

上面是以.net core程序为例,创建一个守护进程的配置。

接下来,指定supervisor配置文件:

supervisord -c /etc/supervisor/supervisord.conf

配置supervisor开机启动

sudo systemctl start supervisord.service

sudo systemctl enable supervisord.service

如果出现unit未找到,则可以手动创建一个service文件,进入/lib/systemd/system目录,并创建supervisor.service文件

[Unit]

Description=supervisor

After=network.target

 

[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

 

systemctl enable supervisor.service

systemctl daemon-reload

supervisorctl 操作

supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:

输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面(还是纯命令行),就可以在下面输入命令了。:

help # 查看帮助

status # 查看程序状态

stop program_name # 关闭 指定的程序

start program_name # 启动 指定的程序

restart program_name # 重启 指定的程序

tail -f program_name # 查看 该程序的日志

update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)

也可以直接通过 shell 命令操作;

posted @ 2021-04-10 22:39  之广  阅读(74)  评论(0编辑  收藏  举报
我的博客——易之广