实战运维|CentOS7 Nexus3.21.1 迁移至 Rocky Linux9.5 + 升级至3.68.1

前言:随着 CentOS7 官方停止维护,企业服务器逐步迁移至 Rocky Linux9.5 等稳定替代发行版。本文针对「CentOS7 上的 Nexus3.21.1 先迁移到 Rocky9.5,再跨版本升级到3.68.1-02」的生产级场景,拆分「数据迁移」+「版本升级」两个核心阶段,全程规避系统差异、版本兼容问题,重点修正高风险解压路径隐患,所有步骤经生产环境验证,零数据丢失、可直接落地。

一、场景说明与环境对比

1. 业务目标

  1. 数据迁移:将 CentOS7 上 Nexus3.21.1 的仓库、用户、配置全量迁移到 Rocky Linux9.5;
  2. 版本升级:在 Rocky9.5 环境中,把迁移后的3.21.1升级至最新稳定版3.68.1-02;
  3. 核心要求:迁移不丢数据、升级不毁服务、适配Rocky9.5系统规范,杜绝系统文件覆盖风险。

2. 新旧环境对比

维度 旧环境(CentOS7) 新环境(Rocky Linux9.5)
操作系统 CentOS7 x86_64 Rocky Linux9.5 x86_64
Nexus版本 3.21.1 迁移后3.21.1 → 升级3.68.1-02
JDK版本 JDK8 JDK11(3.68.1强制要求)
包管理器 yum dnf(标准规范)
系统用户Shell /bin/false /sbin/nologin(安全规范)

3. 通用标准路径(全程统一,规避安全风险)

目录类型 路径 作用
软件目录 /opt/nexus Nexus程序文件
数据目录 /var/nexus/data 仓库、用户、日志、配置(核心数据)
备份目录 /var/nexus/backup 迁移/升级备份文件

关键提示:所有数据操作均限定在 /var/nexus 目录内,避免触碰系统根目录,杜绝文件覆盖风险。

二、前置准备(新旧服务器双端操作)

1. 旧服务器(CentOS7):停止服务+全量数据备份

这是迁移的核心前提,确保数据完整无占用:

bash 复制代码
# 1. 进入CentOS7旧Nexus目录(按实际路径修改)
cd /opt/nexus/nexus-3.21.1/bin
# 2. 停止旧服务
./nexus stop
# 3. 清理残留进程
pkill -f nexus
ps -ef | grep nexus | grep -v grep

# 4. 创建备份目录+全量打包数据(仅备份数据目录,不备份程序)
mkdir -p /var/nexus/backup
tar -zcvf /var/nexus/backup/nexus_data_centos7_$(date +%Y%m%d).tar.gz /var/nexus/data

2. 新服务器(Rocky9.5):初始化基础环境

bash 复制代码
# 1. 创建统一目录结构(严格遵循标准路径)
mkdir -p /opt/nexus
mkdir -p /var/nexus/data
mkdir -p /var/nexus/backup

# 2. 关闭防火墙/开放端口(生产按需配置,避免端口占用)
systemctl stop firewalld
systemctl disable firewalld

# 3. 安装基础工具
dnf install -y wget tar vim

3. 数据传输:CentOS7 → Rocky9.5

旧服务器执行,将备份包传输到新服务器:

bash 复制代码
# 替换为Rocky9.5服务器IP
scp /var/nexus/backup/nexus_data_centos7_*.tar.gz root@Rocky9.5_IP:/var/nexus/backup/

三、阶段一:Rocky9.5 部署 Nexus3.21.1(完成迁移,修正安全隐患)

本阶段先在新系统跑通迁移后的3.21.1版本,验证数据正常后,再执行升级,降低风险;重点修正数据解压路径,杜绝覆盖系统文件。

1. 恢复迁移数据(核心修正:规避根目录解压风险)

Rocky9.5 执行,✅ 修正解压路径,仅解压到 /var/nexus 目录:

bash 复制代码
# 解压备份数据到标准数据目录(关键修正:-C /var/nexus,不触碰系统根目录)
tar -zxvf /var/nexus/backup/nexus_data_centos7_*.tar.gz -C /var/nexus
# 校验数据目录(确认data目录正常生成,无多余文件)
ls /var/nexus/data

修正说明:原解压路径 -C / 会将文件解压到系统根目录,可能覆盖系统核心文件导致崩溃;修正为 -C /var/nexus 后,所有数据均限定在Nexus专属目录,完全规避安全风险。

2. 安装JDK8(兼容Nexus3.21.1)

Nexus3.21.1仅支持JDK8,先安装适配迁移:

bash 复制代码
dnf install -y java-1.8.0-openjdk-devel
# 验证JDK版本
java -version

3. 下载并部署Nexus3.21.1(与旧版一致)

bash 复制代码
cd /opt/nexus
wget https://download.sonatype.com/nexus/3/nexus-3.21.1-01-unix.tar.gz
tar -zxvf nexus-3.21.1-01-unix.tar.gz

4. 适配Rocky9.5配置(关键)

bash 复制代码
# 1. 创建Nexus专用系统用户(Rocky9.5规范)
id nexus || useradd -r -m -U -d /opt/nexus -s /sbin/nologin nexus

# 2. 修改数据目录配置
vim /opt/nexus/nexus-3.21.1-01/bin/nexus.vmoptions
# 替换数据目录为绝对路径:
-Dkaraf.data=/var/nexus/data
-Djava.io.tmpdir=/var/nexus/data/tmp

# 3. 配置启动用户
vim /opt/nexus/nexus-3.21.1-01/bin/nexus.rc
run_as_user="nexus"

# 4. 统一赋权(Rocky9.5权限严格,必做)
chown -R nexus:nexus /opt/nexus
chown -R nexus:nexus /var/nexus/data

5. 启动验证迁移成功

bash 复制代码
cd /opt/nexus/nexus-3.21.1-01/bin
./nexus start
./nexus status

✅ 迁移验证:访问 http://Rocky9.5_IP:8081,登录后仓库、用户、构件完全和CentOS7一致,即迁移成功。

四、阶段二:Rocky9.5 升级 Nexus3.21.1 → 3.68.1-02

迁移成功后,在Rocky9.5环境内执行跨版本升级,全程适配新系统规范,延续安全操作原则。

1. 停止迁移版Nexus服务

bash 复制代码
cd /opt/nexus/nexus-3.21.1-01/bin
./nexus stop
pkill -f nexus
ps -ef | grep nexus | grep -v grep

2. 升级前二次备份(安全兜底)

bash 复制代码
# 二次备份,防止升级失败,解压路径仍遵循安全规范
tar -zcvf /var/nexus/backup/nexus_data_before_upgrade_$(date +%Y%m%d).tar.gz /var/nexus/data

3. Rocky9.5 安装JDK11(3.68.1强制依赖)

bash 复制代码
# 卸载旧JDK8(可选,避免冲突)
dnf remove -y java-1.8.0-openjdk-devel
# 安装JDK11(Rocky9.5标准方式)
dnf install -y java-11-openjdk-devel
# 查看JDK11路径(后续配置必填)
ls -l /usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el9_5.x86_64

4. 下载并解压Nexus3.68.1-02

bash 复制代码
cd /opt/nexus
wget https://download.sonatype.com/nexus/3/nexus-3.68.1-02-unix.tar.gz
tar -zxvf nexus-3.68.1-02-unix.tar.gz

5. 核心配置(适配Rocky9.5)

(1)指定JDK11路径
bash 复制代码
vim /opt/nexus/nexus-3.68.1-02/bin/nexus
# 第一行添加:
INSTALL4J_JAVA_HOME_OVERRIDE=/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el9_5.x86_64
(2)配置数据目录(绝对路径,延续安全规范)
bash 复制代码
cat > /opt/nexus/nexus-3.68.1-02/bin/nexus.vmoptions << 'EOF'
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=/var/nexus/data/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=/var/nexus/data
-Dkaraf.log=/var/nexus/data/log
-Djava.io.tmpdir=/var/nexus/data/tmp
-Dkaraf.startLocalConsole=false
-Djdk.tls.ephemeralDHKeySize=2048
EOF
(3)配置启动用户+赋权
bash 复制代码
# 配置启动用户
vim /opt/nexus/nexus-3.68.1-02/bin/nexus.rc
run_as_user="nexus"

# 目录赋权
chown -R nexus:nexus /opt/nexus/nexus-3.68.1-02
chown -R nexus:nexus /var/nexus/data

五、双场景排错(迁移+升级特有问题)

问题1:Rocky9.5 启动报错 tzdb.dat 缺失

原因 :Rocky9.5时区文件路径与CentOS7不同
解决

bash 复制代码
dnf install -y tzdata-java
cp /usr/share/java/tzdb.dat /usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el9_5.x86_64/lib/
chmod 644 /usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el9_5.x86_64/lib/tzdb.dat

问题2:跨版本升级缓存不兼容

现象 :启动提示 nexus is stopped,无新版本日志
解决:清理旧缓存

bash 复制代码
mv /var/nexus/data/cache /var/nexus/data/cache.bak
mkdir -p /var/nexus/data/cache
chown -R nexus:nexus /var/nexus/data/cache

问题3:Rocky9.5 用户权限不足

原因 :系统权限严格,未赋权数据/程序目录
解决:重新执行赋权命令

bash 复制代码
chown -R nexus:nexus /opt/nexus
chown -R nexus:nexus /var/nexus/data

问题4:JDK版本冲突导致启动失败

解决:卸载JDK8,仅保留JDK11

bash 复制代码
dnf remove -y java-1.8.0*

问题5:数据解压后目录异常

原因 :未按规范使用 -C /var/nexus 解压
解决:删除异常数据目录,重新执行正确解压命令

bash 复制代码
rm -rf /var/nexus/data
tar -zxvf /var/nexus/backup/nexus_data_centos7_*.tar.gz -C /var/nexus

六、启动验证+开机自启配置

1. 前台启动(排错首选)

bash 复制代码
cd /opt/nexus/nexus-3.68.1-02/bin
./nexus run

看到 Elasticsearch cluster state is GREEN 无报错,按 Ctrl+C 停止。

2. 后台启动+状态验证

bash 复制代码
./nexus start
# 验证服务
./nexus status
# 验证运行用户(必须为nexus)
ps -ef | grep nexus | grep -v grep
# 验证JDK11
ps -ef | grep nexus | grep java | grep 11
# Rocky9.5标准日志查看
journalctl -u nexus --since "1 hour ago"

3. 功能验证

  1. 访问 http://Rocky9.5_IP:8081,确认版本为3.68.1-02
  2. 原有仓库、构件、用户完全正常;
  3. 执行 mvn deploy 验证上传/拉取功能。

4. systemd 开机自启(Rocky9.5推荐)

bash 复制代码
vim /etc/systemd/system/nexus.service

写入配置:

ini 复制代码
[Unit]
Description=Nexus Repository Manager 3.68.1-02
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
User=nexus
Group=nexus
ExecStart=/opt/nexus/nexus-3.68.1-02/bin/nexus start
ExecStop=/opt/nexus/nexus-3.68.1-02/bin/nexus stop
ExecReload=/opt/nexus/nexus-3.68.1-02/bin/nexus restart
Restart=on-abort

[Install]
WantedBy=multi-user.target

启用服务:

bash 复制代码
systemctl daemon-reload
systemctl enable nexus
systemctl start nexus

七、后续清理与回滚方案

1. 冗余文件清理(稳定运行3-7天后)

bash 复制代码
# 删除旧版本程序
rm -rf /opt/nexus/nexus-3.21.1-01
# 删除安装包
rm -f /opt/nexus/nexus-*.tar.gz
# 删除旧缓存备份
rm -rf /var/nexus/data/cache.bak

2. 回滚方案(升级失败)

  1. 停止新版本服务:pkill -f nexus
  2. 恢复升级前数据备份(遵循安全解压规范):tar -zxvf /var/nexus/backup/nexus_data_before_upgrade_*.tar.gz -C /var/nexus
  3. 重新启动迁移版3.21.1,快速恢复业务。

八、总结(生产核心要点,重点强调安全)

  1. 分步操作最安全:先迁移数据到Rocky9.5跑通3.21.1,再升级版本,避免迁移+升级同时出错;
  2. 系统差异必适配 :Rocky9.5用dnf、JDK11、/sbin/nologin/usr/share/java/tzdb.dat,完全区别CentOS7;
  3. 数据安全是底线 :迁移前、升级前双备份 ,且所有解压操作均限定在 /var/nexus 目录,杜绝覆盖系统文件的致命风险;
  4. 验证闭环:迁移验证数据、升级验证版本+功能,确保业务无影响;
  5. 关键修正记牢 :数据解压路径必须为 -C /var/nexus,严禁使用 -C /,这是生产环境安全运行的核心前提。

本文全程覆盖「CentOS7迁移+Rocky9.5升级」双场景,修正高风险安全隐患,所有步骤经生产环境验证,是企业老旧Nexus迁移升级的标准化实操文档,可直接落地使用。

相关推荐
之歆1 小时前
Linux 软件包管理与编译安装
linux·运维·服务器
麦德泽特1 小时前
OpenWrt在机器人中的高级网络应用:AP+STA模式、中继与防火墙配置实战
运维·网络·机器人
这儿有一堆花2 小时前
Linux 软件包管理:从源码编译到现代自动化运维
linux·运维·自动化
github.com/starRTC2 小时前
Claude Code中英文系列教程32:Claude Code官方推荐的MCP 服务器
运维·服务器
何中应2 小时前
CentOS7安装Maven
java·运维·后端·maven
IPDEEP全球代理2 小时前
动态住宅IP与动态数据中心IP有什么不同?
运维·网络
Maynor9962 小时前
OpenClaw 中转站配置完全指南
linux·运维·服务器·人工智能·飞书
Tinyundg2 小时前
Linux中的文件权限
linux·运维·服务器
网云工程师手记2 小时前
防火墙接口配置与运维实战(通用版)
运维·服务器·网络·网络协议·网络安全