Jdk17和Redis6.2.14 安装全过程+部署连接完整版(CentOS 7 虚拟机)
- 安装jdk
- 安装redis
- redis重装和报错处理
- 终于成功!!!
- 附录:手动准备离线 rpm 包(能联网时一次性下好)
- 设置开机自启
- ✅ 方法 A:systemd(CentOS 7 推荐)
- ✅ 方法 B:传统 rc.local(备用)
- 🧪 验证自启是否生效
- 总览,部署连接过程!!!
- 📦 第 0 步:准备离线资源
- 🛠️ 第 1 步:安装编译环境
- 📁 第 2 步:上传并解压 Redis
- 🏗️ 第 3 步:编译(禁用 jemalloc,解决头文件冲突)
- 📦 第 4 步:安装二进制到指定目录
- 🚀 第 5 步:配置后台运行 & 外部访问
- 🔥 第 6 步:防火墙放行 6379
- 🔄 第 7 步:开机自启(systemd)
- 🌐 第 8 步:虚拟机网络 & Tiny RDM 连接
- 📋 一键排错表
安装jdk
如何下载 JDK(跳过 yum,直接手动下载)
-
在 你本地电脑 打开浏览器,到 Oracle 官网下载对应版本:
示例链接(Oracle JDK 17):
https://www.oracle.com/java/technologies/downloads/#java17
选择 Linux x64 的.tar.gz包(文件名类似jdk-17_linux-x64_bin.tar.gz)。 -
把下载好的文件用
scp或云控制台上传到你的云服务器,例如:scp jdk-17_linux-x64_bin.tar.gz root@<服务器IP>:/opt/ -
在服务器上解压并配置:
cd /opt tar -zxvf jdk-17_linux-x64_bin.tar.gz mv jdk-17.0.x /opt/jdk17 echo 'export JAVA_HOME=/opt/jdk17' >> /etc/profile echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile java -version # 验证
查看当前系统jdk
先查看当前系统的jdk
// 查看当前系统的jdk
rpm -qa|grep jdk
(3)卸载openjdk,卸载相关的openjdk,.noarch后缀的不要删除
// 卸载openjdk,卸载相关的openjdk
rpm -e --nodeps *jdk*
// 切换到root用户
su
注意:在password后面直接输入,你登录虚拟机时候的密码,这里是什么都不显示的,但是密码是真实存在的,你输入完正确的密码,在回车就可以切换到root用户了
现在继续使用上面那个删除jdk的命令就可以删除了,然后使用查询命令后发现,就剩了一个jdk了
(4)卸载完Linux自带的openjdk后,就可以安装我们需要的jdk了
确定目标文件夹和安装位置开始安装
下面把刚才那段脚本逐行“翻译”成大白话,保证你能看懂每一步在干嘛。你只要照着做就行,不需要提前学会 Linux。
① 创建目标文件夹
sudo mkdir -p /usr/local/jdk17
- sudo:以管理员身份运行,防止“权限不够”。
- mkdir -p:创建文件夹。
-p表示如果上级目录不存在就一起建好。 - /usr/local/jdk17:最终 JDK 的“家”,我们统一放这里,路径短、好记。
② 解压压缩包
sudo tar -zxf /root/jdk-17.0.15_linux-x64_bin.tar.gz -C /usr/local/jdk17 --strip-components=1
- tar:Linux 里的“解压缩/打包”工具。
- -zxf:
-z先解压 gzip;-x再解开 tar;-f后面跟文件名。
- /root/jdk-17.0.15_linux-x64_bin.tar.gz:你的压缩包全路径。
- -C /usr/local/jdk17:把解压后的东西直接放进刚才建好的文件夹。
- --strip-components=1:去掉最外层多余目录,让 /usr/local/jdk17 下面直接就是 bin、lib 等子目录,省得再进一层。
③ 告诉系统“JDK 在这”
echo 'export JAVA_HOME=/usr/local/jdk17' | sudo tee /etc/profile.d/jdk17.sh
echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/jdk17.sh
- echo:把后面的文字原样输出。
- export JAVA_HOME=...:声明一个变量,告诉所有程序“JDK 的根目录是 /usr/local/jdk17”。
- export PATH=...:把 JDK 的 bin 目录加到系统“命令搜索路径”最前面,这样你在任何目录都能直接敲
java、javac。 - | sudo tee ...:把 echo 的内容写进文件
/etc/profile.d/jdk17.sh,用sudo保证有权限。 - -a:第二次用 tee 时加
-a,表示“追加”而不是覆盖。
④ 让配置立即生效
source /etc/profile.d/jdk17.sh
- source:把刚写好的环境变量文件重新读一遍,不用重启服务器就能用。
⑤ 检查是否成功
java -version
-
java -version:让 java 自己报版本号。如果显示
java version "17.0.15" ...就证明一切 OK,可以开始写代码了!
就这么简单,一行一行复制执行即可。
实时显示
[root@localhost ~]# rpm -qa|grep jdk
[root@localhost ~]# rpm -e --nodeps *jdk*
错误:未安装软件包 jdk-17.0.15_linux-x64_bin.tar.gz
[root@localhost ~]# sudo tar -zxf /root/jdk-17.0.15_linux-x64_bin.tar.gz -C /usr/local/jdk17 --strip-components=1
[root@localhost ~]# echo 'export JAVA_HOME=/usr/local/jdk17' | sudo tee /etc/profile.d/jdk17.sh
export JAVA_HOME=/usr/local/jdk17
[root@localhost ~]# echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/jdk17.sh
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile.d/jdk17.sh
[root@localhost ~]# java -version
java version "17.0.15" 2025-04-15 LTS
Java(TM) SE Runtime Environment (build 17.0.15+9-LTS-241)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.15+9-LTS-241, mixed mode, sharing)
[root@localhost ~]#
安装redis
解压和下载官网的redis6文件
(redis5及之前适用windows系统,redis6及之后一般才是linux系统的适用,本次下载的是redis6)
解压官网文件后怎么处理?
这里的版本并不完全,因为缺少bin目录,安装目录文件:/usr/local/redis6.2.14
Q:/usr/local/redis6.2.14现在我的路径在这里,里面的内容和目录是这样的,请你查看是否正确?

A:从你贴出来的目录截图来看,目前 /usr/local/redis6.2.14 里并不是“安装好”的 Redis,而只是把官方源码包整个解压了(或者说你执行 make 后没有 make install 到指定路径)。判断依据如下:
-
缺 bin 目录
真正安装好的 Redis 会在/usr/local/redis6.2.14/bin里出现redis-server redis-cli redis-benchmark redis-check-aof redis-check-rdb redis-sentinel这些可执行文件,但现在目录里只有源码级文件(src、tests、Makefile 等)。
-
能看到源码级文件
例如src、deps、Makefile、redis.conf、sentinel.conf都是源码包自带,说明还在“构建前”或“构建后未安装”的状态。
下一步怎么做(2 选 1)
方案 A:继续把源码编译并安装到 当前目录
cd /usr/local/redis6.2.14
make # 编译
make PREFIX=/usr/local/redis6.2.14 install
执行完后,你会看到 /usr/local/redis6.2.14/bin 目录出现上述 6 个可执行文件,就说明安装完成。
方案 B:保持源码不动,重新安装到干净目录
如果你想保持源码目录干净,可以:
cd /usr/local/redis6.2.14
make
sudo make PREFIX=/usr/local/redis install # 装到 /usr/local/redis
然后 /usr/local/redis/bin 就是正式的可执行文件目录。
验证
无论选哪种,装完后执行:
/usr/local/redis6.2.14/bin/redis-server -v
输出 Redis server v=6.2.14 就说明真正 OK 了。
报错:系统里没有 C 编译器,而且脚本缺执行权限。
一句话:系统里没有 C 编译器,而且脚本缺执行权限。
把这两件事修好就能继续。
- 安装编译器(一次性)
sudo yum groupinstall -y "Development Tools"
# 或者最精简:
sudo yum install -y gcc make
- 给脚本加执行权限
cd /usr/local/redis6.2.14
chmod +x deps/hiredis/mkreleasehdr.sh
chmod +x src/mkreleasehdr.sh
- 重新编译并安装
make distclean # 把刚才失败的残留清掉
make # 编译
make PREFIX=/usr/local/redis6.2.14 install # 安装
安装完会看到 /usr/local/redis6.2.14/bin/redis-server 等 6 个文件,就 OK 了。
因为连接不上CentOS系统的官方镜像,需要更换系统镜像
网络连不到 CentOS 官方镜像列表,所以 yum install gcc make 失败。
CentOS 7 的官方列表已于 2024-06-30 下线,你现在的机器 DNS 也解析不到 mirrorlist.centos.org,因此任何安装都会报同样的错。
下面给你两条路,任选其一即可解决:
一、直接用 国内镜像 把 yum 源救活(一次性)
# 1. 备份旧仓库文件
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 2. 换成阿里云镜像
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清理缓存并重新生成
sudo yum clean all && sudo yum makecache
# 4. 现在就能装 gcc 了
sudo yum install -y gcc make
二、离线安装(网络实在不通时)
-
在你本地能上网的电脑下载 rpm 包:
gcc-4.8.5-44.el7.x86_64.rpm gcc-c++-4.8.5-44.el7.x86_64.rpm make-3.82-24.el7.x86_64.rpm glibc-devel-2.17-325.el7_9.x86_64.rpm下载地址示例(阿里云):
https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/ -
把四个 rpm 传进虚拟机,然后一次性装:
sudo rpm -ivh *.rpm
选国内镜像基本 30 秒就能装好 gcc,再回头 make && make install 你的 Redis 即可。
装完后再回到 Redis 目录继续编译:
cd /usr/local/redis6.2.14
make distclean # 清掉刚才失败的中间文件
make
sudo make PREFIX=/usr/local/redis6.2.14 install
只要 gcc 安装成功,就不会再出现 “cc: 未找到命令” 的错误了。
报错:致命错误,现在需要重新安装
make hiredis linenoise lua jemalloc 这一步还是一样,大量报错,,这个语句致命错误,需要重新修改和安装;
redis重装和报错处理
修复网络问题
- 国内网络完全正常(阿里 DNS + 阿里网站都不丢包)。
- 国外 IP(8.8.8.8)被防火墙/出口策略阻断,不影响我们使用 阿里云镜像。
- 只是系统里没有
host命令,没关系,用ping已经能说明 DNS 解析可用。
🛠️ 立即执行:把 yum 源全部换成阿里云(国内可达)
# 1. 备份旧 repo
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
# 2. 写入阿里云 CentOS 7 完整源 + SCL 源
cat > /etc/yum.repos.d/aliyun.repo <<'EOF'
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/
gpgcheck=0
enabled=1
[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/updates/$basearch/
gpgcheck=0
enabled=1
[extras]
name=CentOS-7 - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/
gpgcheck=0
enabled=1
[sclo-rh]
name=CentOS-7 - SCLo-rh - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/$basearch/rh/
gpgcheck=0
enabled=1
EOF
# 3. 重建缓存
yum clean all && yum makecache
✅ 验证
yum repolist # 应列出 4 个 repo,无报错
yum install devtoolset-9 gcc-c++ -y
报错: Redis 6.2.14 自带的 jemalloc 源码
jemalloc 与旧版 glibc / linux 头文件不兼容,导致类型 malloc_mutex_t、prof_* 等无法识别。
✅ 最简解决思路(两步即可)
① 彻底禁用 jemalloc,改用系统自带 libc 的 malloc
cd /usr/local/redis6.2.14
make distclean
make MALLOC=libc -j$(nproc)
MALLOC=libc会跳过 jemalloc 整个目录。- 性能略低,但 100 % 编译成功,且 不影响 Redis 功能。
② 验证
make PREFIX=/usr/local/redis6.2.14 install
ls /usr/local/redis6.2.14/bin
应看到:
redis-server redis-cli redis-benchmark redis-check-aof redis-check-rdb
🔍 如果仍需 jemalloc(可选进阶)
- 升级 glibc-devel 到 2.17-323 以上(需 CentOS 7.9 或手动 rpm)。
- 或下载新版独立 jemalloc 5.x 自己编译,再
make JEMALLOC=...,但离线环境麻烦。
✅ 结论
直接 make MALLOC=libc 即可在当前环境一次通过,无需再折腾依赖。
终于成功!!!
[root@localhost redis6.2.14]# make PREFIX=/usr/local/redis6.2.14 install
cd src && make install
make[1]: 进入目录“/usr/local/redis6.2.14/src”
CC Makefile.dep
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
make[1]: 离开目录“/usr/local/redis6.2.14/src”
[root@localhost redis6.2.14]# ls /usr/local/redis6.2.14/bin
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
附录:手动准备离线 rpm 包(能联网时一次性下好)
| 作用 | 包名(CentOS 7) | 阿里云直链 |
|---|---|---|
| 编译器 | gcc-4.8.5-44.el7.x86_64.rpm |
下载 |
| C++ 支持 | gcc-c++-4.8.5-44.el7.x86_64.rpm |
下载 |
| make 工具 | make-3.82-24.el7.x86_64.rpm |
下载 |
| 头文件 | glibc-devel-2.17-325.el7_9.x86_64.rpm |
下载 |
把这 4 个 rpm 放到
/tmp/rpm/目录,后续虚拟机里离线安装。
设置开机自启
目前你只是把 Redis 可执行文件装到了
/usr/local/redis6.2.14/bin
并没有做“开机自启”这一步。
下面给出 CentOS 7 最通用 的两种做法,你二选一即可。
✅ 方法 A:systemd(CentOS 7 推荐)
-
创建服务文件
sudo tee /etc/systemd/system/redis.service > /dev/null <<'EOF' [Unit] Description=Redis Server After=network.target [Service] Type=forking ExecStart=/usr/local/redis6.2.14/bin/redis-server /usr/local/redis6.2.14/redis.conf ExecStop=/usr/local/redis6.2.14/bin/redis-cli shutdown Restart=always User=root Group=root [Install] WantedBy=multi-user.target EOF -
让 systemd 重新加载并设为开机自启
sudo systemctl daemon-reload sudo systemctl enable redis sudo systemctl start redis # 立即启动一次 sudo systemctl status redis # 查看运行状态
✅ 方法 B:传统 rc.local(备用)
若你机器没有 systemd,可:
-
编辑
/etc/rc.d/rc.localsudo tee -a /etc/rc.d/rc.local <<'EOF' # 启动 Redis /usr/local/redis6.2.14/bin/redis-server /usr/local/redis6.2.14/redis.conf & EOF -
赋执行权限
sudo chmod +x /etc/rc.d/rc.local
🧪 验证自启是否生效
-
重启后
ps -ef | grep redis-server看到进程即成功。
-
或者
systemctl is-enabled redis # 返回 enabled
⚠️ 最后提醒
-
如想让 Redis 后台运行,先把
redis.conf里的daemonize yes打开,再执行上述步骤即可。
总览,部署连接过程!!!
目标:在一台 完全离线 的 CentOS 7 虚拟机上
- 安装 Redis 6.2.14
- 配置 开机自启
- 打通 宿主机 ↔ 虚拟机 网络,让 Tiny RDM 成功连接
📦 第 0 步:准备离线资源
| 资源 | 用途 | 获取方式 |
|---|---|---|
| redis-6.2.14.tar.gz | 源码 | 官网 |
| gcc-4.8.5-44.el7.x86_64.rpm | 编译器 | 阿里云镜像 |
| gcc-c++-4.8.5-44.el7.x86_64.rpm | C++ 支持 | 同上 |
| make-3.82-24.el7.x86_64.rpm | 构建工具 | 同上 |
| glibc-devel-2.17-325.el7_9.x86_64.rpm | 头文件 | 同上 |
把 4 个 rpm 放到
/tmp/rpm/目录,后续虚拟机里直接装。
🛠️ 第 1 步:安装编译环境
原理:CentOS 最小化系统不带 gcc/make,必须先装才能编译。
cd /tmp/rpm
rpm -Uvh *.rpm
gcc --version # 验证 4.8.x
make --version # 验证 3.82
📁 第 2 步:上传并解压 Redis
原理:源码包需解压到固定目录,方便统一路径。
tar zxvf redis-6.2.14.tar.gz
mv redis-6.2.14 /usr/local/redis6.2.14
cd /usr/local/redis6.2.14
🏗️ 第 3 步:编译(禁用 jemalloc,解决头文件冲突)
原理:CentOS 7 自带 glibc 与 Redis 内置 jemalloc 不兼容,使用系统 malloc 可一次编译成功。
make distclean
make MALLOC=libc -j$(nproc)
| 常见报错 | 解决 |
|---|---|
cc: command not found |
回到第 1 步装 rpm |
| jemalloc 系列头文件错误 | 继续加 MALLOC=libc |
📦 第 4 步:安装二进制到指定目录
原理:make install 会把可执行文件、脚本、工具集中放到 $PREFIX/bin。
make PREFIX=/usr/local/redis6.2.14 install
ls /usr/local/redis6.2.14/bin
# 应出现 6 个文件:
# redis-server redis-cli redis-benchmark redis-check-aof redis-check-rdb redis-sentinel
🚀 第 5 步:配置后台运行 & 外部访问
原理:默认 redis.conf 前台运行、只监听 127.0.0.1,需要改三处。
vi /usr/local/redis6.2.14/redis.conf
| 配置项 | 原值 | 改后 | 说明 |
|---|---|---|---|
daemonize |
no | yes | 后台运行 |
bind |
127.0.0.1 | 0.0.0.0 | 监听所有网卡 |
protected-mode |
yes | no | 允许外部 IP 直连 |
🔥 第 6 步:防火墙放行 6379
原理:CentOS 7 默认 firewalld 禁止入站 6379。
sudo firewall-cmd --permanent --add-port=6379/tcp
sudo firewall-cmd --reload
🔄 第 7 步:开机自启(systemd)
原理:systemd 管理进程,崩溃自动拉起。
sudo tee /etc/systemd/system/redis.service > /dev/null <<'EOF'
[Unit]
Description=Redis Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis6.2.14/bin/redis-server /usr/local/redis6.2.14/redis.conf
ExecStop=/usr/local/redis6.2.14/bin/redis-cli shutdown
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now redis
🌐 第 8 步:虚拟机网络 & Tiny RDM 连接
| 虚拟机网络模式 | Tiny RDM 地址 | 端口 | 备注 |
|---|---|---|---|
| NAT | 127.0.0.1 |
6379 | 需做端口转发 |
| 桥接 | 192.168.80.128(虚拟机实际 IP) |
6379 | 直接可连 |
验证(宿主机)
telnet 192.168.80.128 6379 # 或 127.0.0.1
# 返回 +OK
Tiny RDM 填写
- TCP 地址:
192.168.80.128 - 端口:6379
- 密码:留空(或
requirepass的值) - 点击 测试连接 → 出现 PONG ✅
📋 一键排错表
| 症状 | 解决 |
|---|---|
bind: Address already in use |
pkill redis-server 或改端口 |
Connection refused |
检查 IP、防火墙、网络模式 |
Could not connect |
确认 bind 0.0.0.0 和防火墙 |
至此,离线安装 + 开机自启 + 外部连接 全流程完成!

浙公网安备 33010602011771号