再见,经典的 CentOS 7:一份迟来的技术回顾与迁移指南
今天是 2026 年 7 月 20 日。尽管 CentOS 7 已于2024 年 6 月 30 日正式停止维护(EOL),但在无数的内网环境、老旧笔记本、工控机以及虚拟化平台里,它依然在默默运行。
写这篇文章,既是对这个经典系统的一次深情回望,也是为那些依然需要维护 CentOS 7 环境,或者正计划迁移的朋友提供一份实用的技术备忘录。
一、为什么 CentOS 7 是“一代经典”?
在 Linux 服务器操作系统的历史长河中,CentOS 7 绝对是一个里程碑式的存在。它的生命周期从 2014 年持续到 2024 年,整整十年。它的经典之处在于:
极致的稳定性:基于 RHEL 7,内核 3.10,Systemd 的引入虽然当时争议巨大,但确实统一了服务管理方式。
广泛的生态兼容性:几乎所有商业软件、数据库(Oracle、MySQL)、中间件最初都是针对 CentOS 7 进行适配的。那个“EL7”的标签,意味着完美的二进制兼容性。
庞大的社区支持:遇到任何报错,都能搜到解决方案。
现状警示:
既然已经停服,它不再接收安全更新。如果你的服务器还暴露在公网,或者需要满足等保合规要求,原地续命不如尽快迁移。
二、给“考古”服务器的急救包
如果你手头还有不得不跑的 CentOS 7 机器,而且暂时不能重装,以下是几个关键维护策略:
1. 切换 YUM 源到 Vault(归档库)
官方已经把镜像移出了主镜像站,放入了vault.centos.org。你的 yum 命令报错大概率是因为源失效了。
bash
# 备份原文件 mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ # 创建新的 Vault 源 cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF' [base] name=CentOS-7 - Base baseurl=http://vault.centos.org/centos/7/os/$basearch/ gpgcheck=1 gpgkey=http://vault.centos.org/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-7 - Updates baseurl=http://vault.centos.org/centos/7/updates/$basearch/ gpgcheck=1 gpgkey=http://vault.centos.org/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 EOF yum clean all && yum makecache
2. 安装 ELRepo 升级内核(可选)
原生 3.10 内核太老了,很多容器特性(如 OverlayFS 完整支持)不太好用,通过 ELRepo 可以升到较新的长期支持内核。
bash
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-lt # 重启后选择新内核
三、CentOS 7 的继承者们:谁最值得选?
CentOS 8 同样提前停服,CentOS Stream 成了 RHEL 的上游滚动版。现在的格局是:
| 系统 | 特点 | 适合场景 |
|---|---|---|
| CentOS Stream 10 | RHEL 的上游,滚动更新,内核很新。 | 想在红帽生态里体验新特性,能接受一定变化。 |
| Rocky Linux 9.x | CentOS 的灵魂继承者,RHEL 下游重建版,100% 兼容。 | 生产环境首选,想从 CentOS 7 平滑过渡的。 |
| AlmaLinux 9.x | 同样是 RHEL 复刻版,社区活跃,甚至提供商业支持。 | 和 Rocky 类似,看团队偏好。 |
| Ubuntu 24.04 LTS | Debian 系,生态完全不同,文档多,AI/机器学习支持好。 | 如果想脱离 RPM 系,拥抱 apt 生态。 |
对于大多数传统企业应用,目前最稳妥的迁移路径是:CentOS 7 → Rocky Linux 9 / AlmaLinux 9。
四、硬核实战:从 CentOS 7 原地迁移到 Rocky Linux 9
⚠️重要警告:不要直接从 CentOS 7 跨大版本“硬升”到 9,大概率系统会挂。官方推荐且最稳的方案是:备份数据 → 全新安装 Rocky Linux 9 → 恢复应用。
不过,为了应对“不能重装”的极端场景,社区提供了一个神奇的工具ELevate,它支持从 CentOS 7 → Rocky Linux 8 → Rocky Linux 9 的渐进式迁移。
操作简化流程:
全量备份!全量备份!(没有备份不要进行任何操作)
升级前检查(在 CentOS 7 上执行):
bash
# 更新到最新状态 yum update -y # 安装 elevate-release 包 yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm # 安装 leapp 和迁移数据包 yum install -y leapp-upgrade leapp-data-rocky
运行预检查:
bash
leapp preupgrade
这一步会生成
/var/log/leapp/leapp-report.txt,仔细查看哪些配置会被修改,有哪些 Inhibitor(阻止因素,比如非标内核、缺依赖等),一一解决后再继续。执行第一段迁移(CentOS 7 → Rocky 8):
bash
leapp upgrade # 重启 reboot
系统重启后会进入一个特殊引导项,自动完成向 Rocky Linux 8 的转换。
从 Rocky 8 再升到 9:
在成功启动的 Rocky 8 系统上,重复类似步骤(用 Rock 8 的 elevate 包),再执行一次leapp upgrade。
坦诚地说,这个过程对新手而言风险不低,极其依赖稳定的网络和足够的磁盘空间(根分区至少留 4-5G 空闲)。重装系统+恢复数据永远是更干净的方式。
五、迁移后的技术差异速查
假设你已经来到了 Rocky Linux 9,以下是从 7 过来最明显的变化:
软件包管理:
yum命令已被dnf完全取代(虽然敲yum也会自动转给dnf)。网卡命名:如果是从 7 的旧硬件虚拟化过来,网卡名可能从
eth0变成了ens192这类,不要惊慌。Python:系统级 Python 是 3.9(
python3),没有默认的python命令。别再写死#!/usr/bin/python了。容器技术:
docker包没了,建议直接用podman(命令和 docker 几乎一样),或者通过 Docker 官方源安装。防火墙:依然是
firewalld,不过 nftables 成了后端,如果有些复杂规则可能有细微兼容差别。安全:SELinux 默认还是 Enforcing。如果以前在 CentOS 7 上习惯性
setenforce 0,建议趁这次迁移,花时间把应用适配好,别再关了。
结语
CentOS 7 是一段传奇,它承载了无数运维人的青春。让它安稳退休的最好方式,不是顶着漏洞继续跑下去,而是有计划地将业务迁移到一个充满活力的新平台。
如果你的 CentOS 7 服务器还有什么特殊的故事,或者你在迁移中遇到了棘手的问题,欢迎在评论区留言分享。
