尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CentOS停更后迁移指南:Rocky Linux零基础入门到实战

CentOS停更后迁移指南:Rocky Linux零基础入门到实战 CentOS 7停更之后很多朋友都在琢磨系统迁移这件事。作为一个用了十几年Red Hat系发行版的老用户我这段时间把工作环境陆续从CentOS搬到了Rocky Linux上最近又给团队里几个零基础的新人做了一套内训用的正是“新版Linux零基础入门到高手Rocky版本”这条路线。今天就把这套打法完整梳理一遍不管你之前有没有接触过Linux只要跟着这个思路走替换CentOS这件事其实没有想象中那么复杂。这篇文章适合的人很明确一是CentOS老用户想找个稳定的替代方案二是完全没碰过Linux、想从零开始学的小白三是打算在VMware里搭一套环境做练习的测试人员。我会把从镜像下载、系统安装、网络配置到JDK、Python、Redis这些常用工具的部署过程全部走一遍包括我实际踩过的坑和排查思路尽量做到看完就能直接上手操作。1. 迁移背景CentOS停更之后的替代选择1.1 为什么是Rocky Linux先说背景。CentOS Linux 7在生命周期结束后就不再提供维护更新这对很多还在跑生产环境的团队来说是个需要认真对待的变化。没有官方更新的系统意味着安全漏洞不能及时修复尤其在公网环境里风险会持续累积。市面上主流的替换方案无非几个方向Ubuntu Server、Debian、Rocky Linux、AlmaLinux还有国内团队维护的OpenAnolis、openEuler这些。我选择Rocky Linux的原因其实很朴实。第一它和CentOS一样是RHEL的下游用的是同一套源码构建命令体系、目录结构、包管理方式几乎无缝衔接已经习惯yum/dnf、systemd、firewall这些工具的老用户基本零学习成本。第二Rocky由Greg Kurtzer发起这个人是CentOS早期的联合创始人之一项目定位就是“CentOS的社区接力”社区活跃度比较高更新节奏也稳定。第三RHEL兼容生态意味着大量的教程、文档、商业软件支持都还能直接用招聘市场上需求最多的也还是这个体系。可能有人会问AlmaLinux和Rocky选哪个。两者都是从RHEL源码重建的技术层面差异很小。Alma背靠CloudLinux公司Rocky是社区驱动。我的感受是Rocky社区对新手更友好官方文档和论坛里的问答质量都不错。而且Rocky 9从发布到现在一直保持稳定的更新节奏加上国内几个高校镜像站都有同步下载也方便。所以如果你的场景是“从CentOS迁过来、希望尽量不改变原有操作习惯”Rocky Linux确实是最顺手的选项。1.2 选哪个版本8.x还是9.xMinimal还是DVDRocky Linux目前有两个大版本在并行维护8.x和9.x。8.x对应的RHEL 89.x对应RHEL 9。对新人来说直接选9.x就好毕竟软件版本更新、内核更新、生命周期也更长。但有一种情况你可以考虑8.x就是公司内部有老旧的业务系统暂时还没适配RHEL 9环境或者你有兼容性验证方面的要求。我自己目前主力环境是Rocky 9.x同时保留了一台8.10的虚拟机专门用来跑老项目。镜像选择上官方提供DVD、Minimal、Boot等几种类型。这里重点是很多人搜“rocky 9 的minimal.iso下载云盘”想找小体积镜像我的建议是直接去官方镜像站或者国内高校镜像站下载不要随便用第三方云盘分享的文件毕竟系统镜像直接关系整台机器的安全。所谓Minimal就是最小化安装镜像体积只有2GB左右装出来是一个没有图形界面的纯净命令行系统非常适合服务器方向和想扎实学命令行的新手。DVD镜像包含完整软件包和图形界面组件体积更大适合想装桌面环境来体验的朋友。零基础学Linux个人建议先上Minimal通过命令行操作很多东西会被迫去搞明白后面再看图形界面会觉得非常简单。下载地址直接用清华镜像站就行搜“rocky linux 8.10镜像位置”也能找到。我一般习惯在清华大学开源软件镜像站的rocky目录下找对应版本的isos/aarch64或x86_64。下载完记得校验一下SHA256官方页面和镜像站都会提供校验值这一步看起来麻烦但能避免下载到损坏的镜像文件。1.3 零基础应该先搞懂的三个概念在动手装系统之前我觉得有三个概念值得先弄清楚理解它们能少走很多弯路。第一是“发行版”。Linux本身只是一个内核内核负责管理硬件、进程、内存这些底层资源。但光有内核没法直接用需要围绕它配上GNU工具、包管理器、系统服务等打包在一起就是发行版。所以Ubuntu、CentOS、Rocky都是“Linux发行版”只是组合方式不同内核里跑的某一条命令可能名称一样但包管理方式、配置文件位置会有差异。第二是“Shell”。这是用户与内核交互的翻译官说白了就是一个命令行解释器。你敲的ls、cd、cp最终由Shell翻译成内核能理解的操作。Rocky Linux默认的Shell是bash这也是所有Linux教程里出现频率最高的一个。零基础阶段不需要管太多别的Shellbash玩熟练就走遍天下了。第三是“包管理”。CentOS用yumRocky Linux用dnf其实dnf就是yum的下一代版本命令参数高度相似。包管理器的意义在于帮你解决软件的安装、卸载、依赖关系。没有包管理器装一个软件可能要手动去解决几十个依赖包有了dnf之后就一条命令的事。理解了这个概念后面装JDK、Python之类的软件时思路就会非常清楚。2. 环境准备与安装核心操作2.1 VMware虚拟机安装Rocky Linux全流程学习阶段不建议拿实体机折腾用虚拟机最稳妥。VMware Workstation Pro是老牌选手个人学习用基本够。下载好Rocky Linux的Minimal镜像之后接下来就是创建虚拟机。创建的时候有几个关键点值得注意。客户机操作系统选择“Red Hat Enterprise Linux 8.x或9.x”这是让VMware以兼容RHEL的方式给虚拟机配置硬件参数。内存建议4GB起步CPU给2核以上硬盘给40GB到60GB。很多人图省事硬盘给20GB结果后面装个开发环境加上编译缓存空间就紧张了扩容又得折腾LVM不如一开始就给够。网络类型选择NAT模式。NAT模式下虚拟机通过宿主机上网宿主机断网虚拟机也就断网但对学习来说够了而且不用操心局域网IP冲突。后面要模拟服务器环境再改成桥接模式也不迟。启动虚拟机后进入安装引导界面第一项就是“Install Rocky Linux 9.x”。安装过程有几个环节容易让新手卡住。一个是手动分区。强烈建议选择自定义分区用LVM逻辑卷管理/boot给1024MBswap给4096MB剩余空间全部给/。LVM的好处是后面磁盘不够了可以动态扩容就是热搜里常有人搜的“centos扩容”、“虚拟机硬盘扩容”有了LVM扩容操作会简单很多。第二个是软件选择。Minimal镜像默认是“Minimal Install”如果你想装一个带图形界面的桌面环境需要勾选“Server with GUI”或“Workstation”。我自己的学习机装的是Minimal然后把需要的软件手动装进去这样对系统各组件的理解更深入。第三个是ROOT密码和用户创建。安装时会让你设置root密码注意这个密码强度如果太弱安装程序会提示你需要按两次“Done”才能确认。同时建议创建一个普通用户日常用普通用户操作需要管理员权限时再sudo提权这是服务器管理的基本习惯。安装完成后重启你会看到命令行登录界面。到这里第一大步就算完成了。2.2 网络配置安装完成后先解决网络通不通Minimal安装后第一件事就是确认网络。很多人照着教程装完系统发现ping www.baidu.com完全不通就开始慌了。其实绝大多数情况只是网卡没有默认启用而已。用ip addr查看网卡状态如果网卡名类似ens160或ens33而且状态是DOWN说明还没启用。Rocky Linux 9默认使用NetworkManager管理网络推荐直接用nmcli命令这是最不容易出错的方式。启用网卡可以这样操作nmcli device connect ens160然后设置自动获取IPnmcli connection modify ens160 ipv4.method auto nmcli connection up ens160但如果要设成固定的静态IP这就要重点讲一下了。热搜词里“rocky linux设置静态ip”出现频率很高确实是个高频需求。步骤如下# 把ens160改成你实际的网卡名 nmcli connection modify ens160 ipv4.addresses 192.168.10.100/24 nmcli connection modify ens160 ipv4.gateway 192.168.10.2 nmcli connection modify ens160 ipv4.dns 192.168.10.2 nmcli connection modify ens160 ipv4.method manual nmcli connection up ens160这里网关地址要和你VMware NAT模式里配置的网关一致。怎么看NAT网关打开VMware菜单栏的“编辑-虚拟网络编辑器”选中VMnet8点“NAT设置”里面会显示网关IP一般是192.168.x.2这样的地址。新手最容易犯的错误就是随意填网关填错了网络自然不通。配置完用ip addr确认IP已生效再ping一下网关和公网地址逐层排查。先通了网关再通外网能很快定位问题出在哪一层。2.3 root用户登录与SSH远程访问配置纯命令行系统每次都在VMware控制台敲命令也能用但很多时候我们已经习惯了用Xshell、FinalShell这些工具远程连接。这里就涉及一个热搜里出现很多次的问题“rocky 安装root连接不上”。其实root连接不上大多数情况下不是密码错了而是SSH服务默认禁止root远程登录。CentOS时代默认允许但Rocky Linux出于安全考虑默认配置比较严格。解决办法如下。先确保SSH服务在运行systemctl status sshd systemctl enable --now sshd然后编辑SSH配置文件vi /etc/ssh/sshd_config找到这一行#PermitRootLogin prohibit-password改成PermitRootLogin yes保存后重启SSH服务systemctl restart sshd再用Xshell连接IP填刚才设置的静态IP端口22用户root密码是对应的root密码正常情况下就能连上了。不过我这里还是要多一句嘴允许root远程登录在学习环境里没问题生产环境建议不要开root直连创建普通用户然后sudo才是更稳妥的做法。3. 新手必过目录结构、常用命令与软件安装3.1 Linux目录结构是理解一切的地图如果说Windows拿盘符组织文件那Linux就是从根目录/开始的一棵大树。零基础学Linux我觉得第一课就是把这棵树看懂。因为后面所有软件安装、日志排查、配置修改都离不开目录基础。简单列一下几个必须认识的目录。/etc保存系统和服务配置文件比如SSH配置就在/etc/ssh/sshd_config。/usr是系统软件安装的地方类似Windows的Program Files。/var保存经常变化的文件比如日志在/var/logWeb网站文件默认在/var/www。/home是普通用户的家目录。/tmp是临时文件目录。/opt是一些第三方商业软件推荐的安装目录。举个例子就明白了。有朋友从Windows转过来之后一上来就习惯性问“JDK要装在哪个盘里”实际上在Linux里思考方式是“这台机器用哪个目录承载应用”。JDK装在/usr/local/java或者/opt/java都可以关键是你知道它在哪里、启动脚本里指向哪里就行。目录结构不用背但要对“系统文件放哪、用户文件放哪、临时文件放哪”有清晰的概念排查问题的时候思路会顺畅得多。3.2 高频命令速查给零基础准备的常用命令Linux命令行第一天接触会觉得恐怖但拆开看其实常用的就二三十个。我把团队新人培训时必须掌握的命令整理成了几组都是日常最高频的。第一组是文件和目录操作。pwd看当前路径ls -l列出文件详情cd切换目录cp复制mv移动或重命名rm删除mkdir -p递归创建目录touch创建空白文件。这一组就是Linux的“文件和资源管理器”。第二组是查看和编辑。cat直接显示整个文件less分页查看大文件tail -f动态跟踪日志输出这个在看服务日志时特别常用。编辑器方面推荐vim入门阶段会i进入编辑、Esc退出编辑、:wq保存退出这三招就够用了。第三组是权限和用户。chmod修改权限chown修改属主。零基础刚接触权限系统的时候可以这样理解Linux每个文件同时记录了“属主权限、属组权限、其他人权限”三组设置每组有读r、写w、执行x三种权限用数字表示就是r4、w2、x1所以chmod 755意思是属主可读写执行属组和其他人可读可执行。这个知识点面试也经常考。第四组是网络和服务。ip addr看IPping测连通性ss -lntp查监听端口systemctl start/stop/restart/status/ enable管理服务。配合journalctl -u 服务名查看服务日志排错能力立刻上一个台阶。还有一个很实用的是grep命令在文件里搜索关键词比如在日志里找错信息grep -i error /var/log/messages | tail -50。另外解压文件遇到乱码的问题也会经常碰到后面我单独说。3.3 用dnf解决软件安装JDK和Python实操包管理器是Linux下安装软件最省心的一条路。在Rocky Linux上命令是dnf用起来和CentOS时代的yum基本一样。以装JDK为例先搜索仓库里有哪些Java版本dnf search openjdk然后安装JDK 17这是目前比较主流的长线版本dnf install -y java-17-openjdk java-17-openjdk-devel装完验证java -version javac -version整个过程就是这三条命令的事不用手动配环境变量因为包管理器已经把路径都处理好了。很多新手在网上找“linux安装jdk”看到一堆手动下载tar包、解压、配/etc/profile的教程其实在Rocky上用dnf安装是最省事的而且以后更新也方便一条dnf update就搞定。Python的情况稍微有点不同。Rocky Linux 9自带的Python版本是3.9如果你只是写写脚本、跑跑自动化那系统自带版本完全够用。直接用dnf install -y python3装就完了。但如果你要用到新版Python的特性或者说需要3.10以上版本那就需要额外处理。这里我不建议新手用源码编译安装Python虽然教程铺天盖地但编译过程耗时长而且依赖一缺就报错对零基础很不友好。我推荐用第三方仓库的方式比如Rocky的CRB仓库或者EPEL仓库。开启EPEL仓库dnf install -y epel-release也把CRB开一下Rocky 9里有时需要这个dnf config-manager --set-enabled crb然后安装Python 3.11dnf install -y python3.11 python3.11 --version这样装完的Python是经过仓库维护者预编译和打包的稳定性比源码编译靠谱系统更新时也能同步升级。4. 防火墙、服务与开发环境配置实战4.1 防火墙开放端口与常见服务配置Rocky Linux默认开启了firewalld防火墙这对刚装了Redis、Nginx这类服务的新手来说是一个很容易忽略的坑。服务明明起来了但外部就是连不上十有八九是防火墙没放行对应端口。我以Redis为例走一遍流程。安装Redisdnf install -y redis启动并设置开机自启systemctl enable --now redis默认情况下Redis监听在127.0.0.1要允许外部访问得修改配置文件vim /etc/redis/redis.conf找到bind 127.0.0.1如果确认自己网络环境安全可以改成0.0.0.0或者指定具体的IP。再设置一个密码找到# requirepass foobared改成requirepass 你的密码。改完重启Redissystemctl restart redis然后防火墙放行6379端口这一步非常关键firewall-cmd --zonepublic --add-port6379/tcp --permanent firewall-cmd --reload验证端口是否已经放行firewall-cmd --list-ports这里出现了一个很多新手都搜过的关键词“centos防火墙开放tcp端口配置文件”。其实用firewall-cmd命令就已经落盘到配置了不是临时生效。如果你执意想直接改配置文件路径是/etc/firewalld/zones/public.xml打开后可以看到刚才添加的端口配置。但我更推荐命令行操作不容易出错。另外还有一个让人容易忽略的坑就是SELinux。很多CentOS用户为了省事直接关掉SELinux但在生产环境我建议保持Enforcing状态。如果遇到“权限不足但权限看起来没问题”的诡异情况先看SELinux的审计日志grep denied /var/log/audit/audit.log | tail -20然后用semanage port -a -t redis_port_t -p tcp 6379这类命令把对应端口加到SELinux策略里而不是粗暴地关闭SELinux。4.2 DNS配置遇到的坑网络配置里另一个高频问题就是DNS。很多人在热搜里搜“linux中配置dns出现的问题”我直接说结论Rocky Linux 9上不要再按老方法直接改/etc/resolv.conf了。原因在于NetworkManager接管了DNS配置你即使手动改了/etc/resolv.conf重启网络服务或者重连网卡之后文件会被自动覆盖回原样。所以正确做法是继续用nmcli配置DNS也就是我前面讲静态IP时提到的nmcli connection modify ens160 ipv4.dns 223.5.5.5 119.29.29.29 nmcli connection up ens160这里的223.5.5.5是阿里DNS119.29.29.29是腾讯DNS国内访问速度都不错。配完用cat /etc/resolv.conf看一眼确认已经写入。还有一种情况是系统用systemd-resolved服务管理DNS配置文件路径变成了/etc/systemd/resolved.conf。如果你发现/etc/resolv.conf被符号链接到了/run/systemd/resolve/目录下说明当前就是systemd-resolved在管理。这种情况下改DNS的思路要调整为修改/etc/systemd/resolved.conf然后重启这个服务。我自己的排查习惯是这样先看/etc/resolv.conf指向哪再看NetworkManager是否接管用nmcli dev show ens160 | grep DNS看实际生效的DNS最后才动手改。按照这个顺序90%的DNS问题都能定位清楚。4.3 LibreOffice等办公软件的安装示例有些场景下你得在Linux服务器或者桌面环境里装办公软件比如内网环境要求转PDF、跑文档转换服务。热搜里有一条“rocky linux安装libreoffice_7.4.7.2_linux_x86-64_rpm”正好是个典型例子。LibreOffice官网提供rpm包下载下来之后安装流程一般是# 解压下载好的rpm包集合 tar -xvf LibreOffice_7.4.7.2_Linux_x86-64_rpm.tar.gz cd LibreOffice_7.4.7.2_Linux_x86-64_rpm/RPMS/ dnf install -y *.rpm这种方式适合离线环境但要注意依赖问题。如果提示缺依赖那就先配好EPEL仓库再装EPEL里有不少LibreOffice的依赖包。装完验证一下libreoffice --version另外在Minimal系统上跑LibreOffice命令行转换功能建议加--headless参数也就是无界面模式。比如把docx转pdflibreoffice --headless --convert-to pdf /path/to/file.docx这个命令在服务器上跑文档自动化时特别好用。不过有一点要注意Minimal系统有时候缺少字体转换出来的PDF中文可能会显示成方块需要提前安装wqy-microhei-fonts或wqy-zenhei-fonts这类中文字体包。5. 常见问题排查与避坑实录5.1 root连不上SSH原因可能不止一种前面提到了root远程连接需要改sshd_config但实际工作中你会发现“连不上”这件事可能是多种原因叠加的。我整理一个排查顺序给你遇到问题按这个顺序检查效率最高。第一步先确认网络通不通。在宿主机上ping你的虚拟机IP如果ping不通问题在网络层回到配置静态IP那一步重查。第二步确认SSH服务有没有监听。在虚拟机上执行ss -lntp | grep 22如果没有输出说明sshd没起来。第三步确认防火墙放行了22端口。第四步才是看/etc/ssh/sshd_config里的PermitRootLogin配置。第五步如果前四步都正常还连不上看/var/log/secure日志里面有SSH登录的具体拒绝原因。这套顺序可以帮你把“网络层-服务层-防火墙层-配置层”全部过一遍而不是一上来就乱改配置越改越乱。5.2 磁盘扩容与空间不足处理装完系统并配置好了环境实际用一段时间后会发现根目录空间开始紧张。热搜里“centos扩容”、“虚拟机硬盘扩容”这类词热度不减说明这是大家都躲不开的问题。在VMware里扩容的完整思路是先加硬盘空间再扩展LVM逻辑卷。具体步骤如下。第一步VMware设置里把虚拟机的硬盘从40GB扩展到80GB。第二步进系统看新空间有没有被识别出来执行fdisk -l确认磁盘大小已经变化。第三步用growpart /dev/sda 3扩展分区注意这个分区号是安装时手动分区自动生成的不同机器可能不同先用lsblk确认你根目录所在的分区号。第四步用pvresize扩展物理卷pvresize /dev/sda3然后扩展逻辑卷lvextend -l 100%FREE /dev/mapper/rl-root最后一步扩展文件系统。Rocky 9默认是xfs格式xfs的特点是不能缩小只能扩容扩容命令是xfs_growfs /执行完用df -h看一眼根目录空间已经变大了。整个过程如果之前用了LVM就会非常丝滑。如果你在装系统时贪方便选了“自动分区”扩容时可能遇到boot分区大小写、LVM卷组命名等问题所以我一直强调手动分区并启用LVM。5.3 解压文件乱码与编码问题这个话题是很多人没预料到的坑。在Windows上下载的zip包里面如果有中文文件名传到Linux下用unzip解压出来经常是乱码。原因是Windows用的编码是GBK而Linux默认使用UTF-8。解决方案有几个。最简单的安装unzip并利用-O参数指定编码unzip -O gbk 文件名.zip如果你的unzip版本不支持-O参数可以用Python解压import zipfile with zipfile.ZipFile(文件名.zip) as z: for name in z.namelist(): z.extract(name, path.)或者在Windows端解压好之后用tar重新打包再传到Linux上因为tar格式对文件名编码的处理通常更干净。这个问题的本质是编码转换理解了这一点你在处理其他编码问题时思路也清晰。5.4 WSL删除文件后空间没释放的延伸提醒有些朋友在Windows上用的是WSL跑Linux这个我也不多展开但有个问题既然高频出现就顺手说一句“wsl linux删除文件后空间没释放”。这其实是虚拟磁盘文件vhd不会自动收缩导致的删除的文件空间回到WSL内部的空闲空间但宿主机的vhd文件还是那么大。解决办法是在PowerShell里执行wsl --shutdown然后以管理员身份运行diskpart选择对应的ext4.vhdx文件执行compact vdiskfile路径。这个操作会压缩虚拟磁盘释放被占用的空间。不过这是WSL环境的操作如果你主要用虚拟机学习重点还是参考前面的LVM扩容方案。5.5 忘记登录密码怎么办最后说一个每个人都可能遇到的尴尬场景密码忘了。虽然重置密码的方法很多教程讲过但还是要强调一下适用场景和边界。如果你手头有VMware的控制台权限重启虚拟机在GRUB引导菜单出现时按e进入编辑模式找到linux开头的那一行在末尾加上rd.break然后按CtrlX启动。进入emergency模式后依次执行mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot用这个方法可以把root密码重置为新的。需要注意这要求你物理能接触到机器或者有虚拟机的控制台访问权限。如果你连系统都进不去而且没有控制台权限那就只有重装系统一条路了。所以密码安全这块我建议平时养成习惯root密码复杂度要够但一定要有记录方式比如放在密码管理器里不要随意写在便利贴上。结尾这套从CentOS切换到Rocky Linux的流程我在自己环境和带新人过程中反复验证过很多次整体感受就是“迁移成本比想象中低很多”。CentOS积累的操作习惯到了Rocky上几乎可以无缝保留而系统层面的稳定性、软件仓库的新鲜度、社区支持力度都让我觉得这是一条值得长期走的路。最后分享几个我自己长期积累的小习惯装完系统第一件事做一次虚拟机快照这个习惯至少能救你好几次配置任何文件之前先备份原文件比如cp xxx.conf xxx.conf.bak出问题可以秒回滚养成看日志的习惯很多问题不是玄学日志里都有答案官方文档和镜像站永远比来路不明的第三方教程靠谱。另外建议零基础的朋友不要光看不练跟着这篇文章从头到尾装一遍再自己折腾几次网络配置和软件安装遇到报错就试着看日志、查命令、问社区这个过程本身比任何教程都值钱。Linux这条路没什么捷径但方向对了坚持操作成为高手只是时间问题。
返回列表