再见,经典的 CentOS 7:一份迟来的技术回顾与迁移指南

今天是 2026 年 7 月 20 日。尽管 CentOS 7 已于2024 年 6 月 30 日正式停止维护(EOL),但在无数的内网环境、老旧笔记本、工控机以及虚拟化平台里,它依然在默默运行。

写这篇文章,既是对这个经典系统的一次深情回望,也是为那些依然需要维护 CentOS 7 环境,或者正计划迁移的朋友提供一份实用的技术备忘录。

一、为什么 CentOS 7 是“一代经典”?

在 Linux 服务器操作系统的历史长河中,CentOS 7 绝对是一个里程碑式的存在。它的生命周期从 2014 年持续到 2024 年,整整十年。它的经典之处在于:

  1. 极致的稳定性:基于 RHEL 7,内核 3.10,Systemd 的引入虽然当时争议巨大,但确实统一了服务管理方式。

  2. 广泛的生态兼容性:几乎所有商业软件、数据库(Oracle、MySQL)、中间件最初都是针对 CentOS 7 进行适配的。那个“EL7”的标签,意味着完美的二进制兼容性。

  3. 庞大的社区支持:遇到任何报错,都能搜到解决方案。

现状警示:
既然已经停服,它不再接收安全更新。如果你的服务器还暴露在公网,或者需要满足等保合规要求,原地续命不如尽快迁移

二、给“考古”服务器的急救包

如果你手头还有不得不跑的 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 10RHEL 的上游,滚动更新,内核很新。想在红帽生态里体验新特性,能接受一定变化。
Rocky Linux 9.xCentOS 的灵魂继承者,RHEL 下游重建版,100% 兼容。生产环境首选,想从 CentOS 7 平滑过渡的。
AlmaLinux 9.x同样是 RHEL 复刻版,社区活跃,甚至提供商业支持。和 Rocky 类似,看团队偏好。
Ubuntu 24.04 LTSDebian 系,生态完全不同,文档多,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 的渐进式迁移。

操作简化流程:

  1. 全量备份!全量备份!(没有备份不要进行任何操作)

  2. 升级前检查(在 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
  3. 运行预检查:

    bash

    leapp preupgrade

    这一步会生成/var/log/leapp/leapp-report.txt,仔细查看哪些配置会被修改,有哪些 Inhibitor(阻止因素,比如非标内核、缺依赖等),一一解决后再继续。

  4. 执行第一段迁移(CentOS 7 → Rocky 8):

    bash

    leapp upgrade # 重启 reboot

    系统重启后会进入一个特殊引导项,自动完成向 Rocky Linux 8 的转换。

  5. 从 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 服务器还有什么特殊的故事,或者你在迁移中遇到了棘手的问题,欢迎在评论区留言分享。