别急着下载安装包,先听我把这件事说透。CentOS 7 在 2024 年 6 月正式停止维护了,这意味着市面上大量基于 CentOS 7 的服务器突然变成了“孤儿”——CVE 漏洞没人修,安全补丁没人管,软件仓库彻底冻结。很多朋友的服务器还在跑着老系统,突然被告知“没得升级了”,第一反应是换 Debian 还是换 Ubuntu?但我个人建议,如果你原本就是 CentOS 或者 RHEL 的生态使用者,最平滑、最不折腾的路径是 Rocky Linux。这篇文章我会从零开始,讲清楚 Rocky Linux 和 CentOS 的渊源、为什么它是 CentOS 的最佳替代,再手把手带你走过安装、基础配置、yum 源设置、静态 IP 配置、常用命令、常见问题排查这些环节,目标就是让你看完就能上手,直接把自己的服务器平滑切换到 Rocky。
这篇内容我尽量写得“不止是教程”,还会把背后的原理、我踩过的坑、以及遇到问题时的排查思路一并分享,所以篇幅会比较长,建议先收藏再慢慢看。
1. CentOS 退场后,为什么 Rocky Linux 是最稳的接棒者
1.1 CentOS 停止维护到底影响了谁
CentOS 的生命周期大家要搞清楚:CentOS 7 的支持截止到 2024 年 6 月 30 日,CentOS 8 更早,已经在 2021 年 12 月就结束了。也就是说,凡是还在生产环境跑 CentOS 7/8 的机器,都已经处于“裸奔”状态——官方不再推送安全更新,不再修复内核漏洞,yum 源里的软件版本也永远停留在那个时间点。
影响最大的是三类人:
- 企业运维:大量内部系统、Web 服务、数据库跑在 CentOS 上,审计和合规要求必须有安全更新,停维意味着无法过等保。
- 个人开发者:习惯了 yum/dnf 包管理、SELinux、firewalld 这套生态的人,换到 Debian 系要重新熟悉 apt、ufw 等一堆工具,成本太高。
- 培训机构、自学新手:很多教程、考试、面试题都是基于 CentOS 的,系统没了,但知识体系还在,需要一个能无缝衔接的替代品。
1.2 Rocky Linux 的来龙去脉,它的血统到底正不正
CentOS 停止维护后,社区里出现了两个主要分支:一个是 Rocky Linux,另一个是 AlmaLinux。
Rocky Linux 是 CentOS 创始人 Gregory Kurtzer 发起的项目,目标是“CentOS 的继任者”。它通过获取 RHEL 的源码重新编译,去掉 Red Hat 的商标和品牌标识,再配好自己的仓库和基础设施,最终产出一个和 RHEL 完全兼容的二进制发行版。这意味着你在 RHEL 上能跑的软件、能用的配置方式,在 Rocky 上几乎一样适用。
很多人问“Rocky 是免费的么?能不能用在生产环境?”答案是肯定的——免费、开源、可用于生产环境,而且它是经过 RHEL 源码再编译的,兼容性经过了大量企业验证。从 8.x 到 9.x,Rocky 提供了完整的生命周期支持(通常 10 年左右),这比 CentOS 原来的“免费但短命”模式要靠谱得多。
1.3 Rocky、AlmaLinux、SteamOS、国产系统,到底怎么选
既然要替换 CentOS,候选方案其实不少,我列个表直观对比一下:
| 发行版 | 血统 | 生命周期 | 兼容性 | 适合谁 |
|---|---|---|---|---|
| Rocky Linux | RHEL 再编译 | 8.x 至 2029,9.x 至 2032 | 极高 | 想平替 CentOS 的运维和开发者 |
| AlmaLinux | RHEL 再编译 | 同样长期支持 | 极高 | 想要更“中立社区治理”的团队 |
| Ubuntu Server | Debian 系 | 长期支持版 5 年 | 需重新适应 apt | 新项目、云原生场景 |
| openEuler / 龙蜥 | 社区版 | 国内厂商主导 | 兼容主流生态 | 有国产化要求的政企项目 |
如果只是“替换 CentOS”,我首推 Rocky Linux。理由很朴素:yum/dnf、SELinux、firewalld、systemctl 这套体系完全一致,老运维零成本切换;内核基于 RHEL 主线,硬件兼容性好;社区活跃度高,遇到问题搜得到答案。
2. 从零开始:Rocky Linux 安装全程实录
2.1 去哪里下载镜像,选哪个版本
新手最常见的错误:到一个乱七八糟的镜像站下载了不明来源的 ISO,结果安装过程中各种奇怪报错。我建议只从两个地方下载:
- 官网:rockylinux.org,点 Download 进入镜像列表。
- 国内镜像站:阿里云镜像、清华 TUNA、中科大镜像都提供 Rocky 的完整镜像下载,速度更快。
版本选择上,目前主推 Rocky Linux 9.x 系列(比如 9.6),它对应 RHEL 9,内核是 5.14 系,支持更新的硬件和文件系统特性。如果你的服务器配置比较老、或者企业环境强制要求 8 系列,那选 Rocky Linux 8.10 也完全可以,仓库还在维护。
架构选择:绝大多数 x86 服务器选 x86_64。如果有 ARM 架构的机器,选 aarch64。
提示:日常学习、测试、练手,建议在虚拟机(VMware Workstation / VirtualBox)里安装,别一上来就折腾物理机。我最初学的时候就是在虚拟机里反复折腾快照,搞坏了回滚一下就能重新来,效率特别高。
2.2 虚拟机安装 Rocky Linux 的详细步骤
这里以 VMware Workstation 为例,手动创建一个虚拟机:
- 新建虚拟机,选择“自定义(高级)” → 兼容性默认即可。
- 安装来源选择“稍后安装操作系统”,避免 VMware 自动简易安装带来的坑。
- 客户机操作系统选“Linux”,版本选 “Red Hat Enterprise Linux 9 64 位”(Rocky 9 和 RHEL 9 在这里通用)。
- 处理器和内存按需分配,建议至少 2 核 4GB 内存,否则安装图形界面会很卡。
- 磁盘大小建议 40GB 以上,用“将虚拟磁盘存储为单个文件”性能更好,也方便以后扩容。
- 创建完成后,在虚拟机设置里挂载下载好的 Rocky ISO 到 CD/DVD 光驱。
- 开机进 BIOS 设置光驱引导(一般虚拟机自动从光驱启动),进入安装界面。
安装界面有几个选项:Install Rocky Linux 9.6(标准安装)、Test this media before installation(先校验介质)、Troubleshooting(故障排查)。一般直接选第一项。
2.3 分区、软件包、root 密码:安装中那几个关键决定
安装向导走完后,核心是几个配置页面:
分区:新手机选“自动配置分区”就行,但你要是给生产环境装,我建议手动分区,至少分出/boot(1GB)、/(尽量大)、swap(内存小于 2GB 时建议等于内存的 1~2 倍),有数据盘需求的再加/data之类。自动分区不是不对,但手动分区能防止以后/被日志占满导致服务异常。
软件包选择:生产服务器我一般选“最小安装”(Minimal Install),省资源也安全,后续需要什么再用 dnf 装。个人学习想先看到图形界面,可以选“带 GUI 的服务器”。
Root 密码:设一个强密码,或者用 SSH 密钥。这台机器如果打算长期跑服务,强烈建议创建普通用户并赋予 sudo 权限,别什么事都 root 一把梭。
安装完成后重启,第一次登录系统,用普通用户登录,然后 sudo su - 切到 root。到这里,Rocky Linux 已经装好了。
3. 装完之后立刻要做的三件事:源、网络、更新
3.1 先理解 yum 和 dnf 的关系
Rocky Linux 8/9 默认的包管理工具是 dnf,但你敲 yum 也能用,因为在 Rocky 里 yum 被做成 dnf 的软链接,语法完全兼容。很多人一上来敲yum update发现能用,就以为还是 yum,其实底层已经换成了 dnf。这就像你换了发动机,但方向盘和油门刹车位置没变,老司机开着毫无违和感。
3.2 更换国内 yum 源,解决下载慢的问题
新装好的 Rocky 默认源指向官方仓库,在国内服务器上速度极慢。我实测用阿里云镜像源,同样的软件包下载速度能快十几倍。
操作步骤如下,以 Rocky 9 为例:
# 备份官方源配置 mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ # 下载阿里云 Rocky 源配置 curl -o /etc/yum.repos.d/Rocky.repo https://mirrors.aliyun.com/repo/rocky-9.repo # 清理缓存并生成新缓存 dnf clean all dnf makecache # 测试更新 dnf update -y注意:如果你用的是 Rocky 8.x,把上面网址里的rocky-9.repo改成rocky-8.repo即可。清华、中科大、华为云也都有对应源,选一个离你近的。
有个细节:阿里云的源文件里包含了 BaseOS、AppStream、Extras、CRB(8 以前的 PowerTools)等仓库,这些仓库各有分工,AppStream 里是常规应用软件(Nginx、Python、Redis 等),BaseOS 是核心包,Extras 是额外组件,CRB/PowerTools 是“开发库”和附加软件,缺了它,很多编译安装的依赖你根本装不上。建议这些源默认都启用,省得以后再折腾。
3.3 离线环境怎么搞定 yum 源
内网隔离的服务器是运维常遇到的场景,没法访问外网,这时就需要做本地 yum 源。
方案一:使用 Rocky 安装光盘本身作为本地源。把 ISO 挂载到/mnt,然后建一个 repo 文件:
mount /dev/cdrom /mnt cat > /etc/yum.repos.d/local.repo << 'EOF' [local-baseos] name=Local Rocky BaseOS baseurl=file:///mnt/BaseOS enabled=1 gpgcheck=0 [local-appstream] name=Local Rocky AppStream baseurl=file:///mnt/AppStream enabled=1 gpgcheck=0 EOF dnf clean all && dnf makecache方案二:在一台能上网的同版本 Rocky 机器上执行dnf reposync把仓库完整同步下来,再传到内网。这个方法更灵活,但需要的时间和磁盘空间都比较大,适合企业级离线仓库建设。
4. 零基础必会的 Linux 常用命令清单
既然标题里写了“零基础入门”,命令这块必须给足干货。我不打算把 Linux 命令几百个全部罗列一遍,而是挑出日常使用频率最高的一批,按功能分类讲,并且每个命令给出实用的例子。
4.1 文件与目录操作,不只是 ls 和 cd
ls、cd、pwd是最基础的,但很多人不知道ls -lh可以显示人类可读的文件大小,ls -lt按修改时间排序,ls -ld */只看当前目录下的子目录。
创建、删除、复制、移动文件是日常基本操作,我补充几个高频组合:
# 创建多层目录,-p 表示父目录不存在时自动创建 mkdir -p /data/logs/nginx # 复制目录时保留权限和属性 cp -a /opt/app/ /backup/app/ # 批量删除 .log 结尾且 30 天前的文件(配合 find,危险操作先 dry-run) find /var/log -name "*.log" -mtime +30 -exec ls -l {} \;4.2 文本处理三剑客:grep、sed、awk
服务排查时,文本处理是绕不开的。grep 查日志、sed 改配置、awk 做统计,这三样必须熟练。
# grep 递归搜索目录下所有包含关键字的文件 grep -rn "error" /var/log/ # sed 直接修改文件:把 8080 端口改成 9090,-i 是原地修改,先备份更稳 sed -i.bak 's/8080/9090/g' /etc/nginx/nginx.conf # awk 按空格或制表符拆分,打印第一列和第三列 awk '{print $1, $3}' /var/log/messages | head -20 # awk 统计统计日志中每个 IP 出现的次数 awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -104.3 系统状态查看,学会这些命令比装监控还管用
许多新手都不知道服务器卡了应该先看什么。我建议按下面的顺序检查:
# 看 CPU 和负载 top # 按 P 按 CPU 排序,按 M 按内存排序,按数字1查看所有核 # 看内存 free -h # 看磁盘空间和 inode df -h df -i # 看磁盘 IO 和性能 iostat -x 1 # 需要安装 sysstat 包:dnf install -y sysstat # 看网络连接状态 ss -tunlp其中df -i很多人忽略——磁盘明明还有空间,但系统说“No space left on device”,多半是 inode 耗尽了。小文件太多就会这样,清理一下临时文件就好。
5. 网络配置实战:静态 IP 的设置与排查
网络配置是新手最容易翻车的环节,尤其是 Rocky Linux 9/10 之后,网络管理默认走 NetworkManager,配置文件写法也有了新变化。这一章我重点讲三种方式,你任选一种适合自己的。
5.1 用 nmcli 配置静态 IP(推荐)
nmcli 是 NetworkManager 的命令行工具,Rocky 9 系列几默认使用它管理网络。它最大的好处是改了配置后可以立即生效,不用重启网络服务。
查看当前网络连接:
nmcli con show假设你的网卡连接名字叫ens160,要设置静态地址 192.168.1.100,网关 192.168.1.1,DNS 用 114.114.114.114:
# 修改连接为静态 IP,同时指定网关和 DNS nmcli con mod ens160 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "114.114.114.114 223.5.5.5" # 重启连接使配置生效 nmcli con down ens160 && nmcli con up ens160 # 验证 ip addr show ens160 ip route show5.2 修改网卡配置文件方式
有些老运维习惯了直接编辑/etc/sysconfig/network-scripts/ifcfg-ens160,在 Rocky 9 上依然行得通,但需要手动触发 NetworkManager 重新加载。配置文件的核心内容大概这样:
TYPE=Ethernet BOOTPROTO=none NAME=ens160 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.1.100 PREFIX=24 GATEWAY=192.168.1.1 DNS1=114.114.114.114 DNS2=223.5.5.5保存后执行:
nmcli con reload nmcli con up ens1605.3 网络排查:ping 不通时应该怎么办
网络配置完成不代表就没问题了。我遇到过很多次“IP 明明配了,但 ping 不通”,排查思路要清晰:
- 先看本机地址:
ip addr,确认 IP 和掩码是否正确。 - 再看网关:
ip route,确认默认路由是不是走了正确接口。 ping 网关如果通,说明链路没问题;如果不通,查交换机和网卡驱动。ping 8.8.8.8能通但是ping 域名不通,多半是 DNS 问题,检查/etc/resolv.conf。- 最后查防火墙:
systemctl status firewalld,测试时可以临时systemctl stop firewalld排除干扰。
另外说一个我踩过的坑:虚拟机克隆出来的 Rocky,网卡名称会因为 MAC 地址变化重新变成ens224或者ens192,旧配置就失效了。这时候别慌,按新网卡名重新配置一份 ifcfg 文件就行,或者直接删掉旧网卡配置让 NetworkManager 重新生成。
6. yum 源配置与软件安装的那些坑
6.1 Rocky 8.10 的 yum 源到底应该配什么
很多用户直接搜“Rocky Linux 8.10 yum 源”,搜到一堆老教程,结果配完发现dnf update报错。
原因在于:Rocky 8.10 是 8 系列的最终版本,它的源和旧版 8.x 略有差异,某些老版本源的 URL 已经失效。我建议直接用官方仓库提供的rocky-8.repo文件,别手动拼 URL。
比如阿里云的 Rocky 8 源配置:
cat > /etc/yum.repos.d/Rocky.repo << 'EOF' [baseos] name=Rocky Linux $releasever - BaseOS baseurl=https://mirrors.aliyun.com/rocky/$releasever/BaseOS/$basearch/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-8 [appstream] name=Rocky Linux $releasever - AppStream baseurl=https://mirrors.aliyun.com/rocky/$releasever/AppStream/$basearch/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-8 [extras] name=Rocky Linux $releasever - Extras baseurl=https://mirrors.aliyun.com/rocky/$releasever/extras/$basearch/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-8 EOF6.2 安装 Nginx、Redis、Python 的实操演示
先更新一次:
dnf clean all && dnf makecache dnf update -y安装 Nginx:
dnf install -y nginx systemctl enable --now nginx systemctl status nginx安装 Redis:
dnf install -y redis systemctl enable --now redis redis-cli ping安装 Python 相关环境,Rocky 9 默认自带 Python 3.9,但很多新项目需要 3.11 以上。可以用 AppStream 里的高版本模块:
dnf module list python* # 查看可用 python 模块 dnf module install -y python39如果想用更新版本,我一般推荐用源码编译或者 pyenv,这个后面单独开一篇讲。
实操心得:生产环境安装软件前,先
dnf provides查包,比如不知道哪个包提供了/usr/bin/nginx,可以用dnf provides /usr/bin/nginx搜索。这比瞎猜包名高效多了。
7. 进阶之路:从会用到会排查,再到能优化
7.1 学会看日志,等于拥有透视眼
服务器出了故障,第一现场在日志里。
/var/log/messages:系统通用日志,很多服务和内核消息都写在这里。/var/log/secure:登录认证日志,SSH 暴力破解、sudo 提权都记录在这里。/var/log/cron:定时任务日志。/var/log/dnf.log:软件安装更新日志。
排查问题的黄金命令组合:
tail -f /var/log/messages # 实时跟踪系统日志 journalctl -u nginx --since "30 min ago" # 查看某个服务的近期日志 dmesg | tail -20 # 内核环形缓冲区的最后部分消息,硬件故障常常看这里7.2 系统扩容,从根分区不够到扩容完成
服务器跑久了,根分区满了,这是最常见的故障。但很多人以为“扩容”就是把磁盘镜像变大,其实没那么简单。如果是虚拟机,流程大概是:
- 在 VMware/云控制台把磁盘从 40G 扩展到 80G。
- 进系统用
lsblk确认新空间是否已被系统识别。 - 用
growpart扩展分区。 - 用
xfs_growfs(XFS 文件系统,Rocky 默认)或者resize2fs(ext4)扩展文件系统。
# 查看原分区情况 lsblk # 扩展第一块磁盘的第一个分区 growpart /dev/sda 1 # 如果是 XFS 文件系统 xfs_growfs / # 如果是 ext4 resize2fs /dev/sda1操作之前务必做好备份,磁盘操作出问题,数据没了就很难找回来。
7.3 从零搭建一台 KVM 虚拟化服务器
虚拟机化是企业里绕不开的技能。Rocky 上部署 KVM 其实没有想象中复杂:
# 安装 KVM 相关软件 dnf install -y qemu-kvm libvirt virt-install bridge-utils # 启动 libvirt 服务 systemctl enable --now libvirtd # 查看是否支持硬件虚拟化(有 vmx/svm 才支持) grep -E "(vmx|svm)" /proc/cpuinfo # 通过 virt-install 命令行安装一台虚拟机 virt-install \ --name test-vm \ --ram 2048 \ --disk path=/var/lib/libvirt/images/test-vm.qcow2,size=20 \ --vcpus 2 \ --os-variant centos-stream9 \ --network bridge=virbr0 \ --graphics none \ --location /path/to/os.iso \ --extra-args "console=ttyS0"KVM 整套体系比较庞大,涉及网络桥接、存储池、快照、迁移等,如果大家感兴趣,我后面单独写一篇详细的 KVM 入门到实战。
8. 常见问题速查表与避坑清单
这一节我把平时答疑中最常见的问题整理成一个速查表,方便你遇到问题直接翻:
| 问题现象 | 可能原因 | 快速解决 |
|---|---|---|
| dnf 安装软件报 404 | 源配置失效、版本变化 | 重新下载对应版本的 repo 文件,注意 8.x 和 9.x 不能混用 |
| ping 不通外网,但内网正常 | 网关或 DNS 配置错误 | ip route查看默认路由;cat /etc/resolv.conf检查 DNS |
| SSH 登录慢,卡很久 | DNS 反向解析超时 | 修改/etc/ssh/sshd_config设置UseDNS no,重启 sshd |
| 服务器时间不对 | 时区或 chrony 服务异常 | 执行timedatectl set-timezone Asia/Shanghai,确认chronyd在运行 |
| root 密码忘了 | —— | 重启进 GRUB 菜单,按 e 编辑,在 linux 行尾加rd.break,进入紧急模式重置密码 |
| CentOS 7 迁移到 Rocky 9 后服务起不来 | SELinux 或旧软件版本问题 | 先setenforce 0临时测试,再调整 SELinux 策略;替换软件到新版本 |
几个我个人的独家经验:
- 每次改配置前先备份,不管是
/etc下的配置文件还是数据库,cp xxx xxx.bak的习惯能救命。 - 安装软件尽量用 dnf 而不是源码编译,dnf 会自动处理依赖和后续升级,源码编译升级麻烦,卸载更麻烦。
- 虚拟机或云主机及时做快照,尤其是刚装好系统、配好基础环境之后快照一张,后面随便折腾都能回到正常状态。
- 学会看文档但也要学会搜错信息,报错信息里的关键字有时候比教程更有用,把报错原文复制到搜索引擎往往能直接定位。
9. 最后说点真心话
折腾 Linux 这些年,我最大的体会是别怕踩坑。比如我第一次配置 Rocky 静态 IP 时,用的还是 CentOS 6 的老思路,结果 Rocky 9 的 NetworkManager 权限管理更严格,我改了文件却忘了 reload,折腾了快半小时才反应过来。后来学聪明了,每个新版本出来先看官方 release notes,再动手操作。
替换 CentOS 这件事,本质上是生态系统的一次代际更替,Rocky Linux 的出现给了我们一个非常平滑的跳板——命令熟悉、配置熟悉、社区活跃,迁移成本低到可以忽略。如果你手头还有 CentOS 7/8 的服务器,我建议别再等了,找台测试机先装个 Rocky,把你常用的服务一样一样迁移过去,早迁早安心。
后续我还会再写几篇跟 Rocky 相关的实战文章,比如生产环境安全加固、DNS 服务器搭建、Nginx 反向代理与负载均衡、Shell 脚本自动化运维等,有兴趣的话可以持续关注。有什么问题也欢迎在评论区交流,我看到都会回复。