当前位置: 首页 > news >正文

[特殊字符] 实战记录:在 Rocky Linux 9.6 上“强行”离线安装 MongoDB 4.4.12

🚀 实战记录:在 Rocky Linux 9.6 上“强行”离线安装 MongoDB 4.4.12

导读:由于应用架构限制,必须使用 MongoDB 4.4,但生产环境已升级至最新的 Rocky Linux 9.6。官方不再提供 RHEL 9 的 4.4 版本 RPM 包,怎么办?本文带你通过“借力 EL8 包 + 补全 OpenSSL 依赖”的方式,完美解决跨版本离线安装难题。

🛑 背景与痛点

近期在维护一套遗留系统时,遇到了一个典型的“版本错配”问题:

  • 操作系统:Rocky Linux 9.6 (基于 RHEL 9)
  • 数据库需求:MongoDB 4.4.12 (因代码兼容性无法升级至 5.0+)
  • 网络环境:纯内网,必须离线安装

核心矛盾:MongoDB 官方仓库中,4.4 系列最高只支持到 RHEL 8 (el8),而 Rocky 9 默认使用的是 OpenSSL 3.0,MongoDB 4.4 却强依赖 OpenSSL 1.1。直接安装el8的包会因缺少libssl.so.1.1而失败。

经过调研与测试,我们找到了一套成熟的**“曲线救国”**方案:强制安装 EL8 的 RPM 包,并手动注入兼容版的 OpenSSL 1.1 库


📦 第一步:准备离线安装包

在有网络的机器上,我们需要下载两类资源:

  1. MongoDB 4.4.12 (el8 版本)
  2. OpenSSL 1.1.1k (el8 版本)——这是成功的关键

1. 下载 MongoDB 4.4.12

访问 MongoDB 官方 RHEL 8 仓库下载以下 5 个文件:

BASE_URL="https://repo.mongodb.org/yum/redhat/8/mongodb-org/4.4/x86_64/RPMS/"VER="4.4.12"wget${BASE_URL}mongodb-org-server-${VER}-1.el8.x86_64.rpmwget${BASE_URL}mongodb-org-shell-${VER}-1.el8.x86_64.rpmwget${BASE_URL}mongodb-org-mongos-${VER}-1.el8.x86_64.rpmwget${BASE_URL}mongodb-org-tools-${VER}-1.el8.x86_64.rpmwget${BASE_URL}mongodb-org-${VER}-1.el8.x86_64.rpm

2. 下载 OpenSSL 1.1 兼容库

由于 CentOS 8 源已归档,我们从阿里云镜像或 Vault 下载最终稳定版 (1.1.1k-5或更高):

# 示例:从阿里云镜像下载ALIYUN_BASE="https://mirrors.aliyun.com/centos/8.5.2111/BaseOS/x86_64/os/Packages/"wget${ALIYUN_BASE}openssl-libs-1.1.1k-5.el8_5.x86_64.rpmwget${ALIYUN_BASE}openssl-1.1.1k-5.el8_5.x86_64.rpm

✅ 文件清单验证

打包前,请确认你的目录中有以下 7 个文件(与你实际下载的版本号可能微调,但必须包含这 7 个):

[root@k8s-node06 mongo44_bundle]# ls -lh-rw-r--r--.1root root10900Jan222022mongodb-org-4.4.12-1.el8.x86_64.rpm -rw-r--r--.1root root17680404Jan222022mongodb-org-mongos-4.4.12-1.el8.x86_64.rpm -rw-r--r--.1root root22874236Jan222022mongodb-org-server-4.4.12-1.el8.x86_64.rpm -rw-r--r--.1root root14572304Mar2415:13 mongodb-org-shell-4.4.12-1.el8.x86_64.rpm -rw-r--r--.1root root10784Mar2415:13 mongodb-org-tools-4.4.12-1.el8.x86_64.rpm -rw-r--r--.1root root725656Mar2415:24 openssl-1.1.1k-5.el8_5.x86_64.rpm -rw-r--r--.1root root1537572Mar2415:24 openssl-libs-1.1.1k-5.el8_5.x86_64.rpm

mongo44_bundle.tar.gz
将上述文件打包上传至 Rocky Linux 9.6 服务器即可。


🛠️ 第二步:离线安装实操

1. 优先安装 OpenSSL 1.1

注意顺序!必须先安装 OpenSSL,否则 MongoDB 启动时会报libssl.so.1.1: cannot open shared object file
由于是跨版本安装,需使用--nodeps --force忽略依赖检查。

# 安装 libsrpm-ivh--nodeps--forceopenssl-libs-1.1.1k-5.el8_5.x86_64.rpm# 安装主程序rpm-ivh--nodeps--forceopenssl-1.1.1k-5.el8_5.x86_64.rpm# 刷新动态链接库缓存(至关重要)ldconfig# 验证是否生效ldconfig-p|greplibssl.so.1.1# 若有输出,说明系统已识别到旧版库

2. 安装 MongoDB

使用dnf本地安装,它会自动处理 5 个 MongoDB RPM 包之间的依赖顺序。

dnfinstall-y./*.rpm

注:如果 dnf 报错依赖冲突,可退而求其次使用rpm -ivh --nodeps mongodb-org*.rpm强制安装。

3. 初始化权限

mkdir-p/var/lib/mongo /var/log/mongodbchown-Rmongod:mongod /var/lib/mongo /var/log/mongodb restorecon-Rv/var/lib/mongo /var/log/mongodb

⚙️ 第三步:配置远程访问 (Navicat 连接必备)

默认配置仅允许本地连接,若需使用 Navicat 等工具远程管理,需执行以下操作:

1. 修改绑定 IP

编辑/etc/mongod.conf

net:port:27017bindIp:0.0.0.0# 改为 0.0.0.0 允许所有 IP,或指定具体 IP

重启服务:

systemctl restart mongod

2. 创建管理员用户

启动服务后,先在本地登录创建用户:

mongo use admin db.createUser({user:"admin", pwd:"YourStrongPassword", roles:[{role:"root", db:"admin"}]})exit

然后再次编辑/etc/mongod.conf开启认证:

security:authorization:enabled

3. 重启并开放防火墙

# 重启服务systemctl restart mongod# 开放 27017 端口或关闭防火墙firewall-cmd--permanent--add-port=27017/tcp firewall-cmd--reload

🎉 验证与总结

此时,打开你电脑上的Navicat for MongoDB

  • Host:192.168.4.6(你的服务器 IP)
  • Port:27017
  • User/Password: 刚才创建的 admin 账号

点击“测试连接”,应该能顺利看到绿色的成功提示!✅

💡 核心经验总结

  1. 依赖隔离:Rocky 9 自带 OpenSSL 3.0,我们通过并行安装 EL8 的 OpenSSL 1.1 库,实现了“新旧共存”,互不干扰。
  2. 版本选择:尽量下载 CentOS 8 生命周期内的最终版本(如1.1.1k-5-19),稳定性更好。
  3. 适用场景:此方法适用于必须保留旧版数据库且无法升级应用代码的过渡期场景。

温馨提示:由于是非官方支持的跨版本安装,建议在进行系统大版本升级(dnf upgrade)时,注意保护已安装的openssl-1.1.1k包不被误删。

温馨提示

由于网络环境或文件存储等因素,若相关文件或图片链接暂时无法访问,您也可以通过访问张师傅的好来斯技术博客获取更多相关资源和最新信息。

本篇文章原始链接:

https://www.howlaisi.com/categories/mongo/shi-zhan-ji-lu-zai-rocky-linux-9.6-shang-qiang-xing-chi-xian-an-zhuang-mongodb-4.4.12

发布平台

  • HOWLAISI
  • CSDN
  • 微信公众号
http://www.cnnetsun.cn/news/1562395.html

相关文章:

  • hadoop+spark+hive地铁智慧交通 地铁交通客流量预测系统 交通数据 地铁运营数据 交通轨道数据 可视化大屏
  • 面向对象编程基础:类与对象
  • ESXi主机添加必看:解决vCenter Server版本不兼容和HA报警的5个技巧
  • YOLOv9训练实战:用官方镜像快速训练自定义数据集
  • RexUniNLU效果展示:短视频弹幕‘求资源’‘打假’‘催更’等社区意图零样本识别
  • Vue3+Vite打包报错:Rollup failed to resolve import
  • GHelper终极教程:华硕笔记本性能优化完整指南,告别Armoury Crate臃肿体验
  • 985研究生研究:基于Comsol的裂隙岩体热-流-固耦合数值模拟建模技术,探索地热开采与超临...
  • 1.0 C#工控实战:多USB扫码枪数据精准采集与PLC通信方案
  • AppleALC终极解决方案:黑苹果音频兼容性完整指南
  • 告别杂乱布局!用PyVis的BarnesHut算法优化你的Neo4j知识图谱可视化
  • 保姆级教程:用POCO的NotificationQueue在C++里轻松玩转多线程任务队列
  • 别再死记硬背了!用这5个Thymeleaf实战小项目,彻底搞懂SpringBoot模板引擎
  • 程序实现多台仪器无线组网,数据互通,颠覆单台独立工作模式,实现协同测量。
  • 漫画脸描述生成保姆级教程:从Docker Hub拉取镜像到生成首个角色
  • 避坑指南:为什么你的 Docker 容器里总有 Chrome 僵尸进程?深入解析进程托管机制
  • TensorFlow Playground新手必看:5分钟搞懂神经网络可视化训练(附实战截图)
  • 5步释放华硕笔记本潜能:轻量级开源工具GHelper的实战优化指南
  • 别再用传统方式渲染Spine了!一份给独立游戏开发者的GPU动画烘焙与资源管理指南
  • 突破式3步实现:用MOOTDX构建零成本金融数据获取引擎
  • 用Excel自动计算软考挣值管理:从PV/EV到TCPI的模板制作教程
  • Win10+Ubuntu双系统翻车?手把手教你从GRUB急救模式恢复Windows引导
  • 3大创新机制:构建零配置智能体通信系统的完整方案
  • OpenClaw技能扩展指南:安装GLM-4.7-Flash专用插件提升能力
  • Arch Linux 新手必看:Pacman 包管理器的 10 个实用技巧(含镜像加速配置)
  • 别再死记硬背了!用Keras跑个Demo,5分钟搞懂Epoch、Batch Size和Iterations的关系
  • C++实战:手把手教你用DWA算法实现机器人避障(附完整代码)
  • 解决curl静态库链接错误:__imp__CertCloseStore@8等符号未定义问题
  • 独立站SEO与电商站点SEO有什么区别
  • 从梯度流到记忆门:RNN长程依赖问题的演进与实战破解