Files
zhiyin/docs/DEPLOYMENT.md
T
2026-06-08 16:28:00 +08:00

260 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 职引 - 部署文档
## 目录
1. [环境要求](#环境要求)
2. [后端部署](#后端部署)
3. [前端部署(H5](#前端部署h5)
4. [微信小程序部署](#微信小程序部署)
5. [数据库初始化](#数据库初始化)
6. [监控和日志](#监控和日志)
---
## 环境要求
### 生产服务器
- **操作系统**: Linux (Ubuntu 20.04+ / CentOS 7+)
- **Node.js**: 18.x 或更高版本
- **MongoDB**: 4.4+ (或 MongoDB Atlas 云服务)
- **Nginx**: 1.18+ (反向代理)
- **PM2**: 进程管理
### 本地开发
- **Node.js**: 18.x
- **MongoDB**: 本地或云服务
- **HBuilderX**: uni-app 开发
---
## 后端部署
### 1. 安装依赖
```bash
cd backend
npm install --production
```
### 2. 配置环境变量
复制 `.env.example``.env.production` 并修改:
```bash
cp .env.example .env.production
vim .env.production # 修改生产配置
```
**关键配置项**
- `MONGODB_URI`: 生产数据库地址
- `JWT_SECRET`: 强密钥(至少32字符)
- `PORT`: 生产端口(推荐 3000
- `WECHAT_APPID` / `WECHAT_SECRET`: 小程序生产凭证
### 3. 编译 TypeScript
```bash
npm run build
```
### 4. 使用 PM2 启动
```bash
# 安装 PM2
npm install -g pm2
# 启动应用
pm2 start dist/main.js --name zhiyin-backend
# 设置开机自启
pm2 startup
pm2 save
```
### 5. 配置 Nginx 反向代理
```nginx
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
```
---
## 前端部署(H5
### 1. 修改 API 地址
编辑 `zhiyin-app/config/api.js`
```javascript
export const BASE_URL = 'https://api.yourdomain.com/api'
```
### 2. 编译 H5
```bash
cd zhiyin-app
npm run build:h5
```
### 3. 部署到 Web 服务器
`dist/build/h5/` 目录上传到服务器:
```bash
# 使用 scp 上传
scp -r dist/build/h5/* user@your-server:/var/www/zhiyin/
# 或使用 FTP/SSH 上传
```
### 4. 配置 Nginx
```nginx
server {
listen 80;
server_name yourdomain.com;
root /var/www/zhiyin;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
```
---
## 微信小程序部署
### 1. 修改配置
编辑 `zhiyin-app/manifest.json`
```json
{
"mp-weixin": {
"appid": "your-production-appid"
}
}
```
### 2. 编译小程序
```bash
cd zhiyin-app
npm run build:mp-weixin
```
### 3. 使用微信开发者工具上传
1. 打开微信开发者工具
2. 导入 `dist/build/mp-weixin/` 目录
3. 点击「上传」按钮
4. 填写版本号和项目备注
5. 登录微信公众平台提交审核
### 4. 提交审核前检查
- ✅ 已配置合法域名(在微信公众平台)
- ✅ 已通过 AI 深度合成类目审批
- ✅ 已配置隐私协议和用户协议
- ✅ 已测试所有核心功能
---
## 数据库初始化
### 1. 创建数据库和用户
```bash
mongo
> use zhiyin
> db.createUser({
user: "zhiyin",
pwd: "strong-password",
roles: [{ role: "readWrite", db: "zhiyin" }]
})
```
### 2. 创建索引
```bash
cd backend
node scripts/create-indexes.js
```
### 3. 初始化管理员账号(可选)
```bash
node scripts/create-admin.js
```
---
## 监控和日志
### 1. 日志配置
使用 PM2 查看日志:
```bash
pm2 logs zhiyin-backend
pm2 logs zhiyin-backend --lines 100
```
### 2. 错误监控
推荐集成:
- **Sentry**: 错误追踪
- **PM2 Plus**: 进程监控
- **MongoDB Atlas**: 数据库监控
### 3. 性能监控
```bash
# 查看进程状态
pm2 monit
# 查看资源占用
pm2 list
```
---
## 常见问题
### Q1: MongoDB 连接失败
**A**: 检查 `.env.production` 中的 `MONGODB_URI` 是否正确,确保数据库可访问。
### Q2: 微信小程序请求失败
**A**: 确保在微信公众平台配置了合法域名(必须是 HTTPS)。
### Q3: AI 调用失败
**A**: 检查 `AI_PRIMARY_KEY``AI_BACKUP_KEY` 是否正确,确保 API 额度充足。
---
## 安全检查清单
- [ ] 已修改默认 JWT_SECRET
- [ ] 已禁用开发模式的固定验证码
- [ ] 已配置 CORS 白名单
- [ ] 已启用 HTTPS
- [ ] 已配置 MongoDB 访问权限
- [ ] 已移除控制台日志(生产环境)
- [ ] 已配置速率限制(防止滥用)
---
## 回滚方案
如果需要回滚到上一个版本:
```bash
# 1. 查看 PM2 历史
pm2 logs zhiyin-backend --lines 1000
# 2. 重启到上一个版本
pm2 restart zhiyin-backend --version <previous-version>
# 3. 数据库回滚(如有迁移)
mongorestore --uri="<connection-string>" --drop backup/
```
---
**最后更新**: 2026-06-02