224 lines
4.5 KiB
Markdown
224 lines
4.5 KiB
Markdown
# ZJPB v2.6.0 快速部署指南
|
||
|
||
**版本**: v2.6.0
|
||
**部署时间**: 2026-02-06
|
||
**重要性**: ⚠️ 高(成本优化,建议立即部署)
|
||
|
||
---
|
||
|
||
## 📋 更新内容
|
||
|
||
### 主要改进
|
||
✅ **成本优化**: API调用减少90%+,大幅降低博查API费用
|
||
✅ **安全防护**: 添加频率限制和验证码防护,防止滥用
|
||
✅ **文档整合**: 清理根目录,文档归档到docs/目录
|
||
|
||
### 技术变更
|
||
- 移除详情页自动调用博查API
|
||
- 改为用户点击按钮按需加载
|
||
- 新增频率限制(每IP每小时3次)
|
||
- 新增验证码防护机制
|
||
|
||
---
|
||
|
||
## 🚀 快速部署 (5分钟)
|
||
|
||
### 方式一:通过1Panel + Git
|
||
|
||
1. **SSH连接服务器**
|
||
```bash
|
||
ssh root@server.zjpb.net
|
||
```
|
||
|
||
2. **进入项目目录**
|
||
```bash
|
||
cd /opt/1panel/apps/zjpb
|
||
```
|
||
|
||
3. **拉取最新代码**
|
||
```bash
|
||
git pull origin master
|
||
```
|
||
|
||
4. **安装新依赖**
|
||
```bash
|
||
source venv/bin/activate
|
||
pip install Flask-Limiter==3.5.0
|
||
# 或
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
5. **重启应用**
|
||
- **方式A**: 通过1Panel Web界面
|
||
- 登录1Panel → 找到zjpb应用 → 点击"重启"
|
||
|
||
- **方式B**: 通过命令行
|
||
```bash
|
||
supervisorctl restart zjpb
|
||
# 或
|
||
systemctl restart zjpb
|
||
```
|
||
|
||
6. **验证部署**
|
||
- 访问任意工具详情页
|
||
- 确认页面加载快了(不再自动调用API)
|
||
- 点击"加载资讯"按钮,确认能正常获取新闻
|
||
|
||
---
|
||
|
||
## ✅ 部署验证清单
|
||
|
||
### 功能验证
|
||
- [ ] 详情页正常打开,速度更快
|
||
- [ ] 新闻区域显示占位提示或已有新闻
|
||
- [ ] 点击"加载资讯"按钮能正常加载
|
||
- [ ] 加载后新闻正常显示
|
||
- [ ] 连续点击4次,出现频率限制提示
|
||
|
||
### 错误检查
|
||
```bash
|
||
# 查看应用日志
|
||
tail -f logs/error.log
|
||
|
||
# 确认无报错
|
||
# 正常情况应该看到类似日志:
|
||
# "Rate limit triggered: 192.168.x.x" (频率限制触发)
|
||
```
|
||
|
||
### 性能对比
|
||
**部署前**: 打开详情页加载时间 2-3秒(调用API)
|
||
**部署后**: 打开详情页加载时间 0.5-1秒(无API调用)
|
||
|
||
---
|
||
|
||
## ⚙️ 可选配置
|
||
|
||
### 调整频率限制(可选)
|
||
|
||
编辑 `app.py:193` 附近:
|
||
|
||
```python
|
||
# 更宽松:每小时5次
|
||
is_limited, remaining, reset_time = limiter.is_rate_limited(
|
||
client_ip,
|
||
limit=5, # 改为5
|
||
window_minutes=60
|
||
)
|
||
|
||
# 更严格:每30分钟2次
|
||
is_limited, remaining, reset_time = limiter.is_rate_limited(
|
||
client_ip,
|
||
limit=2, # 改为2
|
||
window_minutes=30 # 改为30
|
||
)
|
||
```
|
||
|
||
修改后需要重启应用。
|
||
|
||
### 配置验证码(推荐)
|
||
|
||
**当前状态**: 使用简单验证(开发模式)
|
||
**生产建议**: 配置Google reCAPTCHA或hCaptcha
|
||
|
||
详见:`docs/archive/DEVELOP_v2.6.0_API_SECURITY.md`
|
||
|
||
---
|
||
|
||
## 🐛 故障排查
|
||
|
||
### 问题1: 点击按钮没反应
|
||
|
||
**检查**:
|
||
```bash
|
||
# 查看浏览器控制台是否有JavaScript错误
|
||
# 查看后端日志
|
||
tail -f logs/error.log
|
||
```
|
||
|
||
**解决**: 确认 `utils/rate_limiter.py` 文件存在
|
||
|
||
### 问题2: 提示"博查API未配置"
|
||
|
||
**检查**:
|
||
```bash
|
||
cat .env | grep BOCHA_API_KEY
|
||
```
|
||
|
||
**解决**: 确认 `.env` 中有 `BOCHA_API_KEY=xxx`
|
||
|
||
### 问题3: 导入错误 "No module named 'utils.rate_limiter'"
|
||
|
||
**解决**:
|
||
```bash
|
||
# 确认文件存在
|
||
ls utils/rate_limiter.py
|
||
|
||
# 如果不存在,手动创建或从Git拉取
|
||
git checkout utils/rate_limiter.py
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 成本对比
|
||
|
||
**假设场景**: 日均1000次详情页访问
|
||
|
||
| 版本 | 自动调用 | 手动加载 | 总调用 | 日成本 | 月成本 |
|
||
|------|---------|---------|--------|--------|--------|
|
||
| v2.5 | 1000次 | 0次 | 1000次 | ¥10 | ¥300 |
|
||
| v2.6 | 0次 | ~50次 | 50次 | ¥0.5 | ¥15 |
|
||
|
||
**节省**: 每月约 ¥285 💰
|
||
|
||
---
|
||
|
||
## 🔄 回滚方案
|
||
|
||
如果部署后出现问题,可以快速回滚:
|
||
|
||
```bash
|
||
cd /opt/1panel/apps/zjpb
|
||
|
||
# 回滚到v2.5
|
||
git reset --hard e71230c
|
||
|
||
# 重启应用
|
||
supervisorctl restart zjpb
|
||
```
|
||
|
||
---
|
||
|
||
## 📚 相关文档
|
||
|
||
- 完整开发文档: `docs/archive/DEVELOP_v2.6.0_API_SECURITY.md`
|
||
- 文档索引: `docs/README.md`
|
||
- 部署信息: `DEPLOY_INFO.md`
|
||
|
||
---
|
||
|
||
## 💡 下一步建议
|
||
|
||
### 立即执行
|
||
✅ 部署v2.6.0(成本优化)
|
||
✅ 验证功能正常
|
||
|
||
### 1周内执行
|
||
- [ ] 配置Redis存储(持久化频率限制数据)
|
||
- [ ] 配置生产环境验证码服务
|
||
- [ ] 监控API调用量变化
|
||
|
||
### 1个月内执行
|
||
- [ ] 添加API调用统计面板
|
||
- [ ] 优化验证码用户体验
|
||
- [ ] 实现白名单机制
|
||
|
||
---
|
||
|
||
**部署时间**: < 5分钟
|
||
**风险等级**: 低(可快速回滚)
|
||
**收益**: 成本优化90%+ 🎉
|
||
|
||
---
|
||
|
||
最后更新: 2026-02-06
|