很多人第一次用阿里云,最耗时间的通常是把环境搭起来。子账号权限没分开,端口一股脑全放开,密钥躺在代码里,这些问题往往要出了事才会注意到。下面以一个小团队部署 Python 后端服务的情况为例,讲讲阿里云环境配置该怎么走。

先把账号和权限分开
主账号权限最大,日常开发不要直接用它。更稳妥的做法是在 RAM 访问控制里给每个人建子账号,按实际工作授权。比如开发只负责 ECS 和 OSS,就没必要拿到 RDS 的删除权限。
AccessKey 是调用 API 的凭证,别写进代码,也别提交到 Git 仓库。可以用 STS 临时凭证,或者从环境变量里读取。这个团队就吃过亏:有一次提交误带了 AccessKey,后来不仅要轮换密钥,还得清理提交历史,折腾了不少时间。
创建 ECS 并设置安全组
这个案例里,团队选了华东1(杭州)的一台 2 核 4G 云服务器,系统镜像是 Ubuntu 22.04。选地域时,先看用户主要在哪,再看 RDS、OSS 等服务放在哪个地域。同一地域内网通信更快,流量费用也低,这一点在后面连数据库时会体现出来。
安全组是实例的第一道防线。团队最初把所有端口对 0.0.0.0/0 开放,没过多久 Redis 端口就被扫描到了。调整后的规则大致如下:
- 22 端口(SSH)只允许办公室的固定 IP 访问
- 80 和 443 对外开放,给 Nginx 用
- 3306、6379 这类数据库端口只在内网网段开放,公网不可见
登录方式和基础环境
登录改用 SSH 密钥,并关掉密码登录。第一次连上服务器,先更新系统软件包,把时区设成 Asia/Shanghai,再确认 NTP 时间同步是正常的。服务器时间不准,接口签名就可能失败,而且这类报错很容易让人绕远路去查代码。
运行环境建议用版本管理工具装,Python 用 uv 或 pyenv,Node.js 用 nvm,这样不同项目各用各的版本。正式部署前,给系统盘打一次快照,出问题时能较快回滚,成本不高,值得做。
开发、测试、生产分开管理
同一套代码会跑在三个环境里,数据库地址、密钥、日志级别都不一样。团队的做法是代码里不保存任何和环境相关的值,全部从环境变量读取。
服务器上,把配置写进 systemd 服务的 EnvironmentFile,比如 /etc/myapp/prod.env,文件权限设成 600,只让服务用户能读。本地开发用 .env 文件,记得把它加进 .gitignore,否则很容易一不小心提交上去。
如果配置项多,还经常要改,可以考虑阿里云的应用配置管理服务 ACM。配置集中保存,改完统一推送到各台实例,不必一台台登录去编辑文件。
连接数据库和对象存储
RDS 创建好后,白名单只加 ECS 的内网 IP,不要图省事加 0.0.0.0/0。应用走内网地址连库,速度快,也不经过公网。
用户上传的文件放在 OSS 比放在 ECS 本地磁盘更合适。实例故障或扩容时,本地文件很容易丢。OSS 的 Bucket 默认是私有的,需要临时给别人访问时,生成一个带有效期的签名 URL 就够了。
上线前检查
- 子账号权限是否已经收紧到最小范围,主账号有没有开启多因素认证
- 安全组是否只开放了必要端口
- 代码和 Git 历史里有没有密钥,可以用 git log 搜一下确认
- 是否设置了费用预警。资源被误开或账号被盗用时,预警能让你第一时间发现
- 服务是否配置了开机自启,日志能不能正常查看
写在最后
阿里云环境配置看上去是一连串点击操作,落到实处,就是把权限、网络、配置和数据分开管。这个团队第一次配置花了两天,之后新服务复用同一套模板,半小时左右就能上线。把这些步骤整理成脚本或 Terraform 模板,重复劳动还能再少一大截。