欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

linux-supervisor安装及使用讲解

程序员文章站 2022-03-15 22:04:12
环境:centos7.2 软件:supervisor 背景: 公司有一个app后台管理程序需要部署,该程序是用go语言编写的二进制文件,后台需要持续运行这个二进制文件,保证服...

环境:centos7.2

软件:supervisor

背景:

公司有一个app后台管理程序需要部署,该程序是用go语言编写的二进制文件,后台需要持续运行这个二进制文件,保证服务的持续运行。

方案 1:

直接采用 nohup ./app_admin &后台运行方式,该方式存在一个缺点,如果服务器重启后,或者程序运行出错的话,服务就会终止,这种方式不稳定。

方案 2:

采用supervisor进程管理方式守护go语言的二进制文件运行,保证程序的持续运行。

一、 安装supervisor

# yum install python-setuptools
# easy_install pip
# pip install supervisor  -- 或者-- easy_install supervisor
# mkdir /etc/supervisor/
安装完成之后,在/etc/supervisor目录下生成配置文件
# echo_supervisord_conf>/etc/supervisor/supervisord.conf
如果需要卸载supervisor 执行 #  pip uninstall supervisor

修改supervisor配置文件

vi /etc/supervisor/supervisord.conf

把末尾的include去掉;添加配置文件

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

conf.d文件夹中的app_admin.ini配置文件如下

[root@centos]# cat appadmin.ini 

[program:appadmin]
process_name=%(program_name)s_%(process_num)02d
command=nohup /data/appadmin/app_admin
directory=/data/appadmin     ##程序的目录地址最好要添加,要不然会报错,找不到路径
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/etc/supervisor/logs/appadmin.log  #日志文件

一切准备完毕后 执行

supervisord -c /etc/supervisor/supervisord.conf 

启动supervisor,即可完成程序的持续运行!

运行 supervisorctl命令即可查看程序的运行状态

[root@appadmin conf.d]# supervisorctl
appadmin:appadmin_00             RUNNING   pid 2375, uptime 0:26:40
supervisor> 

一些supervisor的常用命令

重载supervisor
进入supervisor 命令-->  #supervisorctl
查看命令           -->  #help
重载项目           -->  #reload
查看状态           -->  #status
完成!

二、设置supervisor开机自起:

重启服务器后,发现supervisor开机启动,于是只好手动添加脚本 实现开机启动

编辑sh文件并给予权限

[root@centos]# vi /etc/rc.d/sh/appadmin.sh 
#!/bin/bash
# 开机启动supervisor
supervisord -c /etc/supervisor/supervisord.conf
chmod +x /etc/rc.d/sh/appadmin.sh 

编辑/etc/rc.d/rc.local 加入开机启动

[root@appadmin conf.d]# vi /etc/rc.d/rc.local 
#!/bin/bash
touch /var/lock/subsys/local
#开机启动supervisor脚本
/etc/rc.d/sh/appadmin.sh

chmod +x /etc/rc.d/rc.local 

重启服务器后,即可看到已经有 app_admin在运行中。

至此,所有操作进行完毕