在Linux部署单机Redis完整过程
前言
本文以redis-6.2.5为例,讲述在 Linux 系统下单机 Redis 下载、编译、打包、安装为服务、启动和访问的整个过程。
安装环境为 Linux CentOS 64,本文用的 7.5 版本.
下载编译目录在当前目录soft/redis下,最终服务可执行程序在/opt/soft/redis6中。
准备工作
# 查看是否有文件下载工具
wget --help
# 如果没有则安装文件下载工具
yum install wget
# 查看是否有编译套件
gcc --help
# 如果没有就安装编译套件 GCC
yum install gcc
部署步骤
下载安装包并编译
echo "创建单独目录" > /dev/null
mkdir -p ~/soft/redis
echo "下载、解压安装包" > /dev/null
wget -P ~/soft/redis http://download.redis.io/releases/redis-6.2.5.tar.gz
tar -xf ~/soft/redis/redis-6.2.5.tar.gz -C ~/soft/redis/
echo "编译,成功后会在 ~/soft/redis/redis-6.2.5/src 下生成可执行程序" > /dev/null
make -C ~/soft/redis/redis-6.2.5
如果编译出现了问题,解决后需要执行下面命令清除之前编译结果,然后再一次执行编译命令
make -C ~/soft/redis/redis-6.2.5 distclean
安装并配置环境变量
echo "安装并指明路径,完成后可以看到目录 /opt/soft/redis6/bin 下生成了可执行程序" > /dev/null
make -C ~/soft/redis/redis-6.2.5 install PREFIX=/opt/soft/redis6
echo "追加REDIS_HOME环境变量" > /dev/null
echo '
export REDIS_HOME=/opt/soft/redis6
export PATH=$PATH:$REDIS_HOME/bin' >> /etc/profile
echo "使环境变量生效" > /dev/null
source /etc/profile
echo "查看Redis版本" > /dev/null
redis-server -v
编辑服务安装脚本
vim ~/soft/redis/redis-6.2.5/utils/install_server.sh
注释下面几行。
使用脚本安装为服务
~/soft/redis/redis-6.2.5/utils/install_server.sh
中间会提示要输入端口、路径都可以一直回车使用默认的,最后创建成功会配置好开机启动,并启动这个服务实例。
配置多个服务的时候重复执行这个脚本,输入不同的端口号,路径都会根据端口号创建默认的。
启动/停止/查看状态
不同的服务需改端口号来执行
service redis_6379 start/stop/status
其他问题
远程连接不上
修改配置文件 /etc/redis/6379.conf,注释 bind 并 配置 protected-mode 为 no。
# bind 127.0.0.1 -::1
protected-mode no
停机失败
配置密码后使用命令 service redis_6379 stop 停止 Redis 失败,如下图:
查看服务脚本 /etc/init.d/redis_6379 可以发现,stop 是通过 redis-cli 调用 shutdown 来完成的,这种客户端停机方式需要提供密码。
我们只要编辑这个脚本,在停机那一行中加入密码参数就可以了。
$CLIEXEC -p $REDISPORT -a 密码 shutdown
但是它会提示你在命令行接口这样做不安全:
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
那就先通过 redis-cli 登录,再验证密码进行停机
各个目录之间关系
# 这个是解压后的目录,只有在安装新的组件或者不同端口的 Redis 服务才会需要它,后面服务启动跟它没关系
/root/soft/redis/redis-6.2.5
# 执行完安装脚本后这里生成了可执行脚本,所有服务启动都会用到,但它有一份就够了
/opt/soft/redis6/bin
# 每个 Redis 服务都会产生独立的以下几个文件/目录,不同服务相应端口号有区别
# 配置
/etc/redis/6379.conf
# 数据
/var/lib/redis/6379
# 日志
/var/log/redis_6379.log
# 服务启动脚本
/etc/init.d/redis_6379
参考说明文档
cat redis-6.2.5/README.md