重装系统这事儿,在云服务器上其实和物理机不太一样。你不能直接插U盘引导,得通过云厂商提供的控制台或者 API 来操作。
首先得明确一个核心概念:“重装”意味着磁盘数据会被彻底清空。如果你还没备份重要数据(比如网站代码、数据库、SSH Key等),请立刻停止阅读,先去备份。一旦点击重装,之前的所有文件都会消失,且无法恢复。
下面我以国内主流云厂商(如阿里云、腾讯云、华为云)通用的逻辑为例,梳理从 CentOS 7 到 Ubuntu 22.04 LTS 的完整操作流程及注意事项。
第一阶段:准备工作(至关重要)
-
数据备份
- 快照策略:最稳妥的方式是在云控制台对当前系统盘创建一个自定义镜像或快照。这样即使重装失败,也能回滚。
- 应用层备份:如果业务允许停机,建议先停服,导出 MySQL/PostgreSQL 数据库,打包静态资源文件,保存 SSH 私钥副本。
-
确认实例规格与网络
- 确保你的云服务器类型支持更换操作系统(绝大多数 ECS/CVM 都支持)。
- 记录当前的公网 IP、内网 IP、安全组规则。虽然重装后 IP 通常不变(除非你选择了释放旧实例并创建新实例),但为了保险起见,记下这些配置有助于后续快速恢复环境。
-
获取 Ubuntu 22.04 ISO 或选择官方镜像
- 方法 A(推荐):使用云厂商提供的官方镜像。
现在主流云厂商的控制台里都有“Ubuntu 22.04 LTS”的公共镜像。这是最简单、兼容性最好的方式。你不需要自己上传 ISO 文件。 - 方法 B:自定义镜像/ISO 安装。
如果你需要特定的内核版本或预装特定驱动,可能需要先在对象存储(OSS/COS)上传 Ubuntu 22.04 ISO 镜像,然后在重装时选择“自定义镜像”或“从 ISO 安装”。但这步骤复杂,容易出错,新手不建议尝试。
- 方法 A(推荐):使用云厂商提供的官方镜像。
第二阶段:执行重装操作
登录你的云服务商控制台,找到目标实例,点击 “更多” -> “云盘/系统盘” -> “重装系统”(不同厂商菜单名称略有差异,但路径类似)。
-
选择操作系统
- 在镜像列表中选择 “公共镜像” 或 “官方镜像”。
- 找到 Ubuntu 22.04 LTS(注意区分 64-bit)。
- 提示:不要选 Ubuntu 20.04 或 24.04,除非你有特殊需求。22.04 是目前的长期支持版本(LTS),稳定性好,社区支持完善。
-
配置初始信息
- 主机名:可以保持默认,也可以修改为便于识别的名字。
- 用户名:Ubuntu 默认超级用户是
root。部分云厂商可能提供创建普通用户的选项,但建议直接使用 root,避免后续提权麻烦。 - 密码:设置一个强密码(大小写字母+数字+符号,至少8位)。务必记下来! 重装后你需要用这个密码通过 SSH 登录。
- 密钥对(可选):如果你之前绑定了 SSH 密钥对进行免密登录,可以选择保留该密钥对绑定。这样重装后依然可以通过私钥登录,无需输入密码。这是更安全的做法。
-
确认并提交
- 系统会弹出警告框,再次强调数据丢失风险。勾选“我已了解风险”,点击“确定”或“立即重装”。
- 此时,云服务器会自动重启。这个过程可能需要 5-10 分钟,具体取决于云厂商后台处理速度。
第三阶段:重装后的基础配置
等待控制台状态变为 “运行中”,然后通过 SSH 客户端(如 Terminal、PuTTY、Xshell)连接。
ssh root@<你的公网IP>
# 输入刚才设置的密码
1. 更新系统源(解决软件包下载慢的问题)
Ubuntu 默认源在国内访问较慢,建议更换为国内镜像源(以阿里云源为例,腾讯云可用腾讯源)。
编辑 /etc/apt/sources.list:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo nano /etc/apt/sources.list
将原有内容注释掉或删除,替换为以下内容(以阿里云为例):
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
保存退出后,执行更新:
sudo apt update && sudo apt upgrade -y
2. 安装必要工具
CentOS 常用的是 yum 和 systemctl,Ubuntu 对应的是 apt 和 systemd(已内置)。
安装常用工具:
sudo apt install -y vim git curl wget htop net-tools ufw
3. 配置防火墙(UFW)
Ubuntu 默认没有开启严格防火墙,建议使用 UFW。
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh:22/tcp
sudo ufw allow http:80/tcp
sudo ufw allow https:443/tcp
# 根据业务需求开放其他端口,例如数据库端口需限制IP
sudo ufw enable
sudo ufw status
4. 优化 SSH 登录安全
为了防止暴力破解,建议修改 SSH 默认端口或禁用密码登录,仅允许密钥登录。
编辑 /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
找到以下行并修改:
Port 22 # 如果想改端口,取消注释并修改,例如 Port 2222
PermitRootLogin prohibit-password # 禁止 root 密码登录,只允许密钥
PasswordAuthentication no # 禁用密码认证
重启 SSH 服务:
sudo systemctl restart sshd
注意:如果你修改了 SSH 端口或禁用了密码登录,请确保本地机器已经配置好密钥登录,并且测试成功后再断开连接,否则可能把自己锁在外面。
5. 时间同步
sudo timedatectl set-timezone Asia/Shanghai
sudo apt install -y chrony
sudo systemctl enable --now chronyd
第四阶段:迁移数据与应用
现在你的服务器是一个干净的 Ubuntu 22.04 系统。接下来需要将之前备份的数据和应用迁移回来。
-
部署 Web 服务器
- 如果需要 Nginx/Apache:
sudo apt install -y nginx sudo systemctl enable --now nginx - 如果需要 PHP/Python/Node.js 环境,使用
apt或源码编译安装。推荐使用 Docker,这样可以隔离依赖,简化环境管理。
- 如果需要 Nginx/Apache:
-
部署数据库
- MySQL/MariaDB:
sudo apt install -y mysql-server sudo systemctl enable --now mysql - 导入之前导出的 SQL 文件:
mysql -u root -p < your_backup.sql
- MySQL/MariaDB:
-
恢复业务代码
- 将备份的代码包解压到
/var/www/html或其他指定目录。 - 检查配置文件中的路径、数据库连接字符串是否因系统变化而需要调整。
- 将备份的代码包解压到
-
权限设置
- Ubuntu 的文件权限体系比 CentOS 更严格,确保 Web 用户对站点目录有读写权限:
sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html
- Ubuntu 的文件权限体系比 CentOS 更严格,确保 Web 用户对站点目录有读写权限:
常见问题与避坑指南
-
为什么 SSH 连不上?
- 检查云控制台的安全组规则是否放行了 22 端口。
- 检查实例是否处于“运行中”状态。
- 如果是首次登录,尝试使用云厂商提供的“VNC 远程连接”功能排查问题。
-
DNS 解析问题
- Ubuntu 22.04 使用
systemd-resolved作为 DNS 解析器。如果发现ping baidu.com不通,但ping 8.8.8.8通,可能是 DNS 配置问题。 - 检查
/etc/resolv.conf或/etc/systemd/resolved.conf,确保 nameserver 指向正确的地址(如114.114.114.114或8.8.8.8)。
- Ubuntu 22.04 使用
-
Swap 分区
- Ubuntu 默认可能不创建 Swap 分区。对于低内存实例(如 1G 或 2G),建议创建 Swap 文件防止 OOM(内存溢出):
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- Ubuntu 默认可能不创建 Swap 分区。对于低内存实例(如 1G 或 2G),建议创建 Swap 文件防止 OOM(内存溢出):
-
内核模块加载
- 某些硬件提速或特定驱动可能需要手动加载内核模块。如果遇到类似问题,检查
dmesg日志。
- 某些硬件提速或特定驱动可能需要手动加载内核模块。如果遇到类似问题,检查
总结
从 CentOS 7 迁移到 Ubuntu 22.04 的核心在于:备份先行、使用官方镜像、熟悉 apt 包管理、适应 systemd 服务管理、以及注意文件权限差异。整个过程大约需要 30 分钟到 1 小时,取决于你的应用复杂度。
如果在迁移过程中遇到具体的报错,建议优先查看 /var/log/syslog 和 /var/log/auth.log,这两个日志文件能帮你定位大部分问题。
云技术博客