在阿里云ecs服务器安装后端的mysql和Redis?

在阿里云 ECS 上安装 MySQL 和 Redis 是构建后端服务的常见需求。根据你的具体场景(如:追求快速部署、需要高可用、或希望完全自定义配置),主要有三种方案:

  1. 使用云数据库服务(推荐):直接使用阿里云 RDS (MySQL) 和 ApsaraDB for Redis。
  2. 手动安装(轻量级/学习):在 ECS 内部通过包管理器直接安装。
  3. 容器化部署:使用 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,原因如下:

  1. 运维成本高:需要自己处理主从切换、故障恢复、自动备份、版本升级。
  2. 安全性风险:ECS 一旦失守,数据库直接暴露;云数据库提供白名单和 VPC 内网隔离。
  3. 性能瓶颈:ECS 的磁盘 I/O 和网络带宽通常不如专用的云数据库实例优化得好。

推荐做法:

  1. 购买 RDS MySQL 实例(支持按量付费或包年包月)。
  2. 购买 ApsaraDB for Redis 实例。
  3. 在 ECS 的安全组中,只允许 ECS 的内网 IP 访问这两个云数据库的内网地址
  4. 在代码配置文件中,将数据库地址指向云数据库的内网 Endpoint(如 rm-bp1xxxxxxxxxxxx.mysql.rds.aliyuncs.com)。

优势

  • 高可用:自带主备架构,单节点故障自动切换。
  • 备份恢复:一键备份,支持时间点恢复。
  • 监控告警:内置丰富的性能监控图表。
  • 网络优化:VPC 内网通信延迟极低且免费。

总结建议

场景 推荐方案 理由
学习/测试/Demo 方案一 (手动)方案二 (Docker) 成本低,灵活,无需额外购买资源。
生产环境/正式业务 方案三 (云数据库 RDS + Redis) 稳定性高,免运维,数据安全有保障,长期看更省钱(节省人力成本)。

安全提示:无论采用哪种方式,请务必不要将数据库端口直接暴露在公网,除非你明确知道自己在做什么。生产环境务必开启强密码认证,并限制访问来源(白名单)。

未经允许不得转载:云知道CLOUD » 在阿里云ecs服务器安装后端的mysql和Redis?