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

资讯详情

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

CentOS迁移指南:从零上手Rocky Linux的完整学习路线

CentOS迁移指南:从零上手Rocky Linux的完整学习路线 如果你手上还压着一批CentOS服务器或者刚准备入坑Linux正愁不知道该从哪个发行版开始最近半年你多半被同一个问题反复折腾过CentOS到底还能不能用以后换什么作为一个把CentOS 6用到EOL、又一路跟进7、8最后转到Rocky的老用户我可以直接给你结论——新项目、新学习、新迁移现在起步直接选Rocky Linux几乎就是原来CentOS的无缝转世。这篇文章就是把我自己从零开始折腾Rocky、把原来CentOS上的活儿全部迁过来的过程梳理一遍相当于一套完整的学习路线图适合零基础入门、也适合老CentOS用户找迁移手感的读者。我会按照先搞懂为什么换 → 再搭环境 → 再装系统 → 再做初始化配置 → 再上手常用命令 → 再部署真实服务 → 最后进阶排错的顺序来讲每段都会把我自己踩过的坑、验证过的方案、以及一些官方文档里不会写明白的取舍逻辑说清楚。1. CentOS谢幕之后为什么是Rocky而不是别的先把背景交代清楚。CentOS Linux 8在2021年底就停止了维护CentOS 7也在2024年6月底全面EOL这意味着一大批依赖CentOS的生产环境突然变成了没有官方安全更新的状态。对于企业用户来说这是一条很现实的安全红线对个人学习和练手来说继续抱着EOL版本学也不是不行但学到的东西容易过时新工具、新内核特性都跟不上了。这个时间节点上市面上主要的替代品其实有两条路线一条是Ubuntu/Debian系列另一条是RHEL兼容系包括Rocky Linux、AlmaLinux以及原厂RHEL开发者订阅。Ubuntu很优秀但如果你原来就是CentOS用户或者公司内部大量脚本、文档基于RHEL系编写直接切换到Ubuntu的代价不小——包管理器从yum/dnf变成apt防火墙从firewalld变成ufwSELinux的默认策略也不同这些迁移成本都是实打实的工时。而Rocky Linux的定位很明确与RHEL保持高度兼容编译自同一份上游源码保留了yum/dnf、firewalld、SELinux这些CentOS用户已经熟悉的技术栈。也就是说CentOS上的知识迁移到Rocky之后几乎可以继续复用这对替换CentOS这个核心诉求来说是最省力的选择。至于Rocky和AlmaLinux怎么选两者都是很靠谱的RHEL重编译版本差异更多体现在社区治理和发布节奏上。Rocky由Greg Kurtzer发起他本人是CentOS的创始人之一这类原班人马做继承者的背景决策加分AlmaLinux则背靠CloudLinux公司。我自己的判断标准很简单看社区活跃度、看第三方软件源的兼容性、看周边文档的丰富程度。当前阶段Rocky的文档、教程、云镜像覆盖都做得比较充分所以最后选了Rocky。注意如果你只是想随便玩玩Linux不想折腾企业级这套那Ubuntu完全够用但如果你带着替换CentOS做正经事的目标Rocky是贴合度最高的默认选项没有之一。2. 零基础怎么搭一套能一直用下去的学习环境很多人一上来就想装双系统或者直接拿物理服务器折腾我建议零基础阶段别这么干。物理机装Linux一旦分区搞错、引导搞坏你可能连原来的Windows都进不去这种挫败感足以劝退大半新手。最稳妥的学习路径是先装虚拟机把环境隔离出来随便折腾、随便快照、搞崩了恢复就完事。2.1 虚拟化软件选哪个主流选择是VMware Workstation Pro和VirtualBox。VMware Workstation在兼容性、3D支持、网络模式灵活性上更强而且从2024年开始对个人用户免费官方下载门槛不高。VirtualBox同样免费开源跨平台支持好但遇到高版本内核的客户机偶尔会出现增强功能装不上、共享文件夹挂载失败的小毛病。我自己实际使用下来如果宿主机是WindowsVMware的体验更省心如果宿主是macOS或者Linux桌面VirtualBox或VMware都可以看习惯。2.2 VMware里建虚拟机的基本参数参考以下是我基于Rocky 9系列多次安装实践后觉得比较稳的参数组合适合做学习环境也可以作为小规模实验环境的底子配置项推荐值说明客户机操作系统Red Hat Enterprise Linux 8/9VMware里选RHEL因为Rocky兼容RHELCPU2核跑编译、跑KVM都够用再多就浪费了内存4GB最小2GB能跑起来但装带图形界面的版本会卡磁盘40GB~60GB别给20GB装几个软件、做快照之后很容易撑满网络NAT模式新手阶段NAT最稳以后要练桥接再切2.3 Minimal版和DVD/Everything版怎么选Rocky官方镜像分为Minimal、DVD、Everything、Boot等几种。Minimal是最小化安装只有命令行没有图形界面体积大概2GB左右适合服务器方向的练手也是更贴近生产环境的起点。DVD版包含常用软件包和图形界面体积较大适合想直接看到桌面效果的初学者。零基础入门我反而推荐先用Minimal版命令行的学习曲线虽然陡但能迫使你去理解Linux的核心机制而不是点鼠标点过去。我下载镜像的习惯是去清华TUNA镜像站或者Rocky官方镜像列表不推荐去不知名第三方站点下ISO一个是镜像可能被篡改另一个是下载速度没保证。搜rocky linux 下载大概率会出来一堆镜像站点直接认准权威源就好。3. 安装Rocky的全过程以及root连不上这类经典问题镜像准备好、虚拟机建好后启动虚拟机就会进入Rocky的安装界面。这里把安装流程和几个容易卡住的点讲清楚。3.1 安装界面基础操作流程Rocky 9的安装界面和CentOS 8基本同源第一步会要你选择Install Rocky Linux 9.x然后选择语言。语言建议选English因为后续终端命令、报错信息都是英文熟悉英文界面能少踩一层壳当然你选中文界面也完全能装完只是后面碰到问题去搜资料时英文关键词命中率更高。接下来的关键配置项有这些Installation Destination安装目的地选择虚拟机磁盘新手直接点Done用自动分区即可。自动分区默认会创建LVM逻辑卷未来扩容方便这一点后文会展开讲。Software Selection软件选择如果选了Minimal镜像这里基本不用动如果选的是DVD镜像可以选择Server with GUI来带桌面。Root Password根密码必须设置安装界面里如果设置的密码强度不够需要点两次Done确认。User Creation创建用户建议创建一个普通用户并勾选Make this user administrator日常用普通用户登录需要提权时用sudo长期保持root直接登录的习惯非常危险。全部配置完成后点击Begin Installation安装过程一般5~15分钟取决于磁盘和内存性能。装完重启系统会引导进入Rocky的GRUB菜单第一次登录用你创建的普通用户和密码。3.2 搞不定的root登录被拒绝这是新手遇到频率最高的一个问题我见到的最典型场景是系统装完了SSH也开了但在Windows上用Xshell或PuTTY连接时root账号怎么都登不进去提示Permission denied而普通用户却能正常登录。这个问题的根因几乎都是SSH服务的配置默认值导致的。RHEL系从7.4开始新安装的系统里/etc/ssh/sshd_config默认禁止root用户通过密码登录具体是这两行PermitRootLogin no PasswordAuthentication no有些版本默认是prohibit-password效果类似允许密钥登录但不允许密码登录。解决方法是在服务器本地用普通用户登录执行sudo vi /etc/ssh/sshd_config找到PermitRootLogin改成yes只建议在明确可控的学习环境中这样做生产环境更推荐用普通用户加sudo或者配置密钥登录然后重启SSH服务sudo systemctl restart sshd再回到Windows上连接root基本就能登进去了。经验我在帮别人排查这类问题时发现很多人改完配置忘记重启服务或者SELinux阻止了SSH访问某个端口。改完文件后先sshd -t检查语法再重启能省不少排查时间。3.3 安装完没法上网常见原因和处理Minimal版安装后如果发现ping baidu.com不通先不要慌按顺序排查。第一步看网卡是否被激活ip addr查看是否有IP地址。如果只有127.0.0.1这样的回环地址而不见对外网卡说明NetworkManager没有正常接管网卡或者网卡没连上。执行sudo nmcli device status sudo nmcli device connect ens33如果网卡名不一样以ip addr看到的实际名字为准。还有一种情况是虚拟机网络模式问题VMware的NAT模式偶尔会因为宿主机防火墙拦截而导致虚拟机没有外网把NAT服务在VMware里重启一次即可。另外如果手动修改过/etc/sysconfig/network-scripts/ifcfg-*文件把ONBOOTno改成yes后记得执行sudo nmcli connection up 连接名让他重新加载。4. 装完系统后第一个必做的优化配置静态IP服务器是需要稳定IP的DHCP分配的地址一旦变化SSH连接、Nginx代理、数据库远程访问全都会乱套。所以装完系统后第一件事就是把IP固化下来。4.1 查看当前的网络接口与连接名先用nmcli查看当前系统的网络状态ip addr nmcli connection show比如看到连接名为ens160IP是192.168.1.100网关192.168.1.1。接下来有两种改法推荐用nmcli命令行直接改另一种是编辑配置文件。4.2 用nmcli配置静态IPsudo nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 223.5.5.5 114.114.114.114 sudo nmcli connection up ens160第一行把连接改成手动配置并指定IP、掩码、网关、DNS。第二行是使配置生效。然后ip addr复查一下再ping一下网关和外网通了就说明配置成功。这套命令比vi编辑器改配置文件更不容易出错因为nmcli会校验语法和依赖关系。4.3 配置文件方式与注意点如果你更习惯直接改文件Rocky 9里网卡配置文件一般位于/etc/NetworkManager/system-connections/目录下RHEL 9开始不再默认使用/etc/sysconfig/network-scripts/这点和CentOS 7很不一样别用旧思路去找了。文件名类似ens160.nmconnection修改方式大致如下[ipv4] methodmanual address1192.168.1.100/24 gateway192.168.1.1 dns223.5.5.5;114.114.114.114;注意这个格式里DNS用分号分隔。改完后执行sudo nmcli connection reload sudo nmcli connection up ens160提示Rocky 8还用老的/etc/sysconfig/network-scripts/方式Rocky 9则全面切到NetworkManager集中管理。搜资料时看到2018年以前的博客教程大概率是针对CentOS 7/RHEL 7的千万别直接照着抄。4.4 DNS配置踩坑记录热搜词里有linux中配置dns出现的问题我也踩过。常见表现是IP能ping通、网关也通、但域名解析不了ping baidu.com报Name or service not known。这时候cat /etc/resolv.conf如果里面内容是空的或者指向的DNS服务器根本不通就说明NetworkManager没有把DNS下发下来。解决方式是确保nmcli配置里的ipv4.dns写对了并用ipv4.ignore-auto-dns yes防止DHCP覆盖自定义DNSsudo nmcli connection modify ens160 ipv4.ignore-auto-dns yes如果服务器只能用内网DNS那就把内网DNS服务器地址填进去别依赖公网。还需要注意/etc/resolv.conf现在往往是指向/run/NetworkManager/resolv.conf的软链接直接在/etc/resolv.conf里写DNS过一段时间可能被NetworkManager覆盖这又是一个经典坑。5. 入门阶段的命令体系照着敲就够了标题叫零基础入门到高手命令这部分是地基。但我不建议你拿着一本几百页的命令大全从头背到尾——大多数命令你一辈子都用不上几次。更合理的方式是掌握一套高频命令矩阵用到什么查什么查多了自然就记住了。5.1 按场景划分的核心命令表下面这个表是我给同事做内部培训时整理的覆盖了日常使用频率最高、最核心的操作场景场景命令示例作用文件操作ls, cd, cp, mv, rm, find, tar浏览、复制、移动、删除、查找、解压文本处理cat, less, tail, grep, sed, awk, vi/vim查看日志、过滤关键字、批量替换权限管理chmod, chown, usermod, groupadd改权限、改归属、管理用户组进程管理ps, top, kill, pstree查看进程、查看负载、结束进程系统服务systemctl start/stop/status/enable管理systemd服务网络排查ip, ping, ss, netstat, curl, nmcli看IP、测连通、看端口、测接口包管理dnf install/search/remove安装、搜索、删除软件包日志查看journalctl -xe, journalctl -f查看系统日志、追踪实时日志这些命令不是要求全会但cd/ls/cp/mv/rm、vi、systemctl、dnf、tail这7个是无论如何都要滚瓜烂熟的。5.2 dnf包管理比yum好用在哪里Rocky 8开始yum命令底层由dnf驱动到了Rocky 9dnf就是正牌主力yum只是兼容入口。dnf支持更快的元数据解析、依赖自动补齐、事务回滚以及dnf history查看历史操作记录。查看软件包信息、安装指定版本、查看文件属于哪个包日常用这几个就够sudo dnf install 包名 sudo dnf search 关键词 sudo dnf info 包名 sudo dnf provides /path/to/file sudo dnf historyprovides是排查依赖问题时的神器。比如某个命令提示command not found但你又不确定它在哪个包里就用dnf provides查一下比去百度硬搜高效得多。5.3 日志排查的思维习惯入门阶段很多人不会看日志出了问题就两眼一抹黑。我建议从第一天起就养成先看日志再提问的习惯。系统运行的关键日志在/var/log/messages用户层面的操作记录在/var/log/secure服务启动失败用journalctl -u 服务名查看特定单元的完整日志。可以理解为日志就是系统的行车记录仪看懂它你才不会被报错牵着鼻子走。6. 生产级软件部署实战JDK、Python、LibreOffice的安装思路替换CentOS最终还是要落到能装软件、能跑项目上。这一节就挑几个热搜里最典型的软件安装需求讲讲在Rocky上的正确打开方式。6.1 用dnf装JDKJava环境在CentOS时期最流行的装法是去Oracle官网下载tar.gz包然后手动解压配环境变量。在Rocky上我更推荐用OpenJDK一条命令搞定后续升级也方便sudo dnf install java-17-openjdk java-17-openjdk-devel装完用java -version验证。如果你确实需要Oracle JDK或者某个特定版本再手动解压到/usr/local/java然后写/etc/profile.d/java.sh配置JAVA_HOME和PATH。需要注意不要直接用vi /etc/profile去改全局环境变量正确做法是在/etc/profile.d/下新建一个脚本逻辑清晰、升级系统也不会被覆盖。6.2 Python的安装和虚拟环境隔离Rocky 9自带Python 3.9如果只做脚本开发够用。但如果你需要Python 3.11/3.12dnf仓库里可能没有较新版本这时候可以选择编译安装或者用源代码包。编译安装流程大概是wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz tar -xzf Python-3.11.9.tgz cd Python-3.11.9 ./configure --enable-optimizations make -j$(nproc) sudo make altinstall先装依赖sudo dnf install gcc openssl-devel bzip2-devel libffi-devel不然编译到一半会报缺失头文件的错。altinstall这个参数很关键它不会覆盖系统自带python3命令安装后二进制名是python3.11避免搞坏系统工具链。另外一点建议无论用哪个Python版本都养成用虚拟环境的习惯。项目一多你就知道全局环境装得乱七八糟的包迟早会互相打架。python3 -m venv /path/to/venv source /path/to/venv/bin/activate这套流程必须烂熟。6.3 给Minimal版装LibreOffice热搜里有rocky linux安装libreoffice_7.4.7.2_linux_x86-64_rpm说明不少人想在无桌面的Minimal服务器上装办公套件做文档处理。这里有个非常关键的技术点LibreOffice的RPM包依赖大量图形库和字体Minimal版默认不带这些依赖直接rpm -ivh会报一堆依赖缺失。解决办法不是去一个个手动满足依赖而是直接用dnf装对应桌面组件sudo dnf groupinstall Fonts sudo dnf install libreoffice或者先去官网下载RPM包集合然后用sudo dnf localinstall *.rpm而不是rpm -ivh。dnf localinstall会自动解析并解决仓库内可用的依赖。这个过程说白了就是别把dnf当摆设让包管理器替你干脏活。6.4 MySQL的安装要分清楚社区版和发行版仓库MySQL在Rocky上的装法比CentOS 7时代清晰不少。CentOS 7默认软件的mysql还是MariaDB很多人为此折腾过。Rocky 9同样默认走MariaDB但如果你明确要装Oracle MySQL就去MySQL官方Yum仓库sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm sudo dnf install mysql-community-server装完后sudo systemctl enable --now mysqld初始临时密码在/var/log/mysqld.log里通过grep temporary password查看。修改root密码后再创建专用业务账号不要直接拿root跑业务连接。7. 从入门到高手的进阶路线磁盘扩容、KVM、安全加固和面试考点说完了入门侧的内容最后聊聊进阶方向。这个标题挂着到高手其实真正区分会用和高手的是排错能力和对整个系统运行机制的理解而不是记住了多少命令。7.1 磁盘扩容真正理解LVM的价值CentOS/Rocky自动分区时默认创建的LVM逻辑卷是未来扩容的最大功臣。当磁盘空间不足时扩容步骤是先在虚拟层面给磁盘加空间如VMware里增大磁盘然后在系统里执行lsblk查看新空间对应的物理卷再用vgextend把物理卷加入卷组最后lvextend扩展逻辑卷并使用xfs_growfs或resize2fs让文件系统感知新空间sudo pvresize /dev/sda sudo lvextend -l 100%FREE /dev/mapper/rl-root sudo xfs_growfs /如果当初用的是普通分区而不是LVM扩容就得靠fdisk重建分区麻烦很多这也是官方默认LVM的合理性所在。7.2 在Rocky上部署KVM做虚拟化Rocky作为服务器跑KVM虚拟化非常成熟。安装基础包和工具链sudo dnf install qemu-kvm libvirt virt-install bridge-utils sudo systemctl enable --now libvirtd sudo usermod -aG libvirt $(whoami)创建虚拟机用virt-install一行起一个实例也支持通过virt-manager图形化管理。在这一步新手最容易踩的坑是嵌套虚拟化没有打开。如果你本身就是在虚拟机里装的Rocky需要先在VMware/VirtualBox里开启虚拟化Intel VT-x/EPT或AMD-V/RVI选项否则KVM会报kvm: disabled by bios机器起不来。7.3 安全加固的几条基本纪律Linux提权经常被讨论但从防御者角度说加固远比攻击花样重要。我的建议是至少做到这几条定期打补丁dnf update禁止root直接SSH远程登录普通用户精确授权别随手给sudo ALL防火墙按需放行端口别直接firewall-cmd --add-port80/tcp后忘了永久化要加--permanent并--reload对于SELinux不要一到报错就setenforce 0先看/var/log/audit/audit.log里的AVC拒绝记录往往是一个布尔值或上下文的问题用ausearch或sealert能查得很清楚。7.4 面试常考的那些点学Linux时可以顺便积累Linux运维或开发岗位面试经常考察网络模型、进程状态、内存缓存机制、systemd依赖关系、软链接和硬链接的区别等。我个人的看法是不用为了面试刻意背题而是把这些概念对应到实际操作中去理解。比如你配置完静态IP后理解了网关和DNS的作用这就是网络常识你处理过systemd服务起不来之后理解了Wants和Requires这就是systemd的知识点。动手做一遍比背十遍定义都管用。最后说点实在的折腾完这套从CentOS到Rocky的迁移流程我最大的体会是选择发行版这件事不用追求最流行而要追求最贴合自己的上下文。Rocky对我来说就是这样一个存在——它没有CentOS的停更焦虑但它保留了我过去十年积累的操作习惯和脚本资产迁移成本低到可以忽略。你想从零学Linux也好想把公司老服务器换血也罢从Rocky入手是一条稳妥路线。真遇到解决不了的问题就用dnf provides追依赖、用journalctl看日志、用ss查端口把这三个工具用顺你就已经比很多只会复制粘贴的人强了。
返回列表