From 38540abf8ddaaab6806939ba38d3723e1ddc1b1f Mon Sep 17 00:00:00 2001 From: yangxuan Date: Wed, 12 Aug 2026 23:00:07 +0800 Subject: [PATCH] auto backup 2026-08-12 23:00 --- ...684ebfd353e0041620fc28215fd7c2a9d.attested | 2 +- workspace-cc/MEMORY.md | 5 +- workspace-cc/memory/2026-08-12.md | 85 +++++++++++++++++++ 3 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 workspace-cc/memory/2026-08-12.md diff --git a/workspace-attestations/da0118d17fedeff844199c615950eb1684ebfd353e0041620fc28215fd7c2a9d.attested b/workspace-attestations/da0118d17fedeff844199c615950eb1684ebfd353e0041620fc28215fd7c2a9d.attested index 697a388..35cdaee 100644 --- a/workspace-attestations/da0118d17fedeff844199c615950eb1684ebfd353e0041620fc28215fd7c2a9d.attested +++ b/workspace-attestations/da0118d17fedeff844199c615950eb1684ebfd353e0041620fc28215fd7c2a9d.attested @@ -1,2 +1,2 @@ openclaw-workspace-attestation:v1 -2026-08-12T13:59:45.622Z +2026-08-12T14:58:28.426Z diff --git a/workspace-cc/MEMORY.md b/workspace-cc/MEMORY.md index 7c928a2..838bd34 100644 --- a/workspace-cc/MEMORY.md +++ b/workspace-cc/MEMORY.md @@ -16,9 +16,12 @@ - 初始化脚本:npm run init-redis(需先注入 MYSQL_PASSWORD/REDIS_PASSWORD 环境变量) - 文档:DEPLOY.md(部署)/ FRONTEND-CHANGES.md(前端改造) - 部署状态(2026-08-12):pm2 运行中,端口 48080,内存 ~45MB,内存占用远低于原 Spring Boot -- 前端已改造:env.js(baseUrl 同源) + http.js(去认证) + nav.js(/app-api/tab/ → /tab/),已 build 产物入 public/ +- 前端已改造:env.js(baseUrl=/api,走 nginx 反代) + http.js(去认证) + nav.js(/app-api/tab/ → /tab/) - 密码:MySQL readonly 密码 135246;Redis 密码 5gynj20J(存放于 server/.env,供 Node 服务启动用) +## 工作日志 +- 2026-08-12(去 Spring Boot 化 + Node 服务 VPS 部署):memory/2026-08-12.md + ## 项目结构 - 详细结构文档(前端 cc-square / 后端 ruoyi-vue-pro 各模块 / tab 调用链):memory/project-structure.md diff --git a/workspace-cc/memory/2026-08-12.md b/workspace-cc/memory/2026-08-12.md new file mode 100644 index 0000000..313cdd5 --- /dev/null +++ b/workspace-cc/memory/2026-08-12.md @@ -0,0 +1,85 @@ +# 工作日志 2026-08-12 + +## 主题:cc-square 去 Spring Boot 化 —— Node 轻服务 + Redis 点击计数 + +### 背景 / 起因 +- VPS 内存紧张,需放弃部署重型的 Spring Boot 后端(yudao/ruoyi-vue-pro) +- 前端需改造为"独立查询数据"形式 +- 书签排序需要"访问次数"记录 + +### 关键决策(用户确认) +1. 点击次数**只存 Redis**,不落 MySQL +2. Redis 启用持久化(VPS Redis 已支持 AOF) +3. 排序规则:**纯点击倒序**(ZREVRANGE) +4. Node 服务部署在 VPS +5. 前端 baseUrl 走 nginx `/api` 反代(rewrite 剥 /api → 48080) + +### 最终架构 +``` +前端(cc-square) → nginx(/api rewrite) → Node(Express, 48080) → MySQL(只读) + Redis(点击/排序) +``` + +### 连接凭据确认(已验证) +- 公网 MySQL:`101.34.227.188:3306`,readonly,密码 135246,host `%`(任意来源) +- 公网 Redis:`101.34.227.188:6379`,密码 5gynj20J,AOF 持久化 +- 验证结果:MySQL 连接+查询通(cc_website 212行/cc_engine 23行/cc_website_type 11行) + - cc_website 启用 124 条;字段:id/status/type_id/title/click/order/icon/url/description... + - cc_website_type 分类名为 **title** 列(非 name),且有 order + - cc_engine 无 order 列,排序仅按 click + +### 交付物(/home/yangxuan/cc-square/server/) +| 文件 | 说明 | +|------|------| +| server.js | 主程序:静态托管 + /tab/* 接口 + Redis 计数/排序 | +| config.js | 配置(支持环境变量)| +| scripts/init-redis.js | Redis 历史点击导入(幂等)| +| ecosystem.config.js | pm2 配置 | +| package.json | 依赖 express/mysql2/redis/axios | +| .env.example | 环境变量模板 | +| DEPLOY.md | 部署文档(含完整 pm2 命令)| +| FRONTEND-CHANGES.md | 前端改造说明 | +| README.md | 服务导航 | + +### Node 服务接口(全部实测通过) +| 方法 | 路径 | 数据源 | +|------|------|--------| +| GET | /tab/engine | MySQL cc_engine | +| GET | /tab/bookmark | MySQL cc_website_type 聚合 | +| GET | /tab/menu | MySQL | +| GET | /tab/quick?limit=N | Redis ZREVRANGE 点击排行 | +| GET | /tab/list-by-type?typeId=N | MySQL | +| GET | /tab/searchBookmark?keyword=x | MySQL | +| GET | /tab/weather/all | 高德API(未配置key时返回空,优雅降级)| +| POST | /tab/quickCount | Redis ZINCRBY(书签)| +| POST | /tab/engineCount | Redis ZINCRBY(引擎)| +| GET | /health | 健康检查 | + +### 前端改造(已完成) +1. `src/config/env.js`:baseUrl 改为 `/api`(nginx 反代) +2. `src/request/http.js`:重写精简版,去掉 token/key 认证 +3. `src/request/api/nav.js`:`/app-api/tab/` → `/tab/` +- 已 build 成功(1720 模块),响应格式兼容原 yudao `{code:0,data,msg}` + +### 部署状态 +- **本机(xuan-main)**:Node 服务 pm2 跑通验证(48080),接口全通 +- **VPS(xuan-vps / 101.34.227.188)**: + - 已备份旧前端 → `/usr/share/nginx/html.bak.20260812` + - apt 装 Node v22.23.1 + pm2 7.0.3(用户手动装) + - server 代码在 `/opt/cc-square-server/`,npm install 完成(104 包) + - `.env` 已建(含密码,600 权限) + - Redis 已初始化(120 书签 / 3 引擎) + - **Node 服务启动 + 前端 dist 替换由用户手动完成** +- **nginx**:主站 climbcube.conf 已有 `/api` 反代 → `rewrite ^/api(.*)$ $1 break; proxy_pass http://localhost:48080;` + - 前端静态目录:`/usr/share/nginx/html`(index.html 即 cc-square 导航页) + +### 待办 / 遗留 +- [ ] VPS 上启动 Node 服务(用户手动):pm2 start ecosystem.config.js +- [ ] VPS 替换前端 dist 至 /usr/share/nginx/html(用户手动) +- [ ] 前端 baseUrl 需为 /api(本机已改,dist 需重新 build 后上传) +- [ ] 天气接口需高德 key +- [ ] 安全建议:readonly host `%` 建议收窄(需用户确认) + +### 环境备注 +- 本机 shell 是 zsh(注意 pkill/zsh 通配符坑) +- VPS 是 Debian 12,内存 3.7G,磁盘 69G/32G 已用 +- VPS 上多处是 debian 用户属主(/usr/share/nginx/html, /opt/cc-square-server)