zoukankan      html  css  js  c++  java
  • Supervisor 的安装与配置教程

    简介

    Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemontools和runit有些相似, 但是与它们不一样的是, 它不是作为init(进程号pid是1)运行. 它是被用来控制进程, 并且它在启动的时候和一般程序并无二致.
    通俗点,它的作用是什么?你的 Nginx,Tomcat,memcache,Redis...会崩么,不会?好吧,那你自己写的服务器监测脚本呢?好吧,不要再纠结了,交给 Supervisor 吧,它会帮你维护这些,即使它们不小心崩了,Supervisor 会帮你看住它们,维护它们。

    依赖

    supervisor 需要有 Python 环境。如果你是通过 pip 或者 easy_install 来安装的话,还需要 Python-seutptools 或者 python-pip,这些库的安装方法,在此处就不再一一介绍,自己查阅文档搞定。

    安装

    我这里是通过源码来安装的。

    1. wget 下载安装包
    1. 解压到本地后,通过运行 setup.py install 安装
    • tar -xzvf supervisor-3.3.3.tar.gz
    • cd supervisor-3.3.3
    • python setup.py install

    至此,安装完成了。接下来,我们需要设置 supervisor 的配置文件。

    配置 Supervisor

    1. 首先,需要生成全局配置文件
    • echo_supervisord_conf > /etc/supervisord.conf
    • supervisord -c /etc/supervisord.conf
    1. 接着,我们需要修改下生成的 /etc/supervisord.conf 文件。我们在末尾添加 supervisor 的配置文件目录:
    [include]
    files = /etc/supervisord.d/*.ini
    

    这里是指定了 supervisor 的配置文件目录以及文件名。今后如果有新的应用是需要supervisor来管理的,我们只需要到 /etc/supervisord/ 目录下,新建一个 xxx.ini 文件后,update 下就可以被 supervisor 加载到了。这里的目录不是必须是设置成当前目录。

    1. 配置完成后,我们需要让配置生效。
    supervisord -c /etc/supervisord.conf
    
    1. 查看下是否run起来了
    ps aux | grep supervisord
    

    至此,supervisor 的配置就完成了。接下来,我们需要配置 Sentry 的 ini 文件,让 supervisor 来管理 Sentry 的进程。

    配置 Sentry

    1. 根据上面的配置,我们在 /etc/supervisord.d/ 目录下新建 sentry.ini 文件。
    • touch sentry.ini
    1. 接下来,需要配置下 sentry.ini 文件。这里,我的配置信息如下:
    [program:sentry_web]
    command=/home/django_sentry/sentry/bin/sentry --config=/home/django_sentry/.sentry  run web
    user=django_sentry
    autostart=true
    autorestart=true
    startsecs=5
    startretries=3
    stdout_logfile=/tmp/sentry_web_access.log
    stderr_logfile=/tmp/sentry_web_error.log
    
    [program:sentry_worker]
    command=/home/django_sentry/sentry/bin/sentry --config=/home/django_sentry/.sentry run worker
    user=django_sentry
    autostart=true
    autorestart=true
    startsecs=5
    startretries=3
    stdout_logfile=/tmp/sentry_worker_access.log
    stderr_logfile=/tmp/sentry_worker_error.log
    
    [program:sentry_cron]
    command=/home/django_sentry/sentry/bin/sentry  --config=/home/django_sentry/.sentry run cron
    user=django_sentry
    autostart=true
    autorestart=true
    startsecs=5
    startretries=3
    stdout_logfile=/tmp/sentry_cron_access.log
    stderr_logfile=/tmp/sentry_cron_error.log
    

    这里,指定了三个 program,分别是 sentry_web, senry_worker, sentry_cron, 对应的指令分别就是 sentry run websentry run worker, sentry run cron。每个参数的说明在此不再赘述,详见: supervisor configuration
    配置完后,我们运行 supervisorctl reload 指令来重新加载下配置,这时候,通过 supervisorctl 来查看每个进程的启动执行情况如下:
    supervisor 运行查看

    如果运行不正常,可以使用 restart xxx 来重启某个进程,也可以 stop xxx 来停止某个进程。如果在重启中,可以通过 status 来查看启动的进度。只有当显示是 RUNNING 状态的时候,才表示运行正常。这里的截图显示,三个进程都已经运行起来了。 exit 退出。
    今后,当我们在配置的目录中新增或更新了文件后,可以通过 supervisorctl update 来记载最新的配置。
    至此, Supervisor 的安装和配置就结束了。

    参考

  • 相关阅读:
    nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
    nyoj 211 Cow Contest
    nyoj 203 三国志 dijkstra+01背包
    nyoj 170 网络的可靠性
    nyoj 120 校园网络
    nyoj 115 城市平乱 dijkstra最短路
    nyoj 42 一笔画问题 欧拉路径
    nyoj 38 布线问题
    hdu 2089 不要62--数位dp入门
    nyoj 712 探 寻 宝 藏--最小费用最大流
  • 原文地址:https://www.cnblogs.com/scharfsinnig/p/7468033.html
Copyright © 2011-2022 走看看