shellscript-13-一键部署redis
  UReG4QD8JsyE 2023年11月28日 18 0

shellscript-13-一键部署redis

脚本内容

#!/bin/bash

# author: yolo
# 一键部署redis

# 检测执行正常
ch_ok()
{
	if [ $? -ne 0 ]
	then
		echo "$1 error"
		exit 1
	fi
}

download_redis()
{
	cd /usr/local/src/
	if [ -f redis-6.2.12.tar.gz ]
	then
		echo "当前目录存在redis-6.2.12.tar.gz"
		echo "检测MD5"
		file_md5=`md5sum redis-6.2.12.tar.gz | awk '{print $1}'`
		if [${file_md5} == '0ae0679c3b8779fa1b0b0f81e86be8a4' ]
		then
			reture 0
		else
			echo
			/bin/mv redis-6.2.12.tar.gz redis-6.2.12.tar.gz.old
		fi
	fi
	sudo wget -O redis-6.2.12.tar.gz https://codeload.github.com/redis/redis/tar.gz/refs/tags/6.2.12
	ch_ok "下载redis完成"
}

install_redis()
{
	cd /usr/local/src
	sudo tar -zxvf redis-6.2.12.tar.gz
	ch_ok "解压redis包"
	cd redis-6.2.12/

        echo "安装依赖"
        if which yum >/dev/null 2>&1
        then
                # redhat
                for pkg in cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl
                do
                        if ! rpm -q $pkg >/dev/null 2>&1
                        then
                                sudo yum install -y $pkg
                                ch_ok "yum 安装$pkg"
                        else
                                echo "$pkg已经安装"
                        fi
                done
        fi

	sudo make && sudo make PREFIX=/usr/local/redis install
	ck_ok "编译安装redis"
	
	sudo mkdir -p /usr/local/redis/{conf,log}
	sudo mkdir -p /data/redis
	if id redis &>/dev/null
	then
		echo “系统已经创建redis用户,跳过创建”
	else
		echo “创建redis用户”
		sudo useradd -s /sbin/nologin redis
	fi
	ch_ok "创建redis用户"
	sudo chown -R redis /data/redis /usr/local/redis/log
}

config_redis()
{
	echo "配置redis.conf"
	sudo /bin/cp /usr/local/src/redis-6.2.12/redis.conf /usr/local/redis/conf/redis.conf	
	sudo sed -i 's/daemonize no/daemonize yes/' /usr/local/redis/conf/redis.conf
	sudo sed -i 's@logfile ""@logfile "/usr/local/redis/log/redis.log"@' /usr/local/redis/conf/redis.conf
	sudo sed -i 's@dir ./@dir /data/redis@' /usr/local/redis/conf/redis.conf
	sudo sed -i 's@pidfile /var/run/redis_6379.pid@pidfile /usr/local/redis/log/redis_6379.pid@' /usr/local/redis/conf/redis.conf
	sudo sed -i 's@# requirepass foobared@requirepass yolo@123' /usr/local/redis/conf/redis.conf


	echo "配置systemd service"
        cat > /tmp/redis.service <<EOF
[Unit]
Description=redis
After=network.target

[Service]
User=redis
Type=forking
TimeoutSec=0
PIDFile=/usr/local/redis/log/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

	sudo /bin/mv /tmp/redis.service /lib/systemd/system/redis.service
	ch_ok "编辑redis.service完成"
	
	echo "更新内核参数"
	grep -q 'net.core.somaxconn = 2048' /etc/sysctl.conf || echo "net.core.somaxconn = 2048" | sudo tee -a /etc/sysctl.conf
	grep -q 'vm.overcommit_memory = 1' /etc/sysctl.conf || echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf
	
        sudo sysctl -p
        sudo systemctl daemon-reload
        sudo systemctl enable redis
        echo "启动redis"
        sudo systemctl start redis
        ch_ok "启动redis完成"
}

download_redis
install_redis
config_redis
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年11月19日   15   0   0 重启redis
  eHipUjOuzYYH   2023年12月07日   14   0   0 数据乐观锁redis
  P3nxyT0LRuwj   2023年11月24日   61   0   0 缓存redis配置文件
  L83A5jZvvg3Q   2023年11月19日   30   0   0 源码包icoredis
  eHipUjOuzYYH   2023年11月13日   145   0   0 本地地址redis链路
  9JCEeX0Eg8g4   2023年11月22日   20   0   0 数据redis持久化
  eHipUjOuzYYH   2023年11月13日   16   0   0 数据redis
  D04qQxYJZ4A6   2023年11月19日   32   0   0 mysqlredisphp
UReG4QD8JsyE