zoukankan      html  css  js  c++  java
  • 【redis运维】redis自己主动安装脚本(仅仅安装redis)

    Redis自己主动安装部署

    本文总共分为4个部分:

            redis自己主动安装脚本文件夹结构说明;

            redis自己主动安装脚本内容;

            redis的操作系统服务脚本说明;

            本文引用的资料链接地址。

    说明:本文未涉及redis内存分配器部分的内容。


    第一部分

    Redis自己主动安装脚本文件夹结构说明:

    # ls 查看当前文件夹包括下面3个文件

    -- install_redis.sh        # redis自己主动安装脚本

    -- redis-2.8.9.tar.gz      # redis安装包(需make,make test,make install)

    -- redis_service_script   # redis 操作系统服务脚本(用于配置redis服务开机自启动,以及redis服务管理命令)


    第二部分

    ###########################redis自己主动安装脚本内容開始(install_redis.sh)######################

    #!/bin/bash

    # Version:  v1.0 by JiangYanguo on 2014-05-14
    # Desc:     auto make, make install and configure redis


    REDIS_CONF="/etc/redis.conf"

    # 检查redis的安装包是否存在
    if [ "`ls redis-*.tar.gz >/dev/null 2>&1 ; echo $?

    `" -ne 0 ]
    then
        echo "Error: redis*.tar.gz file doesn't exists."
        exit
    else
       REDIS_PACKAGE="`ls -ltr redis-*.tar.gz | head -1 | awk '{print $NF}' `"
    fi

    # 安装redis。make,make test,make install
    # install redis

    echo "Info: install redis..."

    tar zxf ${REDIS_PACKAGE}

    REDIS_DIR="`ls -ltr | egrep '^d' | awk '{print $NF}'`"

    cd ${REDIS_DIR}

    pwd

    make

    make test

    if [ "$?" -nt 0 ];then
      echo "Some dependent packages are needed."
      exit
    fi

    make install


    echo "Info: set ${REDIS_CONF} ..."

    cd ..

    # 设置redis配置文件,data文件夹为/home/redis
    # set /etc/redis.conf
    cp redis.conf /etc/

    sed -i 's/^daemonize(.*)/#daemonize1/g'  ${REDIS_CONF}
    sed -i '2 adaemonize yes' ${REDIS_CONF}

    sed -i 's/^dir(.*)/#dir1/g' ${REDIS_CONF}
    sed -i '2 adir /home/redis/' ${REDIS_CONF}


    # set memory allocate method
    [ "`egrep 'vm.overcommit_memory=1' /etc/sysctl.conf | wc -l`" -eq 0 ] && echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
    /sbin/sysctl -p

    # add redis user
    useradd redis

    # set redis data dir
    mkdir -p /home/redis/
    chown -R redis.redis /home/redis

    #设置redis服务开机自启动。也是redis的管理服务
    # set redis service
    echo "Info: set redis service ..."
    cp redis_service_script /etc/init.d/redis
    chmod +x /etc/init.d/redis
    chkconfig --add redis
    chkconfig redis on

    #
    echo "Info: finish installing redis."
    echo ""

    ########################## redis自己主动安装脚本内容结束 (install_redis.sh)#####################################


    第三部分

    ########################## redis的操作系统服务脚本内容開始(redis_service_script)#########################################

    #!/bin/bash

    # redis - Startup script for redis

    # chkconfig: 2345 85 152345 85 15
    # description: startup script for redis
    # processname: redis-server
    # config: /etc/redis.conf
    # pidfile: /var/run/redis.pid
    # datafilepath: /home/redis/

    #
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    REDIS_CLI=/usr/local/bin/redis-cli
       
    PIDFILE="/var/run/redis.pid"
    CONF="/etc/redis.conf"

    ## start
    function start(){
      echo "Info: start redis..."
       if [ -f $PIDFILE ]
       then
           echo "$PIDFILE exists, process is already running or crashed"
       else
           echo "Starting Redis server..."
           $EXEC $CONF
       fi
       if [ "$?"="0" ]
       then
           echo "Redis is running..."
       fi
    }

    ## stop
    function stop(){
      echo "Info: stop redis..."
      if [ ! -f $PIDFILE ];then
          echo "$PIDFILE does not exist, process is not running"
      else
          PID=$(cat $PIDFILE)
          echo "Stopping ..."
          $REDIS_CLI -p $REDISPORT SHUTDOWN
          while [ -x ${PIDFILE} ]
          do
              echo "Waiting for Redis to shutdown ..."
              sleep 1
          done
          echo "Redis stopped"
      fi

    }

    ## restart
    function restart(){
      stop
      echo ""
      start
      echo ""
    }

    ## info
    function info(){
      echo "Info: redis info..."
      if [ -f $PIDFILE ];then
          $REDIS_CLI info
      else
         echo "$PIDFILE does not exist, process is not running"
      fi
    }

    ## status
    function status(){
      REDIS_SERVER_COUNT="`netstat -nltp | grep redis-server | wc -l`"
      if [ -f $PIDFILE ] && [ "${REDIS_SERVER_COUNT}" -gt 0 ]
      then
          echo "Info: redis is running."
      elif [ ! -f $PIDFILE ]
      then
          echo "$PIDFILE does not exist, process is not running"
      elif [ "${REDIS_SERVER_COUNT}" -eq 0 ]
      then
          echo "Redis is not listening any port."
      fi

    }

    case "$1" in
      start)
        start
        ;;
      stop)
        stop
        ;;
      restart)
        restart
        ;;
      info)
        info
        ;;
      status)
        status
        ;;
      *)
        echo "Usage: $0 {start|stop|restart|info|status}"
        
    esac

    ########################## redis的操作系统服务脚本内容结束(redis_service_script)#########################################


    第四部分

    本文參考的资料链接地址:

    Redis安装: http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3117997.html

    Redis安装: http://blog.chinaunix.net/uid-790245-id-3766268.html

    You'll need Skype CreditFree via Skype
  • 相关阅读:
    Linux三剑客之sed深度实践讲解(上)
    Linux第三阶段题型测试
    Linux正则表达式题型
    linux文本处理三剑客命令及用法
    SSH服务协议、部署ssh、scp、sftp服务
    NFS客户端挂载及永久生效
    SSH实现无密码登录
    NFS深度解析及搭建同步NFS服务
    NFS文件系统及搭建NFS共享服务
    Linux系统磁盘管理
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10561471.html
Copyright © 2011-2022 走看看