在阿里云ECS上第一次执行 yum install,最常见的情况是进度停住,等几分钟后报错。默认源位于境外,网络稍有波动就容易卡死。把 yum 源换成阿里云镜像,通常是见效最快的办法。

一次部署卡住的经过
上个月,一位做电商后台的朋友在新开的 ECS 实例上部署环境。执行 yum install -y nginx 之后,终端停在下载依赖那一步,等了七八分钟,最后报错 Could not resolve host,部署被迫中断。排查发现,实例上的 yum 仍指向默认的境外镜像,而他所在的网络对这类地址访问不稳定。
软件源切换到阿里云镜像站后,同样的安装命令两分钟内就跑完了。源选对了,安装速度的差别会很直观,而且换源本身几乎没有成本。
阿里云镜像站能提供什么
阿里云镜像站(mirrors.aliyun.com)同步了 CentOS、Ubuntu、Debian、EPEL 等主流发行版的软件包。对 yum 来说,它相当于一份离你更近的仓库副本。主要好处有三点:
- 下载快:节点在国内,一般比境外源快很多。
- 更新跟得上:常用包会随上游发布同步,日常使用基本感觉不到延迟。
- ECS 可走内网:同地域的 ECS 可以使用内网地址,流量不占用公网带宽。具体地址和计费规则以阿里云官方文档为准。
动手前先确认两件事
第一是系统版本。CentOS 7 和 CentOS 8 的配置方式不同。CentOS 8 已经停止维护,原来的基础源路径大多已失效,应改用 CentOS Stream 或 vault 归档源。Alibaba Cloud Linux 也有自己的源文件,不能直接套用 CentOS 的做法。可以用 cat /etc/redhat-release 确认版本。
第二是网络位置。服务器和镜像站在同一地域时,优先用内网地址。如果是本地机房或其他云厂商的机器,就用公网地址。
改动之前,先备份原来的 repo 文件。这一步几秒钟就能完成,配置写错时可以直接回滚,比事后排查省事得多。
CentOS 7 换源步骤
以 CentOS 7 为例,整个过程分四步:
- 备份原配置:进入 /etc/yum.repos.d/ 目录,把 CentOS-Base.repo 重命名为 CentOS-Base.repo.bak。
- 下载阿里云 repo 文件:用 curl 把镜像站提供的 CentOS 7 配置保存为 CentOS-Base.repo。文件地址以镜像站页面的最新说明为准,常见写法如下:
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
curl -o CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 清理并重建缓存:执行 yum clean all 清除旧缓存,再执行 yum makecache 生成新的元数据缓存。
- 验证结果:执行 yum repolist,确认仓库列表中已经出现阿里云的源,且包数量正常。
换完之后,可以再装一个 wget 这类小包试试。速度明显变快,就说明配置已经生效。
顺便配置 EPEL 源
htop、certbot、ansible 这类常用工具不在 CentOS 基础仓库里,而是放在 EPEL 中。只换基础源的话,安装这些包时仍然会找不到或很慢。阿里云镜像站也提供对应版本的 EPEL 配置文件,下载到 /etc/yum.repos.d/ 后重建缓存即可。
常见问题怎么查
- makecache 失败:多半是 repo 文件里的地址写错,或版本号对不上。先用 cat /etc/redhat-release 核对系统版本,再检查 repo 文件内容。
- 报 404 或 Cannot find a valid baseurl:常见于 CentOS 8 这类已停止维护的系统,基础源路径已经变化,需要切换到归档地址。
- 旧源还在生效:换源后执行 yum clean all,清掉旧缓存,否则 yum 可能仍在使用旧元数据。
- 内网地址连不上:先确认实例所在地域和镜像地址是否匹配,再检查安全组和 VPC 路由有没有拦截。
排查顺序可以固定下来:先看报错原文,再看源配置,最后测试网络连通性。大部分问题按这个顺序几分钟内就能定位。
后续维护
源配好以后也不是一劳永逸。镜像站的地址结构可能调整,系统本身也有生命周期。下面几条做法比较稳妥:
- 定期看一下镜像站公告,确认 repo 地址有没有变化。
- 系统升级前,先在测试实例上验证新的源配置。
- 机器数量多的时候,用 Ansible 之类的工具统一下发 yum 源,避免各台配置不一致。
小结
换阿里云 yum 源的关键,是先确认系统版本和网络位置,再按顺序完成备份、替换、重建缓存和验证。顺带把 EPEL 配好,日常大部分安装需求基本都能覆盖。如果 yum 慢到影响工作,花十分钟照着步骤走一遍,通常就能解决。