CentOS 切换到 Ubuntu
从 CentOS 切换到 Ubuntu,最核心的变化是:包管理、防火墙、安全策略和部分系统配置路径。
1. 包管理:yum → apt
| 操作 | CentOS | Ubuntu |
|---|---|---|
| 更新软件包列表 | yum update | apt update |
| 升级所有软件 | yum upgrade | apt upgrade |
| 安装软件 | yum install <pkg> | apt install <pkg> |
| 移除软件 | yum remove <pkg> | apt remove <pkg> |
| 搜索软件 | yum search <pkg> | apt search <pkg> |
| 清理缓存 | yum clean all | apt clean |
💡 注意:Ubuntu 需要先执行
apt update刷新源,再执行apt upgrade。而 CentOS 的yum update会自动刷新源。
2. 服务管理:基本相同(都用 systemd)
| 操作 | CentOS 7+ / Ubuntu | 说明 |
|---|---|---|
| 启动服务 | systemctl start <name> | 一致 |
| 停止服务 | systemctl stop <name> | 一致 |
| 重启服务 | systemctl restart <name> | 一致 |
| 查看状态 | systemctl status <name> | 一致 |
| 开机自启 | systemctl enable <name> | 一致 |
⚠️ 唯一要注意的是:老 CentOS 6 的
service和chkconfig命令在 Ubuntu 上依然存在但已过时,请统一用systemctl。
3. 防火墙:firewalld → ufw 或 iptables
- CentOS 默认使用 firewalld(底层 iptables)
- Ubuntu 默认没有安装 firewalld,推荐使用 ufw(Uncomplicated Firewall)
常用对比:
| 操作 | CentOS (firewalld) | Ubuntu (ufw) |
|---|---|---|
| 查看状态 | firewall-cmd --state | ufw status |
| 开启防火墙 | systemctl start firewalld | ufw enable |
| 开放端口 | firewall-cmd --add-port=80/tcp --permanent | ufw allow 80/tcp |
| 重载规则 | firewall-cmd --reload | ufw reload |
| 删除规则 | firewall-cmd --remove-port=80/tcp | ufw delete allow 80/tcp |
💡 如果你习惯 firewalld,也可以直接
apt install firewalld装上,用法和 CentOS 完全一样。
4. 网络配置:ifcfg-* → netplan 或 /etc/netplan/
| 项目 | CentOS | Ubuntu 18.04+ |
|---|---|---|
| 配置文件位置 | /etc/sysconfig/network-scripts/ifcfg-eth0 | /etc/netplan/01-netcfg.yaml |
| 重启网络服务 | systemctl restart network | netplan apply |
| 查看 IP | ip addr(通用) | ip addr 或 netplan ip leases eth0 |
⚠️ 注意:不要手动编辑
/etc/network/interfaces(旧方式),Ubuntu 现在用 YAML 格式的 netplan。
如果你在云上(阿里云),一般不需要手动改网络配置,DHCP 自动分配即可。
5. 安全策略:SELinux → AppArmor
| 项目 | CentOS | Ubuntu |
|---|---|---|
| 强制访问控制 | SELinux(默认 enforcing) | AppArmor(默认对部分程序启用) |
| 查看状态 | getenforce | aa-status |
| 临时关闭 | setenforce 0 | systemctl stop apparmor |
| 配置文件 | /etc/selinux/config | /etc/apparmor.d/ |
💡 对建站来说,大部分情况下 AppArmor 不会像 SELinux 那样频繁阻止服务(如 Nginx、PHP)。如果你不熟悉 SELinux,改用 Ubuntu 反而更省心。
6. 文件系统与路径差异
| 用途 | CentOS | Ubuntu |
|---|---|---|
| 网页根目录 | /var/www/html/ | /var/www/html/(一致,但 Ubuntu 的 Apache 默认是 /var/www/html) |
| Nginx 配置 | /etc/nginx/nginx.conf | 一致 |
| Apache 配置 | /etc/httpd/ | /etc/apache2/ |
| PHP 配置 | /etc/php.d/ | /etc/php/8.1/cli/conf.d(版本号路径) |
| 环境变量文件 | /etc/profile、~/.bashrc | 一致 |
| 定时任务 | /etc/crontab | 一致 |
⚠️ Apache 注意:Ubuntu 的 Apache 配置文件拆分更细,主配置
/etc/apache2/apache2.conf,站点配置在/etc/apache2/sites-available/,启用站点用a2ensite而不是手动创建软链接。
7. 日志系统
两者都用 systemd-journald 和 rsyslog,日志查看方式基本一致:
| 操作 | 命令(通用) |
|---|---|
| 查看系统日志 | journalctl -xe |
| 查看内核日志 | dmesg |
| 查看特定服务日志 | journalctl -u nginx |
| 查看传统日志文件 | tail -f /var/log/syslog(Ubuntu)tail -f /var/log/messages(CentOS) |
💡 Ubuntu 的传统日志文件是
/var/log/syslog,而不是/var/log/messages。
8. 默认用户与 sudo
- CentOS:创建普通用户后,通常需要手动加入
wheel组并配置 sudo。 - Ubuntu:默认 root 用户没有密码(无法直接登录),安装系统时创建的第一个用户自动拥有
sudo权限,推荐始终使用sudo执行管理命令。
# CentOS 风格(不推荐在 Ubuntu 上直接启用 root)
su -
# Ubuntu 推荐方式
sudo -i # 获取临时 root 环境
sudo <命令>
⚠️ 不要试图在 Ubuntu 上
passwd root设置 root 密码来登录,这会破坏安全模型。坚持用sudo。
9. 常用命令速查对照表
| 操作 | CentOS | Ubuntu |
|---|---|---|
| 安装 EPEL / 额外源 | yum install epel-release | apt install software-properties-common && add-apt-repository |
| 查看发行版版本 | cat /etc/redhat-release | lsb_release -a 或 cat /etc/os-release |
| 开启/关闭防火墙端口 | firewall-cmd | ufw |
| 重启网络 | systemctl restart network | netplan apply |
| 设置主机名 | hostnamectl set-hostname | 相同 |
🎯 迁移小贴士(建议收藏)
-
提前安装常用工具
Ubuntu 最小化安装可能缺vim、net-tools(ifconfig)、curl等,先执行:sudo apt update && sudo apt install vim net-tools curl wget git -y -
忘记
ifconfig,用ip addr
Ubuntu 倾向使用ip命令,虽然装了net-tools也能用ifconfig,但建议适应ip addr。 -
网站文件权限
Ubuntu 默认使用www-data用户和组(CentOS 是apache或nginx)。如果你的脚本需要写权限,记得:sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html -
定时任务 crontab 用法完全一致,放心使用。
-
SSH 配置路径:两者都是
/etc/ssh/sshd_config,没有差异。 -
遇到命令找不到时:先尝试
apt search <关键词>找出对应的包名,再安装。
✅ 总结
| 方面 | 核心差异 | 适应难度 |
|---|---|---|
| 包管理 | yum → apt | ⭐⭐(需要习惯) |
| 防火墙 | firewalld → ufw | ⭐(可装回 firewalld) |
| 网络配置 | ifcfg → netplan | ⭐⭐(云上基本不动) |
| 安全策略 | SELinux → AppArmor | ⭐(更省心) |
| 默认用户 | root 可用 → sudo 必须 | ⭐(小习惯) |
| 服务管理 | systemd 一致 | 无差异 |
一句话建议:把你原来的 yum 脑内替换成 apt,把 firewall-cmd 替换成 ufw,把 SELinux 相关操作忘掉,然后记住 sudo 大法,你就能在 Ubuntu 上愉快建站了。
如果你有写好的 shell 脚本或一键安装包,建议先在测试机上跑一遍,因为包名和路径可能有细微差别(例如 httpd 变成了 apache2)。