CentOS 迁移 Ubuntu 24.04 LTS 完整运维指南
面向习惯 CentOS 运维人员,从 RHEL 系平滑切换到 Debian 系 Ubuntu24.04 服务器,包含系统差异对照表、实操命令、踩坑点、课后实操练习,适合博客发布。
前言
CentOS 属于 RHEL 生态,大量传统企业使用;随着 CentOS7 停止维护、CentOS8 停止支持,很多运维人员需要迁移到 Ubuntu 24.04 LTS 长期支持版本。 两者底层都使用systemd管理服务,systemctl 命令语法完全通用,但包管理器、防火墙、网络配置、账号策略、配置文件路径差异巨大,也是迁移主要工作量所在Ubuntu。
- CentOS (RHEL 系):
yum/dnf + rpm,默认 firewalld、SELinux 开启,root 可直接登录,软件版本保守。 - Ubuntu24.04 (Debian 系):
apt + deb,默认 ufw 防火墙,SELinux 关闭,root 默认无密码,依靠sudo提权,软件版本更新快,适合云主机、容器、开发环境。
一、三大系统核心对比总表
表格
| 对比项 | CentOS7 | CentOS Stream9 | Ubuntu 24.04 LTS |
|---|---|---|---|
| 发行体系 | RHEL 系 | RHEL 系 | Debian 系 |
| 包管理器 | yum | dnf | apt |
| 软件包格式 | .rpm |
.rpm |
.deb |
| 软件源路径 | /etc/yum.repos.d/*.repo |
/etc/yum.repos.d/*.repo |
/etc/apt/sources.list、/etc/apt/sources.list.d/*.list |
| 防火墙 | firewalld | firewalld | ufw(默认关闭) |
| SELinux | 默认开启 | 默认开启 | 默认关闭,绝大多数场景无需配置 |
| root 账号策略 | 安装可设置 root 密码,支持直接登录 root | 安装可设置 root 密码,支持直接登录 root | root 默认无密码,禁止直接登录;管理操作使用sudo提权 |
| 服务管理 | systemd | systemd | systemd |
| MySQL 服务名 | mysqld | mysqld | mysql |
| MySQL 主配置文件 | /etc/my.cnf |
/etc/my.cnf |
/etc/mysql/mysql.conf.d/mysqld.cnf |
| 版本特点 | 稳定保守,软件版本偏低 | 滚动更新,介于稳定和新特性之间 | 版本较新,LTS 提供 5 年官方长期支持 |
| 典型场景 | 传统企业业务 | 预发布、测试环境 | 开发、云服务器、Docker/K8s 容器环境 |
二、逐项详细讲解 + Ubuntu 实操命令
注意:Ubuntu 普通用户执行高权限命令,前面必须加
sudo。
1、软件包管理器差异(高频踩坑)
CentOS:
yum update同时刷新源缓存 + 升级软件; Ubuntu:apt update只刷新软件源索引,不会升级软件;apt upgrade才执行软件升级,这点很多老运维容易搞错。
bash
# 更新软件源缓存(只刷新索引,不升级软件)
sudo apt update
# 升级本机全部已安装软件
sudo apt upgrade -y
# 安装软件,示例nginx、mysql‑server
sudo apt install nginx mysql-server -y
# 卸载软件(保留配置文件)
sudo apt remove nginx -y
# 彻底卸载软件,同时删除配置文件
sudo apt purge nginx -y
# 搜索软件包
apt search redis
# 查看本机全部已安装deb包
dpkg -l
# 本地安装deb离线包
sudo dpkg -i xxx.deb
# dpkg缺失依赖时,自动修复依赖
sudo apt -f install
2、防火墙:firewalld 切换 ufw
CentOS 默认 firewalld;Ubuntu 使用 ufw,默认不开启防火墙,需要手动启用。
bash
# 安装ufw(部分最小化版本未预装)
sudo apt install ufw -y
# 查看防火墙状态
sudo ufw status
# 开启防火墙
sudo ufw enable
# 放行3306/tcp端口
sudo ufw allow 3306/tcp
# 放行80端口
sudo ufw allow 80/tcp
# 删除放行规则
sudo ufw delete allow 3306/tcp
# 关闭防火墙
sudo ufw disable
💡提示:ufw 修改规则即时生效,不需要像 firewalld 执行
reload。
3、SELinux 安全模块
- CentOS 默认开启 SELinux,经常拦截网站、数据库访问权限,排障经常需要处理;
- Ubuntu24.04 默认关闭 SELinux,绝大多数业务场景不需要考虑 SELinux 权限拦截问题。
bash
# 极少场景才需要安装selinux工具集
sudo apt install selinux-utils -y
# 查看selinux状态,Ubuntu默认输出 disabled
getenforce
4、root 账号权限策略
CentOS 安装系统时直接设置 root 密码,可以直接 su/ssh 登录 root 账号; Ubuntu root 默认没有密码,禁止直接登录,所有管理操作优先使用普通用户加sudo提权。
bash
# sudo执行root权限命令
sudo ls /root
# 手动设置root密码,启用root账号(不推荐生产环境)
sudo passwd root
# 切换root用户
su - root
# 查看当前登录用户
whoami
5、systemd 服务管理(语法通用,服务名称注意区分)
systemctl start/stop/restart/enable语法三个系统完全一样,但是服务名称、配置文件路径不一样 。 例如 MySQL:CentOS 叫mysqld,Ubuntu 叫mysql。
bash
# 查看mysql服务状态
sudo systemctl status mysql
# 重启mysql服务
sudo systemctl restart mysql
# 设置mysql开机自启
sudo systemctl enable mysql
# 停止nginx服务
sudo systemctl stop nginx
# 列出所有开机自启服务
systemctl list-unit-files --type=service
6、软件源配置文件
- CentOS 源:
/etc/yum.repos.d/*.repo - Ubuntu 主源:
/etc/apt/sources.list;第三方源统一放到/etc/apt/sources.list.d/*.list
bash
# 查看系统软件源
cat /etc/apt/sources.list
# 编辑源文件
sudo vim /etc/apt/sources.list
# 添加第三方源文件示例
sudo tee /etc/apt/sources.list.d/mysql.list
# 修改源之后必须刷新索引
sudo apt update
7、系统信息查看
bash
# 跨系统通用命令,CentOS/Ubuntu都支持
cat /etc/os-release
# Ubuntu专属查看系统版本
lsb_release -a
# 查看内核版本(通用)
uname -r
8、日志查看
日志都保存在/var/log目录,journalctl命令全系统通用;部分服务日志路径、文件名有差异。
bash
# 实时查看mysql错误日志
tail -f /var/log/mysql/error.log
# journalctl跟踪mysql服务日志(跨发行版通用)
journalctl -u mysql -f
# 实时查看系统全部日志
journalctl -f
9、网络管理:CentOS NetworkManager vs Ubuntu Netplan(迁移最大坑点)
CentOS7 支持
/etc/sysconfig/network‑scripts/ifcfg‑xxx脚本;CentOS Stream9 完全废弃 network‑scripts,只用 nmcli。 Ubuntu24.04 不再使用传统网卡脚本,采用 Netplan + YAML 配置文件 ,底层后端为 networkd/NetworkManager。 通用命令ip addr、ip route在 CentOS、Ubuntu 完全通用。
表格
| 对比项 | CentOS7 | CentOS Stream9 | Ubuntu24.04 LTS |
|---|---|---|---|
| 网络管理工具 | NetworkManager+network‑scripts | NetworkManager | Netplan 默认后端 networkd |
| 网卡配置文件 | /etc/sysconfig/network‑scripts/ifcfg‑xxx |
无 ifcfg 文件,nmcli 命令管理 | /etc/netplan/*.yaml |
| 配置语法 | shell 键值对 | nmcli 命令 | YAML(严格缩进,只能空格,禁止 Tab) |
| 查看网卡通用命令 | ip addr | ip addr | ip addr |
| 重启网络 | systemctl restart network / nmcli | nmcli | netplan apply |
⚠️重要坑:Ubuntu 没有
systemctl restart network这条服务!修改网络配置写完 yaml,执行netplan apply生效,不要去重启 network 服务。
Ubuntu 实操命令:
bash
# 1.查看网卡信息(跨系统通用)
ip addr
# 2.查看netplan配置文件名
ls /etc/netplan/
# 3.编辑netplan配置文件,一般文件名:00‑installer‑config.yaml
sudo vim /etc/netplan/00-installer-config.yaml
静态 IP yaml 模板(博客可直接复制,注意缩进,只能空格,禁止 Tab)
bash
network:
ethernets:
ens33: # 这里替换成你自己的网卡名称,ip a查询
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [223.5.5.5,114.114.114.114]
version: 2
# 4.修改配置后,应用网络配置,不中断现有连接(推荐)
sudo netplan apply
# 5.查看路由(通用)
ip route
# 6.临时添加静态路由(重启失效,跨系统通用)
sudo ip route add 10.0.0.0/24 via 192.168.1.1
# 7.临时关闭网卡
sudo ip link set ens33 down
# 8.临时启用网卡
sudo ip link set ens33 up
补充:Ubuntu24.04 默认不带
ifconfig命令,如果习惯 ifconfig,手动安装 net-tools 工具包
bash
sudo apt install net-tools -y
ifconfig
三、迁移高频踩坑小结
- Netplan yaml 缩进必须使用空格,绝对不能用 Tab,缩进错误直接网络失效,新手最高频问题。
- CentOS 习惯
systemctl restart network,Ubuntu 没有 network 服务,网络修改使用netplan apply。 - apt 命令区分
apt update(刷新缓存)和apt upgrade(升级软件),不要和 yum update 混淆。 - 防火墙:
firewall‑cmd→ufw,两套命令完全不一样。 - Ubuntu 默认关闭 SELinux,少一大类权限故障。
- 包管理:yum/dnf → apt;rpm → dpkg。
- 养成
sudo操作习惯,不建议直接登录 root 账号。 - 服务名称会变:如 mysqld(CentOS) → mysql(Ubuntu),写脚本迁移时注意修改。
四、课后实操作业(可用于练习测试)
适合做完理论之后动手实操巩固
- Ubuntu 执行
sudo apt update && sudo apt install nginx,ufw 放行 80 端口,浏览器访问 nginx 默认页面。 - 使用
systemctl status nginx查看 nginx 状态,设置 nginx 开机自启。 - 使用
lsb_release -a查看 Ubuntu 系统版本。 - 使用
ip a查看本机网卡,编辑 netplan yaml 配置静态 IP,执行netplan apply验证网络生效。 - 安装 net‑tools,使用 ifconfig 查看网卡信息。
五、迁移小提示
- systemctl 系列命令绝大多数直接复用,迁移重点关注包管理、防火墙、服务名、配置路径。
- 迁移业务优先备份数据,数据库、业务配置文件单独导出,不要直接拷贝 rpm/deb 包跨系统使用。
- 优先使用 Ubuntu 官方源或者国内镜像源,避免源地址不可访问导致安装失败。