Cursor + 阿里云 ECS 实战:从写代码到上线 Web 应用全流程

Remote-SSH 连接 ECS → AI 写 Node.js 应用 → Nginx 反代 → PM2 守护 → HTTPS → GitHub Actions 自动部署

通过邀请链接注册 Cursor,首月 Pro / Pro+ / Ultra 立享 5 折:

👉 立即注册(首月 5 折)
第一步

阿里云 ECS 选型与购买

推荐配置

配置项推荐选择说明
实例规格2 核 2G(ecs.t6-c1m2.large)静态站 1 核 1G 也够,有动态逻辑建议 2 核 2G
操作系统Ubuntu 22.04 LTS 64 位本教程基于此版本
系统盘40 GB 高效云盘个人应用足够
带宽1–3 Mbps 或按流量计费个人用按流量通常更划算

安全组配置

协议端口来源用途
TCP22你的本地 IPSSH 登录
TCP800.0.0.0/0HTTP
TCP4430.0.0.0/0HTTPS
💡 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+PRemote-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 代理)
AwwwECS 公网 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_HOSTECS 公网 IP
ECS_USERroot
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 折)

邀请通道仅对首月生效,次月起恢复原价;可随时取消订阅。