Jdk17和Redis6.2.14 安装全过程+部署连接完整版(CentOS 7 虚拟机)

目录

安装jdk

如何下载 JDK(跳过 yum,直接手动下载)

  1. 你本地电脑 打开浏览器,到 Oracle 官网下载对应版本:
    示例链接(Oracle JDK 17):
    https://www.oracle.com/java/technologies/downloads/#java17
    选择 Linux x64.tar.gz 包(文件名类似 jdk-17_linux-x64_bin.tar.gz)。

  2. 把下载好的文件用 scp 或云控制台上传到你的云服务器,例如:

    scp jdk-17_linux-x64_bin.tar.gz root@<服务器IP>:/opt/
    
  3. 在服务器上解压并配置:

    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 目录加到系统“命令搜索路径”最前面,这样你在任何目录都能直接敲 javajavac
  • | 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现在我的路径在这里,里面的内容和目录是这样的,请你查看是否正确?

![](E:\Pictures\Screenshots\屏幕截图 2025-08-12 092146.png)

A:从你贴出来的目录截图来看,目前 /usr/local/redis6.2.14 里并不是“安装好”的 Redis,而只是把官方源码包整个解压了(或者说你执行 make 后没有 make install 到指定路径)。判断依据如下:

  1. 缺 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 等)。

  2. 能看到源码级文件
    例如 srcdepsMakefileredis.confsentinel.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 编译器,而且脚本缺执行权限。
把这两件事修好就能继续。


  1. 安装编译器(一次性)
sudo yum groupinstall -y "Development Tools"
# 或者最精简:
sudo yum install -y gcc make
  1. 给脚本加执行权限
cd /usr/local/redis6.2.14
chmod +x deps/hiredis/mkreleasehdr.sh
chmod +x src/mkreleasehdr.sh
  1. 重新编译并安装
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

二、离线安装(网络实在不通时)

  1. 在你本地能上网的电脑下载 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/

  2. 把四个 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_tprof_* 等无法识别。


✅ 最简解决思路(两步即可)

彻底禁用 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 推荐)

  1. 创建服务文件

    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
    
  2. 让 systemd 重新加载并设为开机自启

    sudo systemctl daemon-reload
    sudo systemctl enable redis
    sudo systemctl start  redis        # 立即启动一次
    sudo systemctl status redis        # 查看运行状态
    

✅ 方法 B:传统 rc.local(备用)

若你机器没有 systemd,可:

  1. 编辑 /etc/rc.d/rc.local

    sudo 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
    
  2. 赋执行权限

    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 虚拟机上

  1. 安装 Redis 6.2.14
  2. 配置 开机自启
  3. 打通 宿主机 ↔ 虚拟机 网络,让 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 和防火墙

至此,离线安装 + 开机自启 + 外部连接 全流程完成!

posted @ 2025-08-12 14:13  柒寒(平安)  阅读(72)  评论(0)    收藏  举报