#!/bin/bash
# 编译安装Redis
source /etc/init.d/functions
#Redis版本
Redis_version=redis-5.0.9
suffix=tar.gz
Redis=${Redis_version}.${suffix}
Password=123456
#redis源码下载地址
redis_url=http://download.redis.io/releases/${Redis}
#redis安装路径
redis_install_DIR=/apps/redis
# CPU数量
CPUS=`lscpu|grep "^CPU(s)"|awk '{print $2}'`
color () {
if [[ $2 -eq 0 ]];then
echo -e "/e[1;32m$1/t/t/t/t/t/t[ OK ]/e[0;m"
else
echo $2
echo -e "/e[1;31m$1/t/t/t/t/t/t[ FAILED ]/e[0;m"
fi
}
download_redis (){
# 安装依赖包
yum -y install gcc jemalloc-devel || { color "安装依赖包失败,请检查网络" 1 ;exit 1;}
cd /opt
if [ -e ${Redis} ];then
color "Redis源码包已存在" 0
else
color "开始下载Redis源码包" 0
wget ${redis_url}
if [ $? -ne 0 ];then
color "下载Redis源码包失败,退出!" 1
exit 1
fi
fi
}
install_redis (){
# 解压源码包
tar xvf /opt/${Redis} -C /usr/local/src
ln -s /usr/local/src/${Redis_version} /usr/local/src/redis
# 编译安装
cd /usr/local/src/redis
make -j ${CPUS} install PREFIX=${redis_install_DIR}
if [ $? -ne 0 ];then
color "redis 编译安装失败!" 1
exit 1
else
color "redis编译安装成功" 0
fi
ln -s ${redis_install_DIR}/bin/redis-* /usr/sbin/
# 添加用户
if id redis &> /dev/null;then
color "redis用户已存在" 1
else
useradd -r -s /sbin/nologin redis
color "redis用户已创建完成" 0
fi
mkdir -p ${redis_install_DIR}/{etc,log,data,run}
#准备redis配置文件
cp redis.conf ${redis_install_DIR}/etc/
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/" ${redis_install_DIR}/etc/redis.conf
sed -i "/# requirepass/a requirepass ${Password}" ${redis_install_DIR}/etc/redis.conf
sed -i "s@^dir .*/$@dir ${redis_install_DIR}//data@" ${redis_install_DIR}/etc/redis.conf
sed -i "s@^logfile .*/$@logfile ${redis_install_DIR}//log//redis-6379.log@" ${redis_install_DIR}/etc/redis.conf
sed -i "s@^pidfile .*/$@pidfile ${redis_install_DIR}//run//redis-6379.pid@" ${redis_install_DIR}/etc/redis.conf
chown -R redis:redis ${redis_install_DIR}
cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 1024
vm.overcommit_memory = 1
EOF
sysctl -p
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
source /etc/rc.d/rc.local
# 准备service服务
cat > /usr/lib/systemd/system/redis.service <<EOF
[Unit]
Description=redis persistent key-value database
After=network.target
[Service]
ExecStart=${redis_install_DIR}/bin/redis-server ${redis_install_DIR}/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT /$MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
EOF
chown -R redis:redis ${redis_install_DIR}
systemctl daemon-reload
systemctl enable --now redis
systemctl is-active redis
if [ $? -ne 0 ];then
color "redis服务启动失败!" 1
exit 1
else
color "redis服务启动成功" 0
color "redis安装已完成" 0
fi
}
download_redis
install_redis
exit 0
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/274670.html