9276ab9028
## 新增功能 - 冲刺版 ¥49.9/月:完整支付→激活→权益扣减链路 - 每日一题定时推送(@nestjs/schedule,早8点微信订阅消息) - miniprogram-ci 编译上传脚本(scripts/upload-mp.js) ## Bug修复 - 套餐值统一:vip→growth/sprint(interview轮次限制、analyze次数检查) - member/pay 移除开发绕过:改为订单校验后激活 - progress→report 参数名不匹配:id→interviewId - result.vue resume.create() 参数传错(对象→独立参数) - resume.vue analyze请求缺少Authorization header - bank.vue contribution请求缺少Authorization header - member.vue startPay() 缺少try/catch导致网络错误崩溃 - login.vue 调试面板 v-if="true" 生产泄漏 ## 配置 - 微信支付生产证书就位(商户号1113760598) - .env 清理冗余文件(删除.example/.production) - WX_NOTIFY_URL 更新为 zhiyinwx.yzrcloud.cn ## 文档 - PROJECT-STATUS.md v4.1→v4.2,状态全面更新 - DEPLOYMENT.md 新增小程序编译上传章节、清理检查清单
5.9 KiB
5.9 KiB
职引 - 部署文档
最后更新: 2026-06-09 生产环境: 已部署(服务器已购 + 域名已配)
目录
环境要求
生产服务器
- 操作系统: 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. 安装依赖
cd backend
npm install
2. 配置环境变量
创建 .env 文件(参考 backend/.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. 编译并启动
npm run build # 编译 TypeScript → dist/
node dist/main.js # 启动(或使用 PM2)
4. PM2 进程管理
npm install -g pm2
pm2 start dist/main.js --name zhiyin-backend
pm2 startup && pm2 save
5. Nginx 反向代理(后端 API)
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:
VITE_API_BASE_URL=https://zhiyinwx.yzrcloud.cn/api
2. 编译
cd zhiyin-app
npm run build:h5
# 输出: dist/build/h5/
3. 部署到 Web 服务器
scp -r dist/build/h5/* user@your-server:/www/wwwroot/zhiyin.yzrcloud.cn/
4. 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. 编译
cd zhiyin-app
npm run build:mp-weixin
# 输出: dist/build/mp-weixin/
3. 使用微信开发者工具上传
- 导入
dist/build/mp-weixin/ - 点击「上传」
- 登录微信公众平台提交审核
数据库初始化
mongo
> use zhiyin
> db.createUser({
user: "zhiyin",
pwd: "strong-password",
roles: [{ role: "readWrite", db: "zhiyin" }]
})
小程序编译上传
环境要求
# 安装 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)
编译与预览上传
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
- 移除
member/pay开发绕过(已改为真实订单校验) - 套餐值统一:vip → growth/sprint(采访轮次、分析次数不再受限)
- 配置 CORS 白名单(当前:
origin: '*') - 启用 HTTPS
- 配置 MongoDB 访问权限
- 移除 console.log(生产环境)
- 配置微信支付生产密钥(证书已验证)
- 配置微信小程序密钥(appid: wxf466b3c3bc411ffc)
- 配置每日一题订阅消息模板 ID(WX_DAILY_QUESTION_TMPL)
变更记录
| 日期 | 变更内容 | 操作者 |
|---|---|---|
| 2026-06-09 | 初版 | AI |
| 2026-06-09 | 更新生产域名:zhiyinwx.yzrcloud.cn(API :3006)、zhiyin.yzrcloud.cn(H5 静态目录) | 小之 |