zoukankan      html  css  js  c++  java
  • 使用supervisor管理lnmp

    一、supervisor简介

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

     

    二、supervisor安装

      1.安装python包管理工具:

    yum install python-setuptools

      2.安装supervisor

    easy_install supervisor

      3.配置supervisor

    • 通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,如下所示:
    mkdir /etc/supervisor
    echo_supervisord_conf > /etc/supervisor/supervisord.conf
    • 编辑supervisor配置文件,添加如下内容:
    ;[include]
    ;files = relative/directory/*.ini
    
    ;conf.d 为配置表目录的文件夹,需要手动创建
    [include]
    files = conf.d/*.conf

    三、supervisor主配置文件详解

    [unix_http_server]
    file=/tmp/supervisor.sock   ;UNIX socket 文件,supervisorctl 会使用
    ;chmod=0700                 ;socket文件的mode,默认是0700
    ;chown=nobody:nogroup       ;socket文件的owner,格式:uid:gid
    
    ;[inet_http_server]         ;HTTP服务器,提供web管理界面
    ;port=127.0.0.1:9001        ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
    ;username=user              ;登录管理后台的用户名
    ;password=123               ;登录管理后台的密码
    
    [supervisord]
    logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord.log
    logfile_maxbytes=50MB        ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小
    logfile_backups=10           ;日志文件保留备份数量默认10,设为0表示不备份
    loglevel=info                ;日志级别,默认info,其它: debug,warn,trace
    pidfile=/tmp/supervisord.pid ;pid 文件
    nodaemon=false               ;是否在前台启动,默认是false,即以 daemon 的方式启动
    minfds=1024                  ;可以打开的文件描述符的最小值,默认 1024
    minprocs=200                 ;可以打开的进程数的最小值,默认 200
    
    [supervisorctl]
    serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
    ;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord
    
    ; [program:xx]是被管理的进程配置参数,xx是进程的名称
    [program:xx]
    command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run  ; 程序启动命令
    autostart=true       ; 在supervisord启动的时候也自动启动
    startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
    autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
    startretries=3       ; 启动失败自动重试次数,默认是3
    user=tomcat          ; 用哪个用户启动进程,默认是root
    priority=999         ; 进程启动优先级,默认999,值小的优先启动
    redirect_stderr=true ; 把stderr重定向到stdout,默认false
    stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB
    stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10
    ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
    stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
    killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程
    
    ;包含其它配置文件
    [include]
    files = relative/directory/*.ini    ;可以指定一个或多个以.ini结束的配置文件
    [include]
    files = conf.d/*.conf

    四、supervisor监管nginx、php-fpm、mysql

      在/etc/supervisor/conf.d下分别添加nginx、php-fpm、mysql的监管文件:

    • nginx监管文件内容如下:
    [program:nginx]
    command=/usr/local/nginx/sbin/nginx -g 'daemon off;'
    directory=/usr/local/nginx
    autostart=true
    autorestart=true
    redirect_stderr=true
    priority=10
    stdout_logfile=/data/logs/supervisord/nginx.log

      

    • php-fpm监管文件内容如下:
    [program:php-fpm]
    command=/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.conf --pid /usr/local/php/var/run/php-fpm.pid
    directory=/usr/local/php
    autostart=true
    autorestart=true
    redirect_stderr=true
    priority=9
    stdout_logfile=/data/logs/supervisord/php-fpm.log
    • mysql监管文件内容如下:
    [program:mysql]
    command=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/www/mysqldata --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=localhost.localdomain.err --open-files-limit=65535 --pid-file=/home/www/mysqldata/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
    directory=/usr/local/mysql
    autostart=true
    autorestart=true
    redirect_stderr=true
    priority=8
    stdout_logfile=/data/logs/supervisord/mysql.log

      

      注意:由于supervisor不能管理daemon进程,因此在管理nginx时需要在command字段添加-g 'daemon off; ,在管理php-fpm时需先修改php-fpm配置文件添加daemonize = no。在启动supervisor是先用常规方式停止进程。

     

    五、supervisor常用管理命令

    supervisorctl restart <application name> ;重启指定应用
    supervisorctl stop <application name> ;停止指定应用
    supervisorctl start <application name> ;启动指定应用
    supervisorctl restart all ;重启所有应用
    supervisorctl stop all ;停止所有应用
    supervisorctl start all ;启动所有应用

    六、使用supervisor的web界面

    • 编辑supervisor配置文件,修改如下位置:
    [inet_http_server]         ; inet (TCP) server disabled by default
    port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)
    username=admin             ; (default is no username (open server))
    password=admin123               ; (default is no password (open server))

      

    • 使用浏览器访问supervisor服务器的9001端口,输入用户名和密码,分别对应admin和password后进入如下界面:

  • 相关阅读:
    Lambda表达式、依赖倒置
    ASP.NET vNext 概述
    Uname
    RHEL4 i386下安装rdesktop【原创】
    Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)
    How to decompile class file in Java and Eclipse
    先有的资源,能看的速度看,不能看的,抽时间看。说不定那天就真的打不开了(转)
    Google App Engine 学习和实践
    【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询
    js正則表達式语法
  • 原文地址:https://www.cnblogs.com/ltlinux/p/11962663.html
Copyright © 2011-2022 走看看