0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

来练习一个写Redis部署的脚本

阿铭linux 来源:阿铭linux 作者:阿铭 2022-12-01 09:16 次阅读

继Nginx和MySQL的部署脚本之后,相信只要你跟着写了,那么里面的很多关键精髓你已经知晓,今天就来练习一个写Redis部署的脚本吧。

同样地,先给出部署步骤:

1)下载

cd /usr/local/src
sudo wget -O redis-7.0.4.tar.gz  https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.4

2)安装

#解压
sudo tar zxvf redis-7.0.4.tar.gz
cd redis-7.0.4/


## 编译,安装并指定路径
sudo make
sudomakePREFIX=/usr/local/redisinstall


## 创建conf和log目录
sudo mkdir /usr/local/redis/{conf,log}


## 创建数据目录
sudo mkdir -p /data/redis


##创建redis服务的用户,并更改目录属主
sudo useradd -s /sbin/nologin redis
sudo chown redis /data/redis /usr/local/redis/log

3)修改配置文件

sudo cp redis.conf /usr/local/redis/conf/
sudo vi /usr/local/redis/conf/redis.conf #修改如下


daemonize no  改为  daemonize yes


logfile ""  改为  logfile "/usr/local/redis/log/redis.log"


dir ./  改为 dir /data/redis


pidfile /var/run/redis_6379.pid 改为  pidfile /usr/local/redis/log/redis_6379.pid


在# requirepass foobared  下面增加一行
requirepass aminglinux.Com

4)定义systemd服务管理脚本

sudo vi /lib/systemd/system/redis.service ##内容如下
[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

5)启动redis服务

## 更改内核参数
sudo vi /etc/sysctl.conf  #加入两行
net.core.somaxconn = 2048
vm.overcommit_memory = 1


##使内核参数生效
sudo sysctl -p


##加载redis服务
sudo systemctl daemon-reload


##开启开机自启
sudo systemctl enable redis


##启动服务
sudo systemctl start redis

把部署步骤写成shell脚本:

#!/bin/bash


ck_ok()
{
        if [ $? -ne 0 ]
        then
                echo "$1 error."
                exit 1
        fi
}




download_redis()
{
    cd /usr/local/src
    if [ -f redis-7.0.4.tar.gz ]
    then
        echo "当前目录已存在redis-7.0.4.tar.gz"
        echo "检测MD5"
        file_md5=`md5sum redis-7.0.4.tar.gz | awk '{print $1}'`
        if [ ${file_md5} == '3a2ce76ef8f5ca3cc6463c487f2d532c' ]
        then
            return 0
        else
            echo "file redis-7.0.4.tar.gz md5 check failed"
            /bin/mv redis-7.0.4.tar.gz redis-7.0.4.tar.gz.old
        fi
    fi
    sudo wget -O redis-7.0.4.tar.gz  https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.4
    ck_ok "下载redis"
}




install_redis()
{
    cd /usr/local/src
    sudo tar zxf redis-7.0.4.tar.gz
    ck_ok "解压redis源码包"
    cd redis-7.0.4/
    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
    ck_ok "创建redis用户"
    sudo chown -R redis /data/redis /usr/local/redis/log
}




config_redis()
{
    echo "配置redis.conf"
    sudo /bin/cp /usr/local/src/redis-7.0.4/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 '/# requirepass foobared/a requirepass aminglinux.Com' /usr/local/redis/conf/redis.conf




    echo "配置systemd service"
    cat >/lib/systemd/system/redis.service <

说明:几个关键要领

1)下载之前要先判断本地是否已经下载过该包,如果本地已经有包,还需要判断该包的md5是否符合预期;

2)解压后和make以及make install后都要做判断,这是关键操作,如果这个没做对,后面的步骤没必要执行;

3)创建用户之前先做判断,看看用户是否已经存在;

4)启动完服务还要检查服务到底有没有起来。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MYSQL数据库
    +关注

    关注

    0

    文章

    95

    浏览量

    9277
  • Redis
    +关注

    关注

    0

    文章

    362

    浏览量

    10494

原文标题:快来检验一下你到底有没有掌握这些脚本精髓吧

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    通过这个部署脚本看看能否提升你的shell能力

    前几天给了一个Nginx部署脚本,今天再来一个MySQL的部署脚本。同样地,先给出部署文档步骤。
    发表于 11-29 08:59 303次阅读

    Redis Stream应用案例

    的消息。如果要基于Redis构建IRC系统,那我们不由自主的会想到使用Redis的PUB/SUB功能,可以看到,基于PUB/SUB,只
    发表于 06-26 17:15

    基于shell脚本键安装redis

    linux系统环境使用shell脚本键安装redis的方法
    发表于 08-28 09:07

    redis解决多的竞争问题总结

    redis应该中如何解决多的竞争问题
    发表于 10-08 15:35

    redis集群的如何部署

    redis集群的部署(伪分布式)
    发表于 05-29 17:13

    Docker部署Redis服务器集群的方法

    Docker部署Redis服务器集群
    发表于 06-13 09:12

    怎样shell脚本以实现Android7.1.2源码的自动编译呢

    怎样shell脚本以实现Android7.1.2源码的自动编译呢?
    发表于 03-04 06:32

    怎样使用Redis + LUA脚本进行系统控制并发以防止无效请求呢

    当我们灵活的人工系统调用优付渠道接口进行用户签约或资金分配时,优付系统会添加API接口请求的当前限流策略。限制每个商家的每种类型的接口请求做限流。例如:同商家每秒仅允许20签约请求。当每秒有20
    发表于 03-22 13:45

    shell脚本的经历记录

    #cluster_known_nodes不为1,cluster_state为ok时才认为集群正常,才能重启#下一个pod,改健康检查脚本旨在维护升级时redis集群状态,不在operator中维护# 利用好statefulset
    发表于 10-31 18:15

    如何使用redis实现分布式锁的lua脚本出现和资料说明

    Redis 使用单个 Lua 解释器去运行所有脚本,并且, Redis 也保证脚本会以原子性(atomic)的方式执行:当某个脚本正在运行的
    的头像 发表于 12-01 11:00 3364次阅读

    探究Redis 性能测试与监控

    很多人在安装部署Redis后,就没有对Rredis的配置和部署等有效性和高可用性进行性能测试,最终导致上线出现缓存穿透、雪崩等现象,导致性能还是有问题,其实做为技术运维人员在部署
    的头像 发表于 10-12 09:19 1242次阅读
    探究<b class='flag-5'>Redis</b> 性能测试与监控

    一个比Redis性能更强的数据:KeyDB

    KeyDB与Redis协议、模块和脚本保持完全兼容。这包括对脚本和事务的原子性保证。因为KeyDB与Redis开发保持同步,所以KeyDB是Redi
    的头像 发表于 03-13 10:55 1362次阅读

    Redis的主从、哨兵、Redis Cluster集群

    + MyBatis Plus + Vue 另外一个就是保证 Redis服务不中断 。 对于尽量减少数据丢失,可以通过AOF和RDB保证。 对于保证服务不中断的话,Redis就不能单点部署,这时候我们先看下
    的头像 发表于 06-12 14:58 484次阅读
    <b class='flag-5'>Redis</b>的主从、哨兵、<b class='flag-5'>Redis</b> Cluster集群

    Windows Docker部署Redis的流程

    由于 Docker 部署 Redis 后,Redis 容器中默认是没有 redis.conf 配置文件的,需要自己手动挂在进去。
    的头像 发表于 11-27 10:02 344次阅读
    Windows Docker<b class='flag-5'>部署</b><b class='flag-5'>Redis</b>的流程

    redis容器部署并用编程演示sb整合

    Redis 是一个开源的高性能的内存数据库,常用于缓存、会话管理和消息队列的存储。在容器化的架构中,使用容器部署 Redis 可以减轻运维负担,提高可用性和弹性。本文将介绍如何使用容器部署
    的头像 发表于 12-05 10:08 198次阅读