在阿里云(以及大多数主流云厂商)上安装 CentOS 或 Ubuntu,其实并不存在一个传统意义上“从光盘启动、手动分区、一步步点下一步”的本地安装过程。云服务器的本质是虚拟化实例,系统镜像是通过快照和镜像服务直接挂载到虚拟磁盘上的。
所谓的“自定义安装”,通常指的是两种场景:
- 使用官方提供的公共镜像或社区镜像(这是最常规的做法)。
- 上传自己的自定义镜像(比如你在本地 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 密钥对登录,更安全且无需输入密码。
路径二:上传自定义镜像并创建实例(高阶玩法)
如果你想用“自己定制的系统”(比如预装了特定驱动、内核模块、或做了深度优化的系统),你需要先制作镜像,再上传到阿里云。
第一步:准备本地系统
- 在本地虚拟机(VMware/VirtualBox)或物理机上安装好 CentOS 或 Ubuntu。
- 进行所有必要的配置:更新源、安装软件、调整内核参数、清理日志等。
- 关键操作:卸载云厂商无关驱动
如果你是从 AWS/Aliyun 导出的镜像,要确保里面没有残留其他云厂商的驱动(如cloud-init可能需要重新配置)。对于阿里云,建议安装alinux相关的内核模块或cloud-init以适配阿里云的云盘和网络。
第二步:导出为镜像文件
-
方法 A(推荐):使用阿里云的 镜像导入服务。
- 将虚拟机磁盘格式化为 RAW 或 QCOW2。
- 使用阿里云 CLI 工具
aliyunimage或通过控制台上传镜像文件到 OSS 存储桶。 - 控制台调用“导入镜像”功能,指定 OSS 中的文件路径。
- 等待转换完成,生成自定义镜像。
-
方法 B(Packer 自动化):
使用 HashiCorp Packer 编写 JSON 模板,自动化构建 ISO 或镜像文件,然后通过脚本上传。这种方式适合 DevOps 流程。
第三步:基于自定义镜像创建实例
- 进入 ECS 控制台 -> 【镜像】-> 【自定义镜像】,确认你的镜像状态为“可用”。
- 创建实例时,在“镜像”选项中选择 “自定义镜像”,然后选中你刚导入的那个镜像。
- 后续步骤同路径一。
常见问题与避坑指南
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 盘重装系统”。
- 正确做法:
- 对现有实例做快照备份。
- 停止实例。
- 更换系统盘:右键实例 -> 【更多】-> 【云盘和镜像】-> 【更换操作系统】。
- 选择新的公共镜像或自定义镜像,重置 root 密码。
- 启动实例。
⚠️ 注意:更换系统盘会丢失系统盘数据!务必先将重要数据迁移至数据盘或 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 |
| 预装复杂环境、特殊驱动 | 制作自定义镜像 -> 上传至阿里云 -> 基于该镜像创建实例 |
| 想换系统 | 备份数据 -> 更换系统盘(注意:仅限系统盘,数据盘不受影响) |
核心原则:云服务器不是“安装”出来的,是“镜像化”出来的。理解这一点,就能避开绝大多数坑。
云技术博客