Cursor + 阿里云 ECS 实战:从写代码到上线 Web 应用全流程
Remote-SSH 连接 ECS → AI 写 Node.js 应用 → Nginx 反代 → PM2 守护 → HTTPS → GitHub Actions 自动部署
第一步
阿里云 ECS 选型与购买
推荐配置
| 配置项 | 推荐选择 | 说明 |
| 实例规格 | 2 核 2G(ecs.t6-c1m2.large) | 静态站 1 核 1G 也够,有动态逻辑建议 2 核 2G |
| 操作系统 | Ubuntu 22.04 LTS 64 位 | 本教程基于此版本 |
| 系统盘 | 40 GB 高效云盘 | 个人应用足够 |
| 带宽 | 1–3 Mbps 或按流量计费 | 个人用按流量通常更划算 |
安全组配置
| 协议 | 端口 | 来源 | 用途 |
| TCP | 22 | 你的本地 IP | SSH 登录 |
| TCP | 80 | 0.0.0.0/0 | HTTP |
| TCP | 443 | 0.0.0.0/0 | HTTPS |
💡 22 端口来源限制为你的 IP,能大幅减少暴力破解日志。本地 IP 变化时进控制台调整一次即可。
第二步
用 Cursor Remote-SSH 连接 ECS
配置 SSH Key 免密登录
ssh-keygen -t ed25519 -C "[email protected]"
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的ECS公网IP
本地 SSH Config
Host my-ecs
HostName 47.xxx.xxx.xxx
User root
IdentityFile ~/.ssh/id_ed25519
Port 22
ServerAliveInterval 60
在 Cursor 里:Ctrl+Shift+P → Remote-SSH: Connect to Host → 选 my-ecs。左下角显示 SSH: my-ecs 即成功。详细配置见 Cursor SSH 远程开发教程。
第三步
用 Cursor 写 Node.js Web 应用
连接 ECS 后,在 Cursor 终端安装 Node.js:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
新建项目目录,用 Cursor 打开,然后在 Composer 里粘贴:
目标:生成一个最小的 Node.js + Express Web 应用
- server.js:监听 3000 端口,/(首页)和 /api/health(健康检查)
- package.json:包含 start 和 dev 脚本
- public/index.html:简洁欢迎页
约束:CommonJS require,不用前端框架,不用数据库
验收:npm install && npm start 后,
curl http://localhost:3000/api/health 返回 {"status":"ok"}
生成后在终端验证:
npm install && npm start
# 新开终端
curl http://localhost:3000/api/health
第四步
Nginx 反向代理
在 Chat 里说:
帮我写一个 Nginx 配置,把 80 端口反向代理到本机 3000 端口(Node.js 应用)。
域名暂用 your-domain.com,先不配 HTTPS。
Cursor 生成配置后部署:
apt-get install -y nginx
# 把配置写入
nano /etc/nginx/sites-available/my-app
ln -sf /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
访问 http://ECS公网IP,看到 Node.js 欢迎页即成功。
第五步
PM2 守护进程
在 Chat 里说:
帮我用 PM2 启动并守护当前目录的 Node.js 应用(入口 server.js),并设置开机自启。
Cursor 给出的命令序列:
npm install -g pm2
pm2 start server.js --name my-app
pm2 startup # 复制并执行输出的 sudo 命令
pm2 save
pm2 status
💡 重启 ECS 后 pm2 status 仍显示 online 即成功。
常用 PM2 命令
pm2 logs my-app # 查看实时日志
pm2 reload my-app # 零停机热重载(更新代码后用)
pm2 restart my-app # 重启
第六步
Let's Encrypt SSL(HTTPS)
先完成第七章域名解析,确认域名能解析到 ECS 公网 IP 后,在 Chat 里说:
域名 your-domain.com 已经 DNS 解析到这台 ECS,帮我用 certbot 申请 Let's Encrypt SSL,
并自动更新 Nginx 配置为 HTTPS(80 自动跳转 443)。
apt-get install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com -d www.your-domain.com
# 按提示输入邮箱,同意条款
# certbot 自动修改 Nginx 配置并重载
访问 https://your-domain.com,浏览器锁头图标即成功。
certbot renew --dry-run # 测试自动续期是否正常
第七步
域名解析与备案要点
DNS 解析
| 记录类型 | 名称 | 内容 | 代理状态 |
| A | @ | ECS 公网 IP | 仅 DNS(关闭 CDN 代理) |
| A | www | ECS 公网 IP | 仅 DNS |
ICP 备案(国内服务器必须)
⚠️ 如果 ECS 在中国大陆区域,通过域名提供 Web 服务必须完成 ICP 备案,否则阿里云会封停 80/443 端口。
备案流程:进入阿里云「ICP 备案」控制台 → 填写网站与主办单位信息 → 上传身份证 → 初审(1–3 工作日)→ 管局审核(3–20 工作日)。
实测建议:备案期间可先在境外服务器(如阿里云新加坡节点)过渡,完成后再迁回。个人站信息准确时 1–2 周可完成。
第八步
GitHub Actions 自动部署
配好后,推代码到 GitHub → ECS 自动拉取并重启,无需手动 SSH。
1. ECS 上生成 CI 专用 Key
ssh-keygen -t ed25519 -f ~/.ssh/github-actions -N ""
cat ~/.ssh/github-actions.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/github-actions # 复制私钥备用
2. GitHub 仓库添加 Secrets
| Secret 名称 | 值 |
| ECS_HOST | ECS 公网 IP |
| ECS_USER | root |
| ECS_SSH_KEY | 上一步复制的私钥内容 |
3. 让 Cursor 生成 Workflow 文件
帮我在 .github/workflows/deploy.yml 生成一个 GitHub Actions 工作流:
推送到 main 分支时,SSH 登录生产服务器(用 Secrets 里的 ECS_HOST、ECS_USER、ECS_SSH_KEY),
在 /root/my-app 执行:git pull && npm install && pm2 reload my-app
提交推送后,在 GitHub Actions 标签里看到绿色对勾即成功。
✅ 验证:本地改一行代码,commit 推送,等 1–2 分钟访问网站看到新内容,即自动部署成功。
相关教程
通过邀请通道注册,首月 Pro / Pro+ / Ultra 立享 5 折——Pro 仅需 $10、Pro+ 仅需 $30、Ultra 仅需 $100。
👉 立即开通(首月 5 折)
邀请通道仅对首月生效,次月起恢复原价;可随时取消订阅。