继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文章
96浏览量
9389 -
Redis
+关注
关注
0文章
374浏览量
10871
原文标题:快来检验一下你到底有没有掌握这些脚本精髓吧
文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
给你一篇部署文档,你能不能写一个脚本出来
谁一开始写shell脚本不是从流水账开始的?写着写着你就会发现,需要在哪里加判断,在哪里抛出异常。写着写着就知道何时用函数,何时用变量。写着写着你就会说,shell脚本也就那么回事。
发表于 11-23 09:07
•199次阅读
Redis Stream应用案例
的消息。如果要基于Redis来构建一个IRC系统,那我们不由自主的会想到使用Redis的PUB/SUB功能,可以看到,基于PUB/SUB,只
发表于 06-26 17:15
记一次写shell脚本的经历记录
#cluster_known_nodes不为1,cluster_state为ok时才认为集群正常,才能重启#下一个pod,改健康检查脚本旨在维护升级时redis集群状态,不在operator中维护# 利用好statefulset
发表于 10-31 18:15
如何使用redis实现分布式锁的lua脚本出现和资料说明
Redis 使用单个 Lua 解释器去运行所有脚本,并且, Redis 也保证脚本会以原子性(atomic)的方式执行:当某个脚本正在运行的
一个比Redis性能更强的数据:KeyDB
KeyDB与Redis协议、模块和脚本保持完全兼容。这包括对脚本和事务的原子性保证。因为KeyDB与Redis开发保持同步,所以KeyDB是Redi
Redis的主从、哨兵、Redis Cluster集群
+ MyBatis Plus + Vue 另外一个就是保证 Redis服务不中断 。 对于尽量减少数据丢失,可以通过AOF和RDB保证。 对于保证服务不中断的话,Redis就不能单点
redis查看主从节点命令
服务器的数据复制到其他 Redis 服务器的过程。其中一个 Redis 服务器作为主服务器,其他 Redis 服务器则作为从服务器。主服务
redis容器部署并用编程演示sb整合
Redis 是一个开源的高性能的内存数据库,常用于缓存、会话管理和消息队列的存储。在容器化的架构中,使用容器部署 Redis 可以减轻运维负
评论