CentOS 7正式停服那天,我服务器上还有几十台生产机器没迁移完。算下来从接到通知到全部切换,前后折腾了三个多月,踩过的坑比走过的路还多。这期间我最终选定的替代方案就是Rocky Linux,也是今天这篇内容的主角。
这篇内容不是那种泛泛而谈的Linux科普,而是围绕“新版Linux零基础入门到高手、Rocky版本、替换CentOS”这三件事展开的实战记录。我会从“为什么选Rocky而不是别的发行版”讲起,再到镜像下载、虚拟机安装、常用命令、软件部署、磁盘扩容、CentOS平滑迁移,最后附上我实际遇到的常见问题排查表。无论你是刚接触Linux的小白,还是正在给公司服务器找CentOS替代方案的老运维,这篇内容应该都能给你省下不少时间。
1. 为什么是Rocky:CentOS落幕后的替代逻辑
1.1 CentOS停止维护到底意味着什么
先说实话,很多朋友对这个事儿的严重程度估计不足。CentOS 8在2021年12月31日就停止维护了,CentOS 7也在2024年6月30日画上句号。停维护意味着什么?意味着不再有安全补丁、不再修复已知漏洞、不再更新软件包仓库。对服务器来说,这等同于裸奔,一旦出现高危漏洞被利用,系统在互联网上就是一座不设防的城。
还有一点容易被忽略:CentOS 7用的是Linux 3.10内核,很多新硬件驱动、新文件系统特性、容器相关的cgroup v2支持都不完整。你就算能忍受安全风险,硬件兼容性和新软件依赖也会越来越让你头疼。继续用CentOS 7,本质上是在用一辆零件停产的老车跑长途,不是不能跑,是随时可能撂挑子。
CentOS Stream虽然是官方续作,但它是滚动发行版,位于Fedora和RHEL之间,更新节奏跟稳定服务器完全不是一个路子。生产环境要的是“稳”,不是“新”,这是原则问题。
1.2 Rocky与CentOS、RHEL的血缘关系
Rocky Linux的诞生背景很多人知道个大概:CentOS项目调整方向之后,CentOS创始人Gregory Kurtzer发起成立了Rocky Enterprise Software Foundation(RESF),目标是做一个“1:1 bug-for-bug兼容”的RHEL替代品。
这话什么意思?就是说Rocky的源码直接来自RHEL重新发布的开源源码,经过社区构建、测试,最终产物在二进制层面和RHEL保持兼容。你在RHEL上装过的软件、跑过的脚本、做过的配置,迁移到Rocky上基本不用改。这对从CentOS迁移过来的用户尤其友好,因为CentOS本身就是RHEL的重编译版,现在只是换了个社区来维护这条链路而已。
Rocky的版本号也继承自RHEL。比如Rocky 8对应RHEL 8,Rocky 9对应RHEL 9,生命周期同样长达十年。对服务器这种长周期运行的场景来说,一个能明确告诉你“到哪一年之前都有安全更新”的系统,才值得你把核心业务放上去。
1.3 替代方案横向对比:Rocky、AlmaLinux、Debian、Ubuntu LTS
我当初替换CentOS时,候选方案其实不止Rocky一个。AlmaLinux是CloudLinux公司发起的,也是RHEL兼容路线,跟Rocky功能几乎一样;Debian和Ubuntu LTS则是另一个体系,包管理用apt,配置路径和命令习惯跟CentOS/RHEL系差别不小。
我最终选Rocky,三个原因:
第一,血缘最正。Rocky的发起人是CentOS的创始人,社区驱动的模式也更符合CentOS早期的精神。第二,迁移成本最低。从CentOS切到Rocky,SSH命令、systemd服务管理、firewalld防火墙、SELinux策略、dnf包管理,全部零学习成本。第三,生态认账。很多商业软件和白皮书都明确把RHEL系列为支持对象,Rocky因为二进制兼容,软件安装基本无痛。
当然AlmaLinux也很好,选谁更多是个人偏好。但如果你只是想找一个“和CentOS长得几乎一样”的系统,Rocky是那个最顺手的选项。
2. 动手前的基础准备:镜像下载与虚拟机环境
2.1 Rocky Linux镜像从哪里下
很多新手卡在下载这一步,因为官网有时候慢得让人崩溃。Rocky官方地址是rockylinux.org,点下载之后能看到不同架构的镜像,绝大多数情况下选x86_64就行。
嫌官网慢的话,国内镜像站是非常好的选择。清华TUNA、阿里云、中科大USTC都有Rocky的同步镜像,下载速度基本跑满带宽。文件名会带Minimal、DVD、Boot等字样,这里建议新手不要犹豫,直接下载Minimal版,它只包含一个最小化系统,没有图形界面,强迫你从命令行开始学,这才是服务器该有的样子。
文件下载完记得校验一下SHA256校验值,镜像站都会提供对应的checksum文件。别嫌这一步啰嗦,下载过程文件损坏的概率虽然低,但真遇到了,安装到一半报错才叫绝望,我在帮同事排查安装问题时真遇过这种案例。
2.2 虚拟机安装流程与分区规划
安装方式我强烈推荐虚拟机,VMware Workstation或VirtualBox都行,不折腾物理机硬件兼容性问题。虚拟机配置参考:2核CPU、4GB内存、40GB虚拟磁盘,这个配置跑Rocky桌面或最小安装都够用,后续学KVM虚拟化也勉强能撑起来。
ISO挂载后开机,选择“Install Rocky Linux 9.x”,语言建议选英文。国内很多教程让选中文,但你要知道服务器运维文档、日志、报错信息基本都是英文的,早点适应对你只有好处。
磁盘分区这里划个重点。默认的自动分区能用,但不推荐给生产环境用。我建议手动分区,至少分三个区:/boot分1GB,存放内核和引导文件;swap分2-4GB,作为内存溢出时的兜底;其余空间全部给/。如果未来有计划跑数据库或容器,再单独分一个/data挂载点,把数据和系统隔离,将来重装系统数据不丢。
分区方案看着简单,背后逻辑是系统盘和数据盘解耦、引导文件独立管理。内核升级出问题时,单独挂载/boot恢复起来会省很多事。
2.3 安装完成后的环境初始化清单
装完系统进入命令行后,千万别急着部署业务,先做几件事把底子打好。
第一件事,创建普通用户。root权限太危险,一条rm -rf /误操作就能毁掉整个系统。日常操作用一个普通账号,需要管理员权限时sudo提权,这是Linux世界的黄金法则。
第二件事,配置网络。Minimal版装完默认是DHCP自动获取IP,服务器需要固定IP。用nmcli命令设置静态IP是Rocky系的标准做法,操作简单,后面我会专门展开讲。
第三件事,启用EPEL和CRB仓库。EPEL是Extra Packages for Enterprise Linux的缩写,里面有大量RHEL基础源里没有的软件包;CRB在Rocky 9里叫CRB(CodeReady Builder),提供编译器和开发库,很多第三方软件依赖它。不启用这两个仓库,你装软件时会频繁遇到“No package found”的报错。
3. 从零上手:Linux常用命令与人机交互
3.1 目录与文件操作:先搞懂你在哪儿
Linux新手最容易迷惑的就是命令行界面。没有鼠标双击,所有操作靠敲命令,但一旦习惯,效率是图形界面没法比的。
先学四个命令:pwd查看当前路径,ls列出目录内容,cd切换目录,mkdir创建目录。把Linux目录结构过一遍:/etc放配置文件,/var放日志和动态数据,/home放普通用户家目录,/tmp放临时文件,/usr放系统软件。这个结构初看有点反直觉,但用久了你会发现它非常优雅:配置、数据、程序、日志各归其位,出了问题按图索骥就能找到。
文件操作方面,cp复制、mv移动/重命名、rm删除。这里专门警告一下:rm是危险操作,没有回收站,删了就没了。建议习惯性用rm -i或者干脆先mv到一个.trash目录暂存,等确认无误再清理。
3.2 用户与权限管理:Linux多用户模型的精髓
Linux是多用户操作系统,权限模型是它的核心安全屏障。每个文件都有属主(owner)、属组(group)、其他用户(others)三组权限,每组又分读(r)、写(w)、执行(x)三种权限。
实操中最常见的场景是:新来一个同事要开账号,用useradd和passwd就能搞定。某个文件需要让别人读,用chmod修改权限。比如chmod 755给文件所有者完整权限、组和其他人读和执行的权限,数字7=4+2+1(rwx),5=4+1(rx),这套数字记法用熟了之后会非常高效。
sudo配置也建议早点掌握。用visudo编辑/etc/sudoers文件,给指定用户添加sudo权限,注意不要直接扔root密码,而是让用户用自己的密码提权,安全性高得多。
3.3 进程与服务管理:systemd统领全局
CentOS 7之后,RHEL系全面转向systemd,Rocky也不例外。它统一了服务的启动、停止、重启、开机自启等操作,这也是服务端的核心技能。
systemctl是systemd的主力命令,start、stop、restart、enable、disable、status是六个最常用的子命令。比如想让Nginx随系统启动,一条systemctl enable nginx就搞定。查看运行状态用systemctl status nginx,能看到服务是否active、监听了哪些端口、最近日志是什么,排查问题时这个是第一眼要看的东西。
进程管理方面,top按CPU或内存排序看实时进程,ps aux查看当前所有进程快照,free -h看内存使用,df -h看磁盘占用。四个命令组合起来,服务器出任何性能问题,你都有基本的诊断能力。
3.4 网络配置实战:给Rocky设置静态IP
热词里“rocky linux设置静态ip”搜索量很靠前,说明这是碰壁重灾区。Rocky 9用的网络管理工具是NetworkManager,命令行配置静态IP建议用nmcli。
查看当前网卡名称,通常是ens33、ens160或eth0,记住这个名字。然后执行:
nmcli con mod ens160 ipv4.addresses 192.168.1.100/24 nmcli con mod ens160 ipv4.gateway 192.168.1.1 nmcli con mod ens160 ipv4.dns "8.8.8.8 114.114.114.114" nmcli con mod ens160 ipv4.method manual nmcli con up ens160完事后用ip addr验证IP是否生效,再ping一下网关和公网IP测连通性。
这里有个新手常犯的错误:想着直接去改/etc/sysconfig/network-scripts/ifcfg-ens160文件,改完然后systemctl restart network。Rocky 9里网卡配置虽然还是这个文件,但NetworkManager接管后直接改文件不一定生效,而且restart network这个服务已经被废弃了。标准做法就是上面那套nmcli命令,改完用nmcli con up重载连接。
3.5 软件包管理:dnf是yum的进化版
RHEL系从8代开始,软件包管理器从yum换成了dnf,Rocky 9只用dnf。但别担心,常用的命令格式几乎一样,如果输入yum,它也会自动链接到dnf执行。
最常用的几组命令:
# 搜索软件包 dnf search nginx # 安装 dnf install nginx -y # 卸载 dnf remove nginx # 更新全部软件 dnf update # 查看已安装 dnf list installed | grep nginx # 查看某个文件属于哪个包 dnf provides /etc/nginx/nginx.confdnf最大的优点是自动解决依赖关系。你装一个软件,它会把所有依赖包自动装好,这比老式Linux手动rpm安装的效率高太多了。当然,dnf偶尔也会出现依赖冲突,常见原因就是epel和CRB仓库没启用完整,后面我会讲到。
4. 服务器环境实操:装Python、办公软件与扩容
4.1 基于dnf安装Python并配置虚拟环境
服务器上装Python是高频需求。热词里“linux系统安装python”搜索量不低,这里写个标准流程。
Rocky 9默认源里自带Python 3.9,直接装:
dnf install python3 -y python3 --version系统自带的Python我不太建议直接拿来跑项目,更规范的做法是给每个项目建一个虚拟环境,隔离依赖版本。用venv创建:
python3 -m venv /opt/myproject/venv source /opt/myproject/venv/bin/activate pip install --upgrade pip激活虚拟环境后,pip安装的包都会落在项目目录里,不会污染系统Python。以后项目不要了,直接删目录,干干净净。
另外提醒一下:不要用Python直接去改系统管理的Python环境,更不要用dnf去装pip包。系统Python是为操作系统内部工具服务的,你乱装包可能导致yum/dnf本身跑不起来,这个坑我踩过一次,排查了两个小时才发现是pip包冲突。
4.2 LibreOffice的安装思路
热词里有“rocky linux安装libreoffice_7.4.7.2_linux_x86-64_rpm”,这其实是很多办公场景下服务器要做的事——给Linux装一套Office套件处理文档。
LibreOffice在EPEL源里就有,最简单的方式是dnf安装:
dnf install libreoffice -y但如果你在特殊网络环境,只能拿到rpm包离线安装,那就用rpm或dnf localinstall:
dnf localinstall ./libreoffice*.rpm -ydnf localinstall比rpm -ivh好用的地方在于它同样会自动解析依赖关系,但前提是你本地要有完整的依赖包集合,否则依然会报缺依赖。少依赖文件时,可以去rpmfind.net或官方下载地址补齐;麻烦归麻烦,但在内网隔离环境下这是唯一办法。
还有一个思路是解包解压版本的LibreOffice.tar.gz,把解压后的目录放进/opt,再到/usr/bin下做个软链接。这种方式适合不想污染系统包管理的场景,缺点是更新要手动搞。
4.3 磁盘扩容实战:虚拟机加盘后的完整流程
服务器跑一阵子,磁盘不够了是常态。热词里“centos扩容”排得挺靠前,Rocky下思路完全一样,这里给一套我自己的操作流程。
虚拟机关机,在虚拟机设置里给磁盘加空间,或者加一块新盘。开机后先看磁盘情况:
lsblk df -h如果是给现有分区扩展,以LVM为例,核心步骤是:扩展分区、扩展物理卷、扩展逻辑卷、扩展文件系统。
先对新加的磁盘分区:
fdisk /dev/sdb # n 新建分区 # p 主分区 # w 保存然后加入现有卷组、扩展逻辑卷、扩展文件系统:
# 创建物理卷 pvcreate /dev/sdb1 # 查看卷组名,通常是centos或rocky vgs # 扩展到卷组 vgextend rocky /dev/sdb1 # 扩展逻辑卷,比如lv名是root lvextend -l +100%FREE /dev/mapper/rocky-root # 扩展文件系统,xfs用xfs_growfs xfs_growfs /这里有个关键点:文件系统类型不同,最后一步的命令不同。xfs用xfs_growfs,ext4用resize2fs。用错了会报错,对不上号时先用df -h看文件系统类型再决定。
4.4 SSH远程连接与常见连不上问题
服务器部署完了,日常运维靠SSH远程。Linux服务器默认开着sshd服务,端口22。本地用Windows的话,可以用PowerShell自带的ssh命令,也可以装个FinalShell或Xshell,体验更顺手。
配置SSH密钥登录是个好习惯,比密码登录安全得多。流程是本地生成密钥对,公钥传到服务器authorized_keys文件里,然后关闭密码登录:
ssh-keygen -t ed25519 ssh-copy-id user@server_ip改/etc/ssh/sshd_config,把PasswordAuthentication设为no,然后systemctl restart sshd。
连不上服务器是新手最常见的问题,我遇到的排查顺序基本是这样:先确认网络通不通,ping服务器IP;再确认端口通不通,用telnet或nc扫一下22端口;接着看sshd服务是否运行,systemctl status sshd;最后看防火墙,firewall-cmd --list-all检查22端口是否放行。
八成以上“连不上”的问题,不是防火墙没放行就是服务没起来,按这个顺序查最省时间。
5. 从CentOS迁移到Rocky:一条完整的升级路径
5.1 迁移前的检查清单
从CentOS迁到Rocky,最关键的不是技术,是准备工作。我见过太多人上来就执行迁移脚本,结果中途失败,系统处于半死不活的状态,数据还差点丢了。
迁移前必须做四件事。第一,确认系统版本,CentOS 7先升到7.9,CentOS 8先升到8.5以上,版本太老的话脚本可能要报错。第二,备份数据,数据库做全量备份,配置文件打tar包,网站代码拷一份,多备份一份到其他机器上。第三,停掉不相关的服务,减少迁移过程中的干扰因素。第四,做虚拟机快照,这一步做成习惯了,迁移失败直接回滚,省得担惊受怕。
5.2 使用migrate2rocky脚本完成迁移
Red Hat官方提供了migrate2rocky脚本,Rocky社区也维护着一份。两者核心逻辑一样:替换软件源、重新安装受CentOS签名影响的RPM包、升级系统版本。
建议直接从Rocky官方仓库拉取脚本:
# 下载迁移脚本 curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh # 给脚本加执行权限 chmod +x migrate2rocky.sh # 执行迁移,-r参数表示转换到Rocky bash migrate2rocky.sh -r脚本会解压仓库、替换rpm签名、清理旧缓存、执行dnf distro-sync。整个过程取决于系统里装了多少包,通常在20-60分钟之间。
期间不要中断终端,不要重启系统。如果脚本中途失败,看输出日志,常见原因是某几个包的依赖解析失败或者网络中断。多数情况重新执行一次脚本就能过,如果反复失败,去查/var/log/migrate2rocky日志。
迁移成功后重启系统,你就能看到登录界面显示Rocky Linux的版本信息了。我自己在生产环境迁过几台,整体还是比较顺的,但务必记住重启前确认快照完好。
5.3 迁移后验证与回滚预案
重启之后别急着跑业务,先做几项验证。
第一,确认发行版信息:
cat /etc/redhat-release # 应该显示 Rocky Linux release 9.x第二,确认软件源:
dnf repolist输出里应该有Rocky官方仓库,说明源切换成功。第三,确认关键服务状态,把数据库、Web服务、业务进程全部手动拉起来,跑一遍基本功能测试。第四,确认内核版本,uname -r。
如果有问题需要回滚,就回到虚拟机的快照点。快照这个动作,无论如何强调都不过分,它是你迁移失败时唯一的后悔药。
6. 常见问题与排查技巧实录
这一节把所有实际运维中遇到的高频问题整理成表格,按出现概率排序,方便大家直接对号入座。
| 问题现象 | 可能原因 | 处理方法 |
|---|---|---|
| SSH连接拒绝 | sshd未启动或防火墙未放行22端口 | systemctl start sshd;firewall-cmd --add-port=22/tcp --permanent && firewall-cmd --reload |
| 安装软件提示No package found | EPEL或CRB仓库未启用 | dnf install epel-release;dnf config-manager --set-enabled crb |
| 虚拟机扩容后df -h无变化 | 新分区未加入LVM或文件系统未扩展 | 执行pvcreate、vgextend、lvextend、xfs_growfs完整链 |
| root密码忘记进不去系统 | 无人值守恢复模式 | 重启按e进入GRUB,单用户模式修改密码(rd.break) |
| WSL里删除文件但Windows空间不释放 | vhdx虚拟磁盘没压缩 | wsl --shutdown后用diskpart/vhdx工具compact |
| 解压zip包中文文件名乱码 | 字符集不匹配 | unzip -O gbk文件名.zip,或用7z工具指定编码 |
| dnf update下载速度慢 | 源在国外 | 更换国内清华/阿里镜像源 |
| LibreOffice启动报缺.so依赖 | 依赖库不全 | 根据报错文件名搜索rpm包补齐或重装libreoffice |
另外,有几个我在实操中总结的小技巧,顺手分享出来。
第一个是配置好防火墙后立即测试,别等业务上线才发现端口没开。firewall-cmd --reload之后,用nmap或nc对本机端口扫一遍,确认无误再收工。
第二个是养成看日志的习惯。系统日志在/var/log/messages,dnf日志在/var/log/dnf.log,服务错误在journalctl -u 服务名。出问题先看日志,比瞎猜高效十倍。
第三个是改系统配置前先做备份。cp /etc/xxx /etc/xxx.bak这个习惯救过我太多次,很多系统文件改完就直接坏,有备份一步恢复。
7. Linux学习路径建议:从入门到高手的路线图
热词里“linux面试题”和“linux提权”搜索量也很大,说明不少朋友是冲着求职和提升去的。这里顺带给一套相对合理的学习路径。
入门阶段,掌握文件操作、用户权限、vim编辑器、网络配置、软件安装、服务管理这六块,就能应对基本的服务器维护工作了。进阶阶段,学习Shell脚本编程、文本处理三剑客grep/awk/sed、日志分析、性能监控,把这些练熟后你就能自动化和排查问题了。再往上,学习容器化、KVM虚拟化、Ansible自动化运维、数据库管理,已经具备架构师级别的能力了。
学Linux没有捷径,但有一个高效的方法:给自己搭一台服务器,把博客系统、个人网盘、代码仓库这些真实服务部署上去,遇到问题解决问题,三个月下来比看十本书都强。
很多人买了书就吃灰,其实最快的入门路径就是从最小化安装系统,然后把日常操作全部在命令行里完成,不用鼠标不用图形界面。头一周很不适应,第二周开始顺手,一个月后你会发现回去用图形界面反而别扭了。
不要太迷信什么“零基础入门到精通”,真正的精通都是踩坑踩出来的。今天这篇内容里写的每一个坑,都是我实际掉进去又爬出来的,你可以少走这些弯路,但该你踩的坑一个都不会少。这句话不是劝退,是想告诉你:学Linux这个过程本身,就是最有价值的成长。