在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。

所以,就需要一个工具,时刻监控 web 应用的运行情况,管理该进程。

Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能。

Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程)。

一、 安装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 命令-->  #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在运行中。

至此,所有操作进行完毕

Linux系统下 Supervisor 安装搭建的更多相关文章

  1. Linux系统下 Supervisor 安装搭建(yum安装)

    安装Supervisor # 安装supervisor yum install supervisor # 打开supervisor的配置文件 vi /etc/supervisord.conf 将sup ...

  2. Linux系统下 MongoDB安装搭建

    1.下载linux的mongodb 2.在目录usr/local下创建文件夹mongodb,把安装包解压到该文件夹中 # mkdir mongodb # tar -zxvf mongodb-3.4.2 ...

  3. linux系统下怎么安装.deb文件

    linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式.rpm 是 redhat .fedora .suse 的格式. 他们不通用(虽然可以转换一下). deb是de ...

  4. linux系统下怎么安装.deb文件?

    linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式. rpm 是 redhat .fedora .suse 的格式. 他们不通用(尽管能够转换一下). deb是d ...

  5. Linux 系统下Eclipse安装及使用

    Linux 系统下Eclipse安装及使用 我们在搞上层开发的时候,都是在Windows下使用Eclipse,那么如果是Linux应用开发,就必须要在Linux中安装Eclipse,用于C/C++开发 ...

  6. linux系统下nginx安装目录和nginx.conf配置文件目录

    linux系统下nginx安装目录和nginx.conf配置文件目录 1.查看nginx安装目录 输入命令 # ps  -ef | grep nginx 返回结果包含安装目录 root      26 ...

  7. Linux系统下Dubbo安装的详细教程

    Linux系统下Dubbo安装的详细教程 1.Dubbo的简介 Dubbo是 [1]  阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [ ...

  8. linux系统下手动安装Angular-cli

    安装Angular-cli 背景 由于公司linux服务器没有外网,无法通过npm包管理器直接安装,只能手动安装一个Angular-cli平台环境! 安装步骤 1. 先再linux系统下安装好node ...

  9. Linux系统下Redis安装(一)

    最近项目要使用Redis,特将这段时间将Redis的学习经验与大家分享,算是对这段时间学习成果的总结和技术提炼,不足之处还望大家批评指正. 项目背景: 有些很少改动的数据和经常使用的数据(例如系统中下 ...

随机推荐

  1. [从jQuery看JavaScript]-注释(comments)

    jQuery片段: /*! * jQuery JavaScript Library v1.3.2 * http://jquery.com/ * * Copyright (c) 2009 John Re ...

  2. [oracle] 重要服务启动与停止命令行

    ① 控制台服务[em control] 启动:emctl start dbconsole 停止:emctl stop dbconsole ② 监听器服务[listener control] 启动:ls ...

  3. 无限级分类 mysql设计

  4. pip 安装库过慢

    对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题. 所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装 ...

  5. [渗透技巧] Windows命令行下载

    certutil简介 用于证书管理 支持环境: XP  -  Windows 10 全系统 更多:https://technet.microsoft.com/zh-cn/library/cc75534 ...

  6. JavaScript-事件冒泡简介及应用

    一.什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事 ...

  7. Nginx 链接

    Nginx反向代理以及负载均衡配置:http://www.cnblogs.com/Miss-mickey/p/6734831.html

  8. nohub和重定向文件

    1.如果使用远程连接的Linux的方式并想后台运行执行如下命令: 格式:nohup <程序名> & 比如:nohup /usr/local/collection/bin/start ...

  9. Python 入门(一)定义字符串+raw字符串与多行字符串

    定义字符串 前面我们讲解了什么是字符串.字符串可以用''或者""括起来表示. 如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" " ...

  10. Navicat无法启动,提示无法启动程序,因为计算机中丢失MSVCP140.dll

    .dll是一个动态链接库文件,Dynamic Link Library,是代码的封装,提供某种功能,可以被需要该功能的多个应用调用,提高代码的复用性 解决方法,下载并安装微软VC++2015版运行库 ...