redis集群安装踩过的坑

本文介绍了在CentOS 6.5系统上安装Redis 3.2.4版本时可能遇到的问题及解决方案,包括gcc的安装、文件权限设置、环境变量配置以及错误处理策略。

redis安装方式一

1.安装gcc命令:yum install -y gcc

复制代码
#安装gcc
[root@localhost src]# yum install -y gcc

#出现如下信息则安装成功
Installed:
gcc.x86_64 0:4.4.7-17.el6

Dependency Installed:
cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-17.el6 mpfr.x86_64 0:2.4.1-6.el6 ppl.x86_64 0:0.10.2-11.el6

Complete

#查看gcc方式1
[root@localhost src]# gcc -v 
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info......
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)

#查看gcc方式2
[root@localhost src]# rpm -q gcc 
gcc-4.4.7-17.el6.x86_64
复制代码

2.下载网址

redis官网地址:http://www.redis.io/

redis下载地址:http://download.redis.io/releases/

3.以centos6.5系统,redis3.2.4版本为例,把下载好的redis压缩包传到linxu系统中,进行解压.

[root@localhost redis]# tar zxvf redis-3.2.8.tar.gz

4.编译安装,执行命令 make

复制代码
#执行命令
[root@localhost redis-3.2.8]# make

#出现以下信息则表示安装完成
Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory `/usr/redis/redis-3.2.8/src'
复制代码

5.启动redis

[root@localhost 6000]# redis-server redis.conf

6.安装出现错误情况

(1)执行make命令出现如下错误,则没有安装gcc,按照上面安装方法安装gcc

复制代码
[root@localhost redis]# cd redis-3.2.8/
[root@localhost redis-3.2.8]# make
cd src && make all
sh: ./mkreleasehdr.sh: Permission denied
make[1]: Entering directory `/usr/redis/redis-3.2.8/src'
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html
(cd ../deps && make distclean)
make[2]: Entering directory `/usr/redis/redis-3.2.8/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd geohash-int && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
make[2]: Leaving directory `/usr/redis/redis-3.2.8/deps'
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -O2 -g -ggdb   -I../deps/geohash-int -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua geohash-int jemalloc)
make[2]: Entering directory `/usr/redis/redis-3.2.8/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd geohash-int && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
(echo "" > .make-ldflags)
(echo "" > .make-cflags)
MAKE hiredis
cd hiredis && make static
make[3]: Entering directory `/usr/redis/redis-3.2.8/deps/hiredis'
gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
make[3]: gcc: Command not found
make[3]: *** [net.o] Error 127
make[3]: Leaving directory `/usr/redis/redis-3.2.8/deps/hiredis'
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/usr/redis/redis-3.2.8/deps'
make[1]: [persist-settings] Error 2 (ignored)
    CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/redis/redis-3.2.8/src'
make: *** [all] Error 2
复制代码

 (2)执行maker出现如下错误,则没有权限执行命令,要在 /src 目录执行授权命令:chmod 777 mkreleasehdr.sh

复制代码
#1.执行make报错,则没有权限执行命令
[root@localhost redis-3.2.8]# make
cd src && make all
sh: ./mkreleasehdr.sh: Permission denied
make[1]: Entering directory `/usr/redis/redis-3.2.8/src'
    CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/redis/redis-3.2.4/src'
make: *** [all] Error 2

#2.授权
[root@localhost src]# chmod 777 mkreleasehdr.sh
复制代码

 (3)执行make出现如下错误,则要配置变量

复制代码
#1.错误信息
make[1]: Entering directory `/usr/redis/redis-3.2.8/src'
    CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/redis/redis-3.2.8/src'
make: *** [all] Error 2

#2.添加变量
[root@localhost src]# make MALLOC=libc
复制代码

(4)执行 make MALLOC=libc 命令报错 或 还有其他错误,建议删除redis所有文件重新装,或者按照下面的方式安装.

<think>嗯,用户需要解决在使用Docker安装Redis时挂载最新目录的问题。用户特别强调了“最新配置”和“示例”,说明ta可能正在部署最新版本的Redis,并且重视数据持久化和配置灵活性。从用户历史看,ta应该是个开发者或者运维人员,正在搭建Redis服务。用户引用了几篇教程,但似乎对具体操作尤其是挂载目录部分有疑问。ta提到“最新目录”,可能担心旧教程的参数不适用新版本,这点需要特别注意。值得关注的是,用户引用的四个来源其实都涉及目录挂载,但细节有差异:-引用3和4都给出了具体命令,不过引用4明确标注了redis:7.4版本,更符合“最新”需求-引用3的持久化目录是/data,而引用4还多了配置文件目录-用户似乎混淆了“挂载目录”和“配置文件路径”两个概念核心解决方案应该包含三点:第一是确认最新镜像版本,直接用redis:latest标签最安全;第二是区分数据卷(持久化)和配置卷(自定义配置)的挂载方式;第三要强调Linux系统的权限问题,这是新手常。在示例命令设计上,准备采用引用4的格式,但要强化:用--privileged解决权限问题、--restart实现自启动、appendonly启用持久化。路径示例保持Linux风格,因为Docker在Windows的路径转换容易出错。考虑到用户可能需要验证,额外补充了连接测试和自定义配置的扩展说明。如果用户实际环境是Windows或Mac,可能需要额外指导docker.sock的挂载问题,但当前回复暂不扩展,避免信息过载。</think> 以下是基于最新Redis镜像(目前官方最新稳定版为**Redis 7.2**)的Docker安装挂载目录配置详解,整合了数据卷挂载、配置文件自定义及权限设置的最佳实践: --- ### **Docker安装Redis挂载目录完整步骤** **1. 拉取最新Redis镜像** ```bash docker pull redis:latest # 默认拉取最新稳定版(当前为7.2) ``` **2. 创建本地挂载目录** ```bash mkdir -p /opt/docker/redis/{conf,data} # 创建配置与数据目录 ``` **3. 自定义Redis配置文件** - 下载官方最新配置文件模板: ```bash wget -O /opt/docker/redis/conf/redis.conf https://raw.githubusercontent.com/redis/redis/7.2/redis.conf ``` - **关键配置项修改**(按需启用): ```conf bind 0.0.0.0 # 允许外部访问 appendonly yes # 启用AOF持久化 requirepass yourpassword # 设置访问密码(可选) ``` **4. 启动容器(支持挂载和权限)** ```bash docker run -d \ --name redis-server \ --restart=always \ --privileged=true \ # 解决挂载文件权限问题 -p 6379:6379 \ -v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf \ # 挂载配置文件 -v /opt/docker/redis/data:/data \ # 挂载持久化数据目录 redis:latest \ redis-server /etc/redis/redis.conf \ # 指定配置文件启动 --appendonly yes # 覆盖配置,强制开启持久化 ``` **5. 验证服务状态** ```bash docker logs redis-server # 查看启动日志 docker exec -it redis-server redis-cli PING # 连接容器执行命令 ``` ✅ 返回 `PONG` 即表示运行成功。 --- ### **关键配置说明** | **参数** | **作用** | |------------------------|--------------------------------------------------------------------------| | `-v /opt/.../conf:/etc/redis` | **挂载配置文件目录**,可实时修改配置(需重启容器生效)[^3][^4] | | `-v /opt/.../data:/data` | **持久化数据目录**,AOF/RDB文件将保存在此,避免容器删除后数据丢失[^3][^4] | | `--privileged=true` | 授予容器管理员权限,解决挂载目录的写入权限问题[^3][^4] | | `--restart=always` | 容器异常退出时自动重启,保障服务高可用 | | `redis-server ...` | 指定配置文件路径启动,支持自定义端口、密码等高级配置 | --- ### **常见问题处理** 1. **权限拒绝错误** ```bash chmod -R 777 /opt/docker/redis # 临时方案(生产环境建议用ACL) ``` 2. **配置修改后生效** ```bash docker restart redis-server # 重启容器加载新配置 ``` 3. **查看数据持久化文件** ```bash ls /opt/docker/redis/data # 检查appendonly.aof或dump.rdb是否存在 ``` --- **相关问题** 1. Docker中Redis配置`bind 0.0.0.0`有什么安全风险?如何加固? 2. Redis的AOF和RDB持久化机制有何区别?在生产环境中如何选择? 3. 如何通过Docker Compose一键部署带挂载目录的Redis集群? > 引用来源: > [^1]: Docker挂载Redis配置文件与数据目录的实践方法 > [^2]: Docker容器化部署Redis的流程与优势 > [^3]: 配置文件挂载与权限配置命令示例 > [^4]: 最新版Redis镜像的挂载目录最佳实践配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值