• Supervisor安装


    简介

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

    安装

    环境

    centos 7

    安装

    安装supervisor

    #!/bin/bash
    install_supervisor()
    {
        if [ `command -v supervisord` ];then
            return
        fi
        mkdir -p /var/logs/supervisord
        yum install supervisor -y
        sed -i 's/*.ini/*.conf/g' /etc/supervisord.conf
        service supervisord restart
        echo "/usr/bin/supervisord" >> /etc/rc.local
        chmod +x /etc/rc.local
        mkdir -p /etc/supervisor
    }
    
    install_supervisor
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    /etc/supervisor: 存放被supervisor管理的项目启动脚本

    操作脚本

    echo '[program:commercial-saas]
    # 脚本目录
    directory=/opt/messi/%(program_name)s/bin/   
    # 脚本执行命令
    command=/opt/messi/%(program_name)s/bin/operate.sh restart
    ;numprocs=1
    ;process_name=%(program_name)s
    user=root
    autorestart=true
    startsecs=30
    killasgroup=true
    stopasgroup=true
    redirect_stderr=true
    stdout_logfile = /var/logs/supervisord/%(program_name)s.log
    loglevel=info' > /etc/supervisor/commercial-saas.conf
    
    supervisorctl update
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    启动脚本

    #!/bin/bash
    
    # path of jar
    BASE_PATH="/opt/bosco/commercial-saas"
    # app name
    APP_NAME="commercial-saas"
    # jar name
    JAR_NAME=$APP_NAME.jar
    # app name
    LOG_DIR=/var/logs/$APP_NAME
    
    
    # jvm
    JAVA_OPTS="-Xms1g -Xmx1g -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
    
    JAVA_CMD="java  $JAVA_OPTS"
    JAVA_CMD=$JAVA_CMD" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR/$APP_NAME.heaperr.log.`date "+%Y%m%d%H%M%S"`  -Xloggc:$LOG_DIR/$APP_NAME.gc.log.`date "+%Y%m%d%H%M%S"`"
    JAVA_CMD=$JAVA_CMD" -jar $BASE_PATH/$JAR_NAME "
    
    # stop method
    stop(){
      app_pid=`ps -ef | grep java | grep $APP_NAME | awk '{print $2}'`
      if [[ $app_pid ]]; then
       	kill -9 $app_pid
        echo "$APP_NAME was stopped"
      else
        echo "$APP_NAME has been already stopped"
      fi
    }
    
    # start method
    start(){
      echo $JAVA_CMD
      $JAVA_CMD
      echo "$APP_NAME was started"
    }
    
    
    restart(){
      stop
      start
    }
    
    
    case "$1" in
    
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart)
                restart
        ;;
        *)
                echo "available operations: [start|stop|restart]"
                exit 1
        ;;
    esac
    
    
    # start method
    start(){
      java $JAVA_OPTS -jar $BASE_PATH/$JAR_NAME
      echo "$APP_NAME was started" 
    }
    
    
    restart(){
      stop
      start
    }
    
    
    case "$1" in
    
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart)
                restart
        ;;
        *)
                echo "available operations: [start|stop|restart]"
                exit 1
        ;;
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91

    备注

    如果supervisor启动失败,可能是没有设置java 软连接

    ln -s /opt/java/jdk1.8.0_301/bin/java /usr/bin/java
    ln -s /opt/java/jdk1.8.0_301/bin/javac /usr/bin/javac
    
    • 1
    • 2
  • 相关阅读:
    【FAQ】运动健康服务REST API接口使用过程中常见问题和解决方法总结
    社交直播语聊场景解决方案(一)商业化探索
    『现学现忘』Git基础 — 6、Git的操作流程
    C#压缩图片
    AI智能电话客服机器人的交互流程
    Qt实现微信截图功能(一)
    【App自动化测试】(二)Appium环境部署
    客观评价一下GPT-4o
    数说故事官网全新升级,高效赋能业务场景
    【华为OD机试python】比赛【2023 B卷|100分】
  • 原文地址:https://blog.csdn.net/qq_32573109/article/details/133045048