努力
加油

阿里云服务器安装CentOS或Ubuntu自定义系统的方法是什么?

在阿里云(以及大多数主流云厂商)上安装 CentOS 或 Ubuntu,其实并不存在一个传统意义上“从光盘启动、手动分区、一步步点下一步”的本地安装过程。云服务器的本质是虚拟化实例,系统镜像是通过快照和镜像服务直接挂载到虚拟磁盘上的。

所谓的“自定义安装”,通常指的是两种场景:

  1. 使用官方提供的公共镜像或社区镜像(这是最常规的做法)。
  2. 上传自己的自定义镜像(比如你在本地 VMware/VirtualBox 里装好的系统,或者通过 Packer 构建的系统),然后基于这个镜像创建服务器。

下面我按这两种路径,结合实操经验,把步骤拆解清楚。


路径一:直接使用阿里云控制台创建实例(推荐新手)

这是最简单的方式,你不需要自己“安装”系统,而是选择阿里云已经封装好的镜像。

1. 进入创建实例页面

登录阿里云 ECS 控制台 -> 【实例】-> 【创建实例】。

2. 关键步骤:选择镜像

在配置向导中,找到 “镜像” 这一步。这里是你决定操作系统类型的地方。

  • 公共镜像:阿里云官方维护的镜像。
    • CentOS:目前 CentOS 7 和 8(Stream)仍有提供,但注意 CentOS 8 已停止维护,建议优先使用 Rocky Linux 或 AlmaLinux(阿里云公共镜像里也有),或者直接选 CentOS Stream。如果是新项目,强烈建议考虑迁移到这些替代发行版。
    • Ubuntu:通常有 18.04 LTS, 20.04 LTS, 22.04 LTS, 24.04 LTS 等长期支持版本。选哪个取决于你的软件兼容性需求。
  • 社区镜像:由第三方或开发者上传的优化版镜像,可能预装了 Docker、Nginx 等工具,适合快速部署环境。
  • 自定义镜像:如果你之前保存过自己的镜像,可以在这里选择。

注意:一旦点击“下一步”,系统将自动完成“安装”。你只需要设置主机名、密码/密钥对、安全组规则即可。

3. 初始化配置

  • 网络与安全组:确保 22 端口(SSH)对你允许的 IP 开放。
  • 密码/密钥对:推荐使用 SSH 密钥对登录,更安全且无需输入密码。

路径二:上传自定义镜像并创建实例(高阶玩法)

如果你想用“自己定制的系统”(比如预装了特定驱动、内核模块、或做了深度优化的系统),你需要先制作镜像,再上传到阿里云。

第一步:准备本地系统

  1. 在本地虚拟机(VMware/VirtualBox)或物理机上安装好 CentOS 或 Ubuntu。
  2. 进行所有必要的配置:更新源、安装软件、调整内核参数、清理日志等。
  3. 关键操作:卸载云厂商无关驱动
    如果你是从 AWS/Aliyun 导出的镜像,要确保里面没有残留其他云厂商的驱动(如 cloud-init 可能需要重新配置)。对于阿里云,建议安装 alinux 相关的内核模块或 cloud-init 以适配阿里云的云盘和网络。

第二步:导出为镜像文件

  • 方法 A(推荐):使用阿里云的 镜像导入服务。

    1. 将虚拟机磁盘格式化为 RAW 或 QCOW2。
    2. 使用阿里云 CLI 工具 aliyunimage 或通过控制台上传镜像文件到 OSS 存储桶。
    3. 控制台调用“导入镜像”功能,指定 OSS 中的文件路径。
    4. 等待转换完成,生成自定义镜像。
  • 方法 B(Packer 自动化):
    使用 HashiCorp Packer 编写 JSON 模板,自动化构建 ISO 或镜像文件,然后通过脚本上传。这种方式适合 DevOps 流程。

第三步:基于自定义镜像创建实例

  1. 进入 ECS 控制台 -> 【镜像】-> 【自定义镜像】,确认你的镜像状态为“可用”。
  2. 创建实例时,在“镜像”选项中选择 “自定义镜像”,然后选中你刚导入的那个镜像。
  3. 后续步骤同路径一。

常见问题与避坑指南

1. CentOS 还能用吗?

  • 现状:CentOS 8 已于 2021 年底结束生命周期(EOL)。阿里云公共镜像中仍保留 CentOS 7,但不再主动推送新安全补丁以外的更新。
  • 建议:新项目建议使用 AlmaLinux 9、Rocky Linux 9 或 Ubuntu 22.04/24.04 LTS。这些系统与 CentOS 高度兼容,命令几乎一致,但获得持续支持。

2. 为什么我的自定义镜像登录后没有网络?

  • 原因:云实例的网络接口通常是 eth0,而本地虚拟机可能是 ens33 或 enp0s3。此外,cloud-init 服务负责动态分配 IP 和主机名。
  • 解决:
    • 确保自定义镜像中安装了 cloud-init。
    • 检查 /etc/network/interfaces (Debian/Ubuntu) 或 /etc/sysconfig/network-scripts/ifcfg-eth0 (RHEL/CentOS) 是否设置为 DHCP。
    • 更简单的做法:在创建实例后,首次启动时让 cloud-init 自动执行一次初始化,它会覆盖大部分网络配置。

3. 如何修改已有实例的系统?

  • 不能直接重装:ECS 实例一旦创建,其根磁盘就绑定了初始镜像。你不能像重装 Windows 那样直接“格式化 C 盘重装系统”。
  • 正确做法:
    1. 对现有实例做快照备份。
    2. 停止实例。
    3. 更换系统盘:右键实例 -> 【更多】-> 【云盘和镜像】-> 【更换操作系统】。
    4. 选择新的公共镜像或自定义镜像,重置 root 密码。
    5. 启动实例。

      ⚠️ 注意:更换系统盘会丢失系统盘数据!务必先将重要数据迁移至数据盘或 OSS。

4. 关于 Root 权限

  • 阿里云默认禁止远程 root 登录(SSH 配置中 PermitRootLogin no)。
  • 创建实例时,你可以选择使用普通用户(如 ubuntu 或 centos)登录,然后通过 sudo su - 提权。
  • 如果确实需要 root 登录,需在实例内部修改 /etc/ssh/sshd_config,并将 PermitRootLogin 改为 yes,然后重启 sshd 服务。生产环境不建议这样做。

总结

需求 推荐方案
快速建站、测试、学习 直接使用阿里云公共镜像(Ubuntu 22.04 LTS 或 Rocky Linux 9)
企业级合规、长期维护 选择 LTS 版本的 Ubuntu 或 AlmaLinux/Rocky Linux
预装复杂环境、特殊驱动 制作自定义镜像 -> 上传至阿里云 -> 基于该镜像创建实例
想换系统 备份数据 -> 更换系统盘(注意:仅限系统盘,数据盘不受影响)

核心原则:云服务器不是“安装”出来的,是“镜像化”出来的。理解这一点,就能避开绝大多数坑。