在阿里云 ECS 上同时部署前端和后端应用,常见且推荐的做法是:Nginx 作为反向X_X + 后端服务独立运行。下面以 Linux(Ubuntu/Alibaba Cloud Linux)为例,给出清晰步骤。
一、前期准备
-
购买并配置 ECS
- 选择合适实例规格(根据业务量)。
- 系统盘:建议 40GB+ SSD。
- 安全组:放行端口(如 80、443、自定义后端端口等)。
- 绑定公网 IP 或弹性公网 IP(EIP)。
-
登录 ECS
ssh -i your-key.pem root@your-ecs-ip -
更新系统 & 安装基础工具
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 run或docker-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.com和www.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。
六、监控与维护建议
-
日志查看
- Nginx:
/var/log/nginx/access.log、error.log - 后端:PM2
pm2 logs或 systemd journaljournalctl -u my-backend
- Nginx:
-
备份
- 定期备份数据库、代码、配置文件。
- 可使用阿里云快照功能对 ECS 做整机备份。
-
安全加固
- 关闭不必要的端口。
- 使用密钥登录 SSH,禁用密码登录。
- 定期更新系统和软件。
七、替代方案简述
如果不想自己维护 Nginx + 后端进程,也可以考虑:
- Docker Compose:将前端、后端、Nginx 放在一个 compose 文件中统一管理。
- Kubernetes / ACK:适合多实例、高可用场景。
- 阿里云轻量应用服务器:简单场景下更便捷,内置镜像模板。
如果你能提供:
- 后端语言/框架(如 Spring Boot、Express、Django 等)
- 前端框架(React/Vue/Angular 等)
- 是否使用 Docker
我可以给出更贴合你技术栈的具体命令和配置文件模板。
CLOUD云枢