在阿里云 ECS 上安装 MySQL 和 Redis 是构建后端服务的常见需求。根据你的具体场景(如:追求快速部署、需要高可用、或希望完全自定义配置),主要有三种方案:
- 使用云数据库服务(推荐):直接使用阿里云 RDS (MySQL) 和 ApsaraDB for Redis。
- 手动安装(轻量级/学习):在 ECS 内部通过包管理器直接安装。
- 容器化部署:使用 Docker 运行。
以下是针对手动安装和容器化部署的详细步骤,同时也简要说明云原生方案的优势。
方案一:在 ECS 内部手动安装(适合开发测试或小流量)
此方法成本最低,但你需要自行负责备份、安全组配置和高可用性。
1. 前置准备:配置安全组
在操作前,必须确保阿里云控制台的安全组规则允许外部访问(如果是本地连接则不需要开放端口,但建议先测试内网互通)。
- MySQL 默认端口:
3306 - Redis 默认端口:
6379 - 操作:登录阿里云控制台 -> 云服务器 ECS -> 实例详情 -> 安全组 -> 添加入方向规则,放行上述端口(仅限特定 IP 或
0.0.0.0/0用于测试,生产环境严禁对公网开放)。
2. 安装 MySQL
以 CentOS/Alibaba Cloud Linux 为例(Ubuntu 命令类似):
# 1. 更新系统并安装 Yum 源 (CentOS 8+)
sudo yum update -y
sudo yum install -y wget
# 2. 下载并安装 MySQL 5.7 或 8.0 (这里以官方 repo 为例)
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
sudo rpm -ivh mysql80-community-release-el8-1.noarch.rpm
# 3. 安装 MySQL Server
sudo yum install -y mysql-community-server
# 4. 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 5. 获取初始密码并修改 root 密码
sudo grep 'temporary password' /var/log/mysqld.log
# 复制输出的临时密码,然后执行以下命令进入 MySQL
mysql_secure_installation
注意:MySQL 8.0+ 默认开启密码强度策略,修改密码时需符合复杂度要求。
3. 安装 Redis
# 1. 安装 EPEL 源 (如果尚未安装)
sudo yum install -y epel-release
# 2. 安装 Redis
sudo yum install -y redis
# 3. 修改配置文件 (编辑 redis.conf)
sudo vi /etc/redis/redis.conf
# 关键修改点:
# bind 127.0.0.1 -> 改为注释掉或改为你的 ECS 内网 IP (若需远程连接)
# protected-mode yes -> 建议改为 no (仅在内网安全组控制下) 或配合密码使用
# requirepass your_strong_password -> 设置强密码 (例如: MyRedisPwd123!)
# daemonize yes -> 确保后台运行
# 4. 启动并设置开机自启
sudo systemctl start redis
sudo systemctl enable redis
# 5. 验证
redis-cli -a MyRedisPwd123! ping
# 应返回 PONG
方案二:使用 Docker 容器化部署(推荐,环境隔离性好)
如果你已经安装了 Docker,这是最干净、易维护的方式。
1. 安装 Docker
# CentOS
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
# Ubuntu
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
2. 启动 MySQL 容器
docker run --name my-mysql
-e MYSQL_ROOT_PASSWORD=YourStrongPassword123!
-p 3306:3306
-v /data/mysql:/var/lib/mysql
-d mysql:8.0
注:-v 参数将数据挂载到宿主机,防止容器删除后数据丢失。
3. 启动 Redis 容器
docker run --name my-redis
-p 6379:6379
-v /data/redis:/data
-d redis:alpine
redis-server --requirepass "YourStrongPassword123!"
方案三:使用阿里云原生云数据库(生产环境强烈推荐)
对于生产环境,强烈不建议在 ECS 上自建 MySQL 和 Redis,原因如下:
- 运维成本高:需要自己处理主从切换、故障恢复、自动备份、版本升级。
- 安全性风险:ECS 一旦失守,数据库直接暴露;云数据库提供白名单和 VPC 内网隔离。
- 性能瓶颈:ECS 的磁盘 I/O 和网络带宽通常不如专用的云数据库实例优化得好。
推荐做法:
- 购买 RDS MySQL 实例(支持按量付费或包年包月)。
- 购买 ApsaraDB for Redis 实例。
- 在 ECS 的安全组中,只允许 ECS 的内网 IP 访问这两个云数据库的内网地址。
- 在代码配置文件中,将数据库地址指向云数据库的内网 Endpoint(如
rm-bp1xxxxxxxxxxxx.mysql.rds.aliyuncs.com)。
优势:
- 高可用:自带主备架构,单节点故障自动切换。
- 备份恢复:一键备份,支持时间点恢复。
- 监控告警:内置丰富的性能监控图表。
- 网络优化:VPC 内网通信延迟极低且免费。
总结建议
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 学习/测试/Demo | 方案一 (手动) 或 方案二 (Docker) | 成本低,灵活,无需额外购买资源。 |
| 生产环境/正式业务 | 方案三 (云数据库 RDS + Redis) | 稳定性高,免运维,数据安全有保障,长期看更省钱(节省人力成本)。 |
安全提示:无论采用哪种方式,请务必不要将数据库端口直接暴露在公网,除非你明确知道自己在做什么。生产环境务必开启强密码认证,并限制访问来源(白名单)。
云知道CLOUD