Files
zhiyin/docs/DEPLOYMENT.md
T

6.0 KiB
Raw Blame History

职引 - 部署文档

最后更新: 2026-06-21 生产环境: 已部署(服务器已购 + 域名已配)

目录

  1. 环境要求
  2. 生产域名
  3. 后端部署
  4. 前端部署(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(默认)
  • 前端端口: 8085Vite 开发服务器)

生产域名

用途 域名 指向
后端 API(小程序服务端) https://zhiyinwx.yzrcloud.cn Nginx → http://localhost:3006
H5 网页端 https://zhiyin.yzrcloud.cn 静态目录 /www/wwwroot/zhiyin.yzrcloud.cn

端口固定为 3006,由 main.tsprocess.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. 使用微信开发者工具上传

  1. 导入 dist/build/mp-weixin/
  2. 点击「上传」
  3. 登录微信公众平台提交审核

数据库初始化

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.16git tag v1.0.16


安全检查清单

  • 修改默认 JWT_SECRET(当前已有环境变量值)
  • 移除开发模式的固定验证码 123456
  • 移除 member/pay 开发绕过(已改为真实订单校验)
  • 套餐值统一:vip → growth/sprint(采访轮次、分析次数不再受限)
  • 配置 CORS 白名单(当前: origin: '*'
  • 启用 HTTPS
  • 配置 MongoDB 访问权限
  • 移除 console.log(生产环境)
  • 配置微信支付生产密钥(证书已验证)
  • 配置微信小程序密钥(appid: wxf466b3c3bc411ffc
  • 配置每日一题订阅消息模板 IDWX_DAILY_QUESTION_TMPL

变更记录

日期 变更内容 操作者
2026-06-09 初版 AI
2026-06-09 更新生产域名:zhiyinwx.yzrcloud.cnAPI :3006)、zhiyin.yzrcloud.cnH5 静态目录) 小之
2026-06-21 更新部署版本至 v1.0.16;小程序上传工具使用 git tag 自动获取版本号 小之