从 CentOS 到 Ubuntu24.04 运维迁移手册:命令对照表 + 实操 + 避坑

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

三、迁移高频踩坑小结

  1. Netplan yaml 缩进必须使用空格,绝对不能用 Tab,缩进错误直接网络失效,新手最高频问题。
  2. CentOS 习惯systemctl restart network,Ubuntu 没有 network 服务,网络修改使用netplan apply。
  3. apt 命令区分apt update(刷新缓存)和apt upgrade(升级软件),不要和 yum update 混淆。
  4. 防火墙:firewall‑cmd → ufw,两套命令完全不一样。
  5. Ubuntu 默认关闭 SELinux,少一大类权限故障。
  6. 包管理:yum/dnf → apt;rpm → dpkg。
  7. 养成sudo操作习惯,不建议直接登录 root 账号。
  8. 服务名称会变:如 mysqld(CentOS) → mysql(Ubuntu),写脚本迁移时注意修改。

四、课后实操作业(可用于练习测试)

适合做完理论之后动手实操巩固

  1. Ubuntu 执行sudo apt update && sudo apt install nginx,ufw 放行 80 端口,浏览器访问 nginx 默认页面。
  2. 使用systemctl status nginx查看 nginx 状态,设置 nginx 开机自启。
  3. 使用lsb_release -a查看 Ubuntu 系统版本。
  4. 使用ip a查看本机网卡,编辑 netplan yaml 配置静态 IP,执行netplan apply验证网络生效。
  5. 安装 net‑tools,使用 ifconfig 查看网卡信息。

五、迁移小提示

  1. systemctl 系列命令绝大多数直接复用,迁移重点关注包管理、防火墙、服务名、配置路径。
  2. 迁移业务优先备份数据,数据库、业务配置文件单独导出,不要直接拷贝 rpm/deb 包跨系统使用。
  3. 优先使用 Ubuntu 官方源或者国内镜像源,避免源地址不可访问导致安装失败。
相关推荐
分布式存储与RustFS1 小时前
训练集放在 RustFS 上,怎么像本地盘一样快?用 Curvine 加一层 POSIX 缓存
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
pride.li1 小时前
第12章 Python 教程-流程控制:循环结构
linux·服务器·python·算法
迷途之人不知返1 小时前
【基础IO】-5-简单理解三个标准流——stdin、stdout、stderr
linux
牛马鸡niumasi1 小时前
【Linux】进程退出
linux
北京中科新远科技1 小时前
高速光链路故障排查实战:从DOM光功率到FEC与BER
运维·服务器·网络
秋名山小白1 小时前
UI自动化-Airtest框架落地实战
运维·ui·自动化
刘胡子大叔2 小时前
Docker 容器名 ping 不通
运维·docker·容器
a5986522 小时前
Docker多开云手机,六边云独立端口隔离访问实战
android·运维·docker·容器·智能手机·云手机
戴西软件2 小时前
企业如何搭建自己的AI智能体?戴西智能体管理与戴西SKILL管理实战解析
运维·jvm·人工智能·自动化·rpa