如何在一台阿里云ECS实例上部署前端和后端应用?

在阿里云 ECS 上同时部署前端和后端应用,常见且推荐的做法是:Nginx 作为反向X_X + 后端服务独立运行。下面以 Linux(Ubuntu/Alibaba Cloud Linux)为例,给出清晰步骤。


一、前期准备

  1. 购买并配置 ECS

    • 选择合适实例规格(根据业务量)。
    • 系统盘:建议 40GB+ SSD。
    • 安全组:放行端口(如 80、443、自定义后端端口等)。
    • 绑定公网 IP 或弹性公网 IP(EIP)。
  2. 登录 ECS

    ssh -i your-key.pem root@your-ecs-ip
  3. 更新系统 & 安装基础工具

    yum update -y          # CentOS/Alibaba Cloud Linux
    # 或
    apt update && apt upgrade -y   # Ubuntu/Debian
    
    # 安装常用工具
    yum install -y git curl wget vim net-tools     # CentOS
    # 或
    apt install -y git curl wget vim net-tools     # Ubuntu

二、部署后端应用

假设后端是 Node.js / Java / Go / Python 等任意语言,这里以 Node.js 为例(其他语言思路相同)。

1. 安装运行时环境

Node.js 示例

# 使用 nvm 安装指定版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc

nvm install 18
nvm use 18
npm install -g pm2

Java 示例(Spring Boot)

yum install -y java-17-openjdk-devel   # 或 apt install openjdk-17-jdk

Go / Python 等

直接安装对应运行时即可。

2. 上传后端代码

方式一:Git 拉取

cd /opt
git clone https://github.com/youruser/your-backend.git
cd your-backend

方式二:本地打包后通过 scp 上传:

# 本地执行
tar czf backend.tar.gz your-backend-folder/
scp backend.tar.gz root@your-ecs-ip:/opt/

# 远程解压
cd /opt
tar xzf backend.tar.gz
rm backend.tar.gz

3. 安装依赖 & 构建

cd /opt/your-backend

# Node.js
npm install --production

# Spring Boot (Maven)
mvn clean package -DskipTests

# Go
go build -o server .

4. 启动后端进程(推荐使用 PM2 / systemd)

使用 PM2(Node.js 示例)

pm2 start app.js --name my-backend
pm2 save
pm2 startup   # 按提示执行命令设置开机自启

使用 systemd(通用)

创建服务文件:

vi /etc/systemd/system/my-backend.service

内容示例(Node.js):

[Unit]
Description=My Backend Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/your-backend
ExecStart=/usr/bin/node app.js
Restart=on-failure
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

启用并启动:

systemctl daemon-reload
systemctl enable my-backend
systemctl start my-backend
systemctl status my-backend

注意:

  • 后端通常监听 localhost:3000 或类似内网端口,不要直接暴露在公网。
  • 若使用 Docker,也可用 docker rundocker-compose 管理。

三、部署前端应用

假设前端是 React/Vue/Angular 等 SPA 项目,需要构建静态资源后由 Nginx 托管。

1. 安装构建工具(Node.js 已装则跳过)

nvm install 18
nvm use 18
npm install -g yarn  # 可选

2. 上传前端代码

cd /opt
git clone https://github.com/youruser/your-frontend.git
cd your-frontend

3. 构建生产版本

# 根据项目不同,可能是 npm run build / yarn build
npm install
npm run build   # 生成 dist/ 或 build/ 目录

构建产物通常在 dist/build/ 中。


四、安装并配置 Nginx

1. 安装 Nginx

# CentOS/Alibaba Cloud Linux
yum install -y nginx

# Ubuntu/Debian
apt install -y nginx

2. 配置 Nginx 反向X_X

编辑配置文件(示例路径 /etc/nginx/conf.d/frontend.conf):

server {
    listen 80;
    server_name example.com www.example.com;  # 替换为你的域名

    # 前端静态资源
    location / {
        root /opt/your-frontend/dist;   # 根据你的实际路径调整
        index index.html;
        try_files $uri $uri/ /index.html;  # SPA 路由支持
    }

    # 后端 API 接口
    location /api/ {
        proxy_pass http://127.0.0.1:3000;  # 后端地址和端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 可选:超时设置
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }

    # 其他 API 前缀可按需添加
    # location /other-api/ { ... }
}

说明:

  • 前端访问 http://example.com/user/profile 会由 Nginx 返回 index.html,前端路由处理。
  • 所有 /api/* 请求转发到后端服务。

3. 测试并重启 Nginx

nginx -t            # 检查配置语法
systemctl restart nginx
systemctl enable nginx
systemctl status nginx

五、域名与 HTTPS(可选但推荐)

1. 解析域名

在阿里云 DNS 控制台:

  • example.comwww.example.com 的 A 记录指向 ECS 公网 IP。

2. 申请 SSL 证书(Let’s Encrypt)

安装 certbot:

# CentOS
yum install -y epel-release
yum install -y certbot python3-certbot-nginx

# Ubuntu
apt install -y certbot python3-certbot-nginx

申请并自动配置 HTTPS:

certbot --nginx -d example.com -d www.example.com

按提示操作,完成后会自动修改 Nginx 配置并开启 HTTPS。


六、监控与维护建议

  1. 日志查看

    • Nginx:/var/log/nginx/access.logerror.log
    • 后端:PM2 pm2 logs 或 systemd journal journalctl -u my-backend
  2. 备份

    • 定期备份数据库、代码、配置文件。
    • 可使用阿里云快照功能对 ECS 做整机备份。
  3. 安全加固

    • 关闭不必要的端口。
    • 使用密钥登录 SSH,禁用密码登录。
    • 定期更新系统和软件。

七、替代方案简述

如果不想自己维护 Nginx + 后端进程,也可以考虑:

  • Docker Compose:将前端、后端、Nginx 放在一个 compose 文件中统一管理。
  • Kubernetes / ACK:适合多实例、高可用场景。
  • 阿里云轻量应用服务器:简单场景下更便捷,内置镜像模板。

如果你能提供:

  • 后端语言/框架(如 Spring Boot、Express、Django 等)
  • 前端框架(React/Vue/Angular 等)
  • 是否使用 Docker

我可以给出更贴合你技术栈的具体命令和配置文件模板。

未经允许不得转载:CLOUD云枢 » 如何在一台阿里云ECS实例上部署前端和后端应用?