linux redis安装脚本

下面是linux 安装redis的shell脚本,如果是从服务器把role改成2即可。
#!/usr/bin/env bash
# ----------------------------------------
# Functions: onekey install redis sentinel
# Auther: denglianyong
# ----------------------------------------
# syntx check
# define some variables
#redis_sentinel_ip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`

redis_sentinel_ip=192.168.210.3
sentinel_port=8001
redis_port=6379
redis_sentinel_dir=/data/redis-sentinel/$sentinel_port
redis_dir=/usr/local/redis
version=4.0.1
role=1  #1:master  2:slave
master_ip=192.168.210.3
password="pfnl0bdh9wlhafpv"


install_redis(){
    #redis_pid_dir=/var/run/redis
    redis_log=/var/log/redis
    #redis_rdb_aof_dir=/var/lib/redis
    #
    #[ -d $redis_pid_dir ] || mkdir $redis_pid_dir
    [ -d $redis_log ] || mkdir $redis_log
    [ -d $redis_sentinel_dir ] || mkdir -p $redis_sentinel_dir


    # upgrade os && install dev tools
    #yum update -y && yum groupinstall -y "Development Tools" && yum -y install tcl

    # download latest redis
    if [ ! -f /usr/local/src/redis-$version.tar.gz ]; then
       wget http://download.redis.io/releases/redis-$version.tar.gz -P /usr/local/src
    fi
    cd /usr/local/src && tar zxvf redis-$version.tar.gz -C /usr/local/
    cd /usr/local/ && ln -sv redis-$version redis && cd redis && make && taskset -c 1 sudo make test

    # config sysctl.conf
    echo 512 > /proc/sys/net/core/somaxconn
    sysctl vm.overcommit_memory=1

    # config three redis
    #mkdir -pv $redis_sentinel_dir/
    # copy excute command
    \cp $redis_dir/src/{redis-server,redis-sentinel} $redis_sentinel_dir/

    # copy redis.conf & sentinel.conf
    \cp $redis_dir/{redis.conf,sentinel.conf} $redis_sentinel_dir/

    # config redis.conf
    # example by /data/redis-sentinel/9000/redis.conf
    sed -i "s/bind 127.0.0.1/bind $redis_sentinel_ip/g" $redis_sentinel_dir/redis.conf
    sed -i "s/port 6379/port $redis_port/g" $redis_sentinel_dir/redis.conf

    sed -i "s/# requirepass foobared/requirepass $password/g"  $redis_sentinel_dir/redis.conf
    sed -i 's/protected-mode\ yes/protected-mode\ no/g' $redis_sentinel_dir/redis.conf
    sed -i 's/daemonize no/daemonize yes/g' $redis_sentinel_dir/redis.conf
    sed -i 's/appendonly no/appendonly yes/g' $redis_sentinel_dir/redis.conf
    #sed -i 's/logfile ""/logfile \"\/data\/redis-sentinel\"/g' $redis_sentinel_dir/redis.conf
    sed -i "s/logfile \"\"/logfile \/var\/log\/redis\/redis.log/g" $redis_sentinel_dir/redis.conf
    #sed -i 's/dir \.\//dir \/data\/redis-sentinel\//g' $redis_sentinel_dir/redis.conf
    #sed -i 's/appendonly.aof/\/data\/redis-sentinel\/appendonly.aof/g' $redis_sentinel_dir/redis.conf
    # rename config for secuirty
    #rename-command SHUTDOWN REDIS_SHUTDOWN
    #rename-command FLUSHDB REDIS_FLUSHDB
    #rename-command FLUSHALL REDIS_FLUSHALL
    #rename-command KEYS REDIS_KEYS
    echo 'rename-command CONFIG REDIS_CONFIG' >> $redis_sentinel_dir/redis.conf
    echo 'rename-command FLUSHALL REDIS_FLUSHALL' >> $redis_sentinel_dir/redis.conf
    echo 'rename-command FLUSHDB REDIS_FLUSHDB' >> $redis_sentinel_dir/redis.conf

    if [ $role -eq 2 ];then
        echo "slaveof $master_ip  $redis_port" >> $redis_sentinel_dir/redis.conf
    fi
    # ln redis-server &  redis-sentinel
    cp $redis_dir/src/{redis-server,redis-sentinel,redis-cli} /usr/local/sbin/

    # start redis
    cd $redis_sentinel_dir/
    ./redis-server redis.conf


    # watch redis master/slave status
    ps -ef | grep redis
    $redis_dir/src/redis-cli -h $redis_sentinel_ip -p $redis_port -a $password  info replication
    sleep 5

    # config sentinel.conf & start sentinel 1
    # example by /data/redis-sentinel/9000/sentinel.conf
    sed -i 's/\# protected-mode no/protected-mode no/g' $redis_sentinel_dir/sentinel.conf
    sed -i "s/port 26379/port $sentinel_port/g" $redis_sentinel_dir/sentinel.conf
    sed -i "s#127.0.0.1 6379#$redis_sentinel_ip 6379#g" $redis_sentinel_dir/sentinel.conf
    
    sed -i "s#dir /tmp#dir $redis_sentinel_dir#g" $redis_sentinel_dir/sentinel.conf
    echo "daemonize yes" >> $redis_sentinel_dir/sentinel.conf


    # start sentinel
    $redis_sentinel_dir/redis-sentinel $redis_sentinel_dir/sentinel.conf

    # watch sentinel status
    ps -ef | grep redis
    $redis_dir/src/redis-cli -h $redis_sentinel_ip -p $sentinel_port   sentinel masters
}

start(){
    cd $redis_sentinel_dir/
    ./redis-server redis.conf

    # start sentinel
    $redis_sentinel_dir/redis-sentinel $redis_sentinel_dir/sentinel.conf
}

stop(){
  ps aux| grep 'redis' |grep -v 'grep' |awk '{print $2}'|xargs kill -9    
}


usage() 

    echo "Usage:  ./redis.sh [install|start|stop ]"
    exit 1 

if [ "$1" = "install" ]; then
    install_redis 
elif [ "$1" = "start" ]; then 
    start 
elif [ "$1" = "stop" ]; then
    stop
else
      usage
fi
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值