260 lines
4.8 KiB
Markdown
260 lines
4.8 KiB
Markdown
# 职引 - 部署文档
|
||
|
||
## 目录
|
||
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
|