|
|
|
|
@ -0,0 +1,253 @@
|
|
|
|
|
# 代码漏洞检测系统部署指南
|
|
|
|
|
|
|
|
|
|
## 系统要求
|
|
|
|
|
|
|
|
|
|
### 后端要求
|
|
|
|
|
- Python 3.8+
|
|
|
|
|
- pip 包管理器
|
|
|
|
|
- 至少 2GB 可用内存
|
|
|
|
|
|
|
|
|
|
### 前端要求
|
|
|
|
|
- Node.js 16+
|
|
|
|
|
- npm 或 yarn 包管理器
|
|
|
|
|
|
|
|
|
|
## 快速启动
|
|
|
|
|
|
|
|
|
|
### 方式一:使用批处理脚本(Windows)
|
|
|
|
|
|
|
|
|
|
1. 双击运行 `start_all.bat` 自动启动前后端服务
|
|
|
|
|
2. 等待服务启动完成
|
|
|
|
|
3. 访问 http://localhost:3000
|
|
|
|
|
|
|
|
|
|
### 方式二:手动启动
|
|
|
|
|
|
|
|
|
|
#### 启动后端服务
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 进入后端目录
|
|
|
|
|
cd backend
|
|
|
|
|
|
|
|
|
|
# 安装依赖
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
|
|
|
|
# 启动服务
|
|
|
|
|
python main.py
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
后端服务将在 http://localhost:8000 启动
|
|
|
|
|
|
|
|
|
|
#### 启动前端服务
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 进入前端目录
|
|
|
|
|
cd frontend
|
|
|
|
|
|
|
|
|
|
# 安装依赖
|
|
|
|
|
npm install
|
|
|
|
|
|
|
|
|
|
# 启动开发服务器
|
|
|
|
|
npm start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
前端服务将在 http://localhost:3000 启动
|
|
|
|
|
|
|
|
|
|
## 配置说明
|
|
|
|
|
|
|
|
|
|
### 环境变量配置
|
|
|
|
|
|
|
|
|
|
创建 `.env` 文件在 `backend` 目录下:
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
# 数据库配置
|
|
|
|
|
DATABASE_URL=sqlite:///./code_scanner.db
|
|
|
|
|
|
|
|
|
|
# AI服务配置
|
|
|
|
|
DEEPSEEK_API_KEY=your_deepseek_api_key_here
|
|
|
|
|
DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions
|
|
|
|
|
|
|
|
|
|
# 文件上传配置
|
|
|
|
|
UPLOAD_FOLDER=uploads
|
|
|
|
|
MAX_CONTENT_LENGTH=16777216
|
|
|
|
|
|
|
|
|
|
# 扫描配置
|
|
|
|
|
MAX_SCAN_FILES=1000
|
|
|
|
|
SCAN_TIMEOUT=300
|
|
|
|
|
|
|
|
|
|
# 报告配置
|
|
|
|
|
REPORTS_FOLDER=reports
|
|
|
|
|
|
|
|
|
|
# 日志配置
|
|
|
|
|
LOG_LEVEL=INFO
|
|
|
|
|
LOG_FILE=app.log
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 数据库配置
|
|
|
|
|
|
|
|
|
|
系统默认使用 SQLite 数据库,数据库文件位于 `backend/code_scanner.db`
|
|
|
|
|
|
|
|
|
|
如需使用其他数据库,修改 `DATABASE_URL` 环境变量:
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
# PostgreSQL
|
|
|
|
|
DATABASE_URL=postgresql://user:password@localhost/code_scanner
|
|
|
|
|
|
|
|
|
|
# MySQL
|
|
|
|
|
DATABASE_URL=mysql://user:password@localhost/code_scanner
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 功能使用指南
|
|
|
|
|
|
|
|
|
|
### 1. 项目管理
|
|
|
|
|
|
|
|
|
|
1. 访问前端页面,点击"项目管理"
|
|
|
|
|
2. 点击"新建项目"按钮
|
|
|
|
|
3. 填写项目信息:
|
|
|
|
|
- 项目名称
|
|
|
|
|
- 项目描述
|
|
|
|
|
- 编程语言(Python/C++/JavaScript等)
|
|
|
|
|
- 项目路径(本地文件系统路径)
|
|
|
|
|
|
|
|
|
|
### 2. 代码扫描
|
|
|
|
|
|
|
|
|
|
1. 在项目列表中选择要扫描的项目
|
|
|
|
|
2. 点击"扫描"按钮
|
|
|
|
|
3. 选择扫描类型:
|
|
|
|
|
- 全量扫描:扫描所有文件
|
|
|
|
|
- 增量扫描:只扫描修改的文件
|
|
|
|
|
- 自定义扫描:根据配置扫描
|
|
|
|
|
4. 等待扫描完成
|
|
|
|
|
|
|
|
|
|
### 3. 查看报告
|
|
|
|
|
|
|
|
|
|
1. 扫描完成后,可在"报告中心"查看漏洞详情
|
|
|
|
|
2. 支持多种筛选条件:
|
|
|
|
|
- 按严重程度筛选
|
|
|
|
|
- 按漏洞分类筛选
|
|
|
|
|
- 按状态筛选
|
|
|
|
|
3. 支持导出多种格式:
|
|
|
|
|
- HTML报告
|
|
|
|
|
- PDF报告
|
|
|
|
|
- Excel报告
|
|
|
|
|
- JSON数据
|
|
|
|
|
|
|
|
|
|
### 4. 仪表板
|
|
|
|
|
|
|
|
|
|
仪表板提供系统概览:
|
|
|
|
|
- 项目统计
|
|
|
|
|
- 扫描统计
|
|
|
|
|
- 漏洞统计
|
|
|
|
|
- 趋势分析
|
|
|
|
|
- 分类分布
|
|
|
|
|
|
|
|
|
|
## API文档
|
|
|
|
|
|
|
|
|
|
后端API文档在服务启动后可通过以下地址访问:
|
|
|
|
|
- Swagger UI: http://localhost:8000/docs
|
|
|
|
|
- ReDoc: http://localhost:8000/redoc
|
|
|
|
|
|
|
|
|
|
## 故障排除
|
|
|
|
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
|
|
|
|
1. **后端启动失败**
|
|
|
|
|
- 检查Python版本是否满足要求
|
|
|
|
|
- 检查依赖包是否正确安装
|
|
|
|
|
- 检查端口8000是否被占用
|
|
|
|
|
|
|
|
|
|
2. **前端启动失败**
|
|
|
|
|
- 检查Node.js版本是否满足要求
|
|
|
|
|
- 检查npm依赖是否正确安装
|
|
|
|
|
- 检查端口3000是否被占用
|
|
|
|
|
|
|
|
|
|
3. **扫描失败**
|
|
|
|
|
- 检查项目路径是否正确
|
|
|
|
|
- 检查文件权限
|
|
|
|
|
- 查看后端日志获取详细错误信息
|
|
|
|
|
|
|
|
|
|
4. **AI增强功能不工作**
|
|
|
|
|
- 检查DeepSeek API密钥是否正确配置
|
|
|
|
|
- 检查网络连接
|
|
|
|
|
- 查看API调用日志
|
|
|
|
|
|
|
|
|
|
### 日志查看
|
|
|
|
|
|
|
|
|
|
- 后端日志:`backend/app.log`
|
|
|
|
|
- 前端日志:浏览器开发者工具控制台
|
|
|
|
|
|
|
|
|
|
## 生产环境部署
|
|
|
|
|
|
|
|
|
|
### Docker部署(推荐)
|
|
|
|
|
|
|
|
|
|
1. 创建 `docker-compose.yml`:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
version: '3.8'
|
|
|
|
|
services:
|
|
|
|
|
backend:
|
|
|
|
|
build: ./backend
|
|
|
|
|
ports:
|
|
|
|
|
- "8000:8000"
|
|
|
|
|
environment:
|
|
|
|
|
- DATABASE_URL=sqlite:///./code_scanner.db
|
|
|
|
|
volumes:
|
|
|
|
|
- ./data:/app/data
|
|
|
|
|
|
|
|
|
|
frontend:
|
|
|
|
|
build: ./frontend
|
|
|
|
|
ports:
|
|
|
|
|
- "3000:3000"
|
|
|
|
|
depends_on:
|
|
|
|
|
- backend
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. 启动服务:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 传统部署
|
|
|
|
|
|
|
|
|
|
1. 后端部署:
|
|
|
|
|
- 使用 gunicorn 或 uvicorn 作为WSGI服务器
|
|
|
|
|
- 配置反向代理(Nginx)
|
|
|
|
|
- 设置进程管理(systemd/supervisor)
|
|
|
|
|
|
|
|
|
|
2. 前端部署:
|
|
|
|
|
- 构建生产版本:`npm run build`
|
|
|
|
|
- 将构建文件部署到Web服务器
|
|
|
|
|
- 配置反向代理指向后端API
|
|
|
|
|
|
|
|
|
|
## 性能优化
|
|
|
|
|
|
|
|
|
|
1. **数据库优化**
|
|
|
|
|
- 为常用查询字段添加索引
|
|
|
|
|
- 定期清理历史数据
|
|
|
|
|
- 考虑使用连接池
|
|
|
|
|
|
|
|
|
|
2. **扫描性能优化**
|
|
|
|
|
- 调整扫描并发数
|
|
|
|
|
- 使用增量扫描减少重复工作
|
|
|
|
|
- 缓存扫描结果
|
|
|
|
|
|
|
|
|
|
3. **前端优化**
|
|
|
|
|
- 启用代码分割
|
|
|
|
|
- 使用CDN加速静态资源
|
|
|
|
|
- 启用Gzip压缩
|
|
|
|
|
|
|
|
|
|
## 安全注意事项
|
|
|
|
|
|
|
|
|
|
1. **API安全**
|
|
|
|
|
- 配置CORS策略
|
|
|
|
|
- 实施API限流
|
|
|
|
|
- 使用HTTPS
|
|
|
|
|
|
|
|
|
|
2. **数据安全**
|
|
|
|
|
- 定期备份数据库
|
|
|
|
|
- 加密敏感配置信息
|
|
|
|
|
- 限制文件上传类型和大小
|
|
|
|
|
|
|
|
|
|
3. **访问控制**
|
|
|
|
|
- 实施用户认证
|
|
|
|
|
- 配置角色权限
|
|
|
|
|
- 记录操作日志
|