# 职引 - 部署文档 > **最后更新**: 2026-06-09 > **生产环境**: 已部署(服务器已购 + 域名已配) ## 目录 1. [环境要求](#环境要求) 2. [生产域名](#生产域名) 3. [后端部署](#后端部署) 4. [前端部署(H5)](#前端部署h5) 5. [微信小程序部署](#微信小程序部署) 6. [数据库初始化](#数据库初始化) 7. [安全检查清单](#安全检查清单) --- ## 环境要求 ### 生产服务器 - **操作系统**: Linux (Ubuntu 20.04+ / CentOS 7+) - **Node.js**: 18.x 或更高版本 - **MongoDB**: 4.4+ (或 MongoDB Atlas 云服务) - **Nginx**: 1.18+ (反向代理) - **PM2**: 进程管理 ### 本地开发 - **Node.js**: 18.x - **MongoDB**: 本地或云服务 - **后端端口**: 3006(默认) - **前端端口**: 8085(Vite 开发服务器) --- ## 生产域名 | 用途 | 域名 | 指向 | |------|------|------| | 后端 API(小程序服务端) | `https://zhiyinwx.yzrcloud.cn` | Nginx → `http://localhost:3006` | | H5 网页端 | `https://zhiyin.yzrcloud.cn` | 静态目录 `/www/wwwroot/zhiyin.yzrcloud.cn` | 端口固定为 **3006**,由 `main.ts` 中 `process.env.PORT || 3006` 控制。 --- ## 后端部署 ### 1. 安装依赖 ```bash cd backend npm install ``` ### 2. 配置环境变量 创建 `.env` 文件(参考 `backend/.env`): ```env MONGODB_URI=mongodb://localhost:27017/zhiyin JWT_SECRET=your-strong-secret-at-least-32-chars PORT=3006 AI_PRIMARY_KEY=your-deepseek-key AI_BACKUP_KEY=your-nvidia-key WECHAT_APPID=your-appid WECHAT_MCHID=your-mchid WECHAT_API_KEY=your-api-v3-key WECHAT_SERIAL_NO=your-cert-serial WECHAT_PRIVATE_KEY_PATH=/path/to/apiclient_key.pem WX_DAILY_QUESTION_TMPL=在微信公众平台配置的订阅消息模板ID ``` ### 3. 编译并启动 ```bash npm run build # 编译 TypeScript → dist/ node dist/main.js # 启动(或使用 PM2) ``` ### 4. PM2 进程管理 ```bash npm install -g pm2 pm2 start dist/main.js --name zhiyin-backend pm2 startup && pm2 save ``` ### 5. Nginx 反向代理(后端 API) ```nginx server { listen 443 ssl http2; server_name zhiyinwx.yzrcloud.cn; ssl_certificate /etc/nginx/ssl/yzrcloud.cn.pem; ssl_certificate_key /etc/nginx/ssl/yzrcloud.cn.key; location / { proxy_pass http://localhost:3006; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; 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_cache_bypass $http_upgrade; } } # HTTP → HTTPS 跳转 server { listen 80; server_name zhiyinwx.yzrcloud.cn; return 301 https://$host$request_uri; } ``` --- ## 前端部署(H5) ### 1. 配置 API 地址 编辑 `zhiyin-app/.env.production`: ```env VITE_API_BASE_URL=https://zhiyinwx.yzrcloud.cn/api ``` ### 2. 编译 ```bash cd zhiyin-app npm run build:h5 # 输出: dist/build/h5/ ``` ### 3. 部署到 Web 服务器 ```bash scp -r dist/build/h5/* user@your-server:/www/wwwroot/zhiyin.yzrcloud.cn/ ``` ### 4. Nginx 配置 ```nginx server { listen 443 ssl http2; server_name zhiyin.yzrcloud.cn; root /www/wwwroot/zhiyin.yzrcloud.cn; index index.html; ssl_certificate /etc/nginx/ssl/yzrcloud.cn.pem; ssl_certificate_key /etc/nginx/ssl/yzrcloud.cn.key; location / { try_files $uri $uri/ /index.html; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf)$ { expires 1y; add_header Cache-Control "public, immutable"; } } # HTTP → HTTPS 跳转 server { listen 80; server_name zhiyin.yzrcloud.cn; return 301 https://$host$request_uri; } ``` --- ## 微信小程序部署 ### 1. 修改 manifest.json 编辑 `zhiyin-app/manifest.json`,填写正式 appid。 ### 2. 编译 ```bash cd zhiyin-app npm run build:mp-weixin # 输出: dist/build/mp-weixin/ ``` ### 3. 使用微信开发者工具上传 1. 导入 `dist/build/mp-weixin/` 2. 点击「上传」 3. 登录微信公众平台提交审核 --- ## 数据库初始化 ```bash mongo > use zhiyin > db.createUser({ user: "zhiyin", pwd: "strong-password", roles: [{ role: "readWrite", db: "zhiyin" }] }) ``` --- ## 小程序编译上传 ### 环境要求 ```bash # 安装 miniprogram-ci(已在项目 devDeps 中) cd zhiyin-app && npm install --save-dev miniprogram-ci ``` ### 配置 确保以下文件就位: - `dist/build/mp-weixin/` — uni-app 构建输出(`npm run build:mp-weixin`) - 微信小程序私钥文件:`/root/opencode-workspace/微信小程序参数/宇之然AI磁场appid/private.wxf466b3c3bc411ffc.key` - `project.config.json`(构建时自动生成,appid: wxf466b3c3bc411ffc) ### 编译与预览上传 ```bash cd zhiyin-app # 构建微信小程序 npm run build:mp-weixin # 预览(生成二维码) node scripts/upload-mp.js # 直接上传(修改脚本中 ci.preview → ci.upload) ``` ### 版本号 当前线上版本:**1.0.3**(见 note.txt) --- ## 安全检查清单 - [ ] 修改默认 JWT_SECRET(当前已有环境变量值) - [ ] 移除开发模式的固定验证码 123456 - [x] 移除 `member/pay` 开发绕过(已改为真实订单校验) - [x] 套餐值统一:vip → growth/sprint(采访轮次、分析次数不再受限) - [ ] 配置 CORS 白名单(当前: `origin: '*'`) - [ ] 启用 HTTPS - [ ] 配置 MongoDB 访问权限 - [ ] 移除 console.log(生产环境) - [x] 配置微信支付生产密钥(证书已验证) - [x] 配置微信小程序密钥(appid: wxf466b3c3bc411ffc) - [ ] 配置每日一题订阅消息模板 ID(WX_DAILY_QUESTION_TMPL) --- ## 变更记录 | 日期 | 变更内容 | 操作者 | |------|----------|--------| | 2026-06-09 | 初版 | AI | | 2026-06-09 | 更新生产域名:zhiyinwx.yzrcloud.cn(API :3006)、zhiyin.yzrcloud.cn(H5 静态目录) | 小之 |