博主头像
ZHUQIY的小站

一个普通的小站

叶片疾病检测系统部署说明文档

系统概述

叶片疾病检测系统是一个基于Spring Boot和Python机器学习模型的应用程序,用于检测植物叶片疾病。系统由三个主要部分组成:

  1. 前端:用户界面,允许用户上传图片并查看检测结果
  2. 后端服务(Spring Boot):处理用户请求、图像上传和数据存储
  3. 模型服务(Python):执行叶片疾病检测的机器学习模型

    数据库功能说明

    在叶片疾病检测系统中,数据库主要用于:

  4. 存储检测记录 :每次用户上传图片进行疾病检测时,系统会创建一条检测记录,包含以下信息:

    • 检测ID(自动生成)
    • 上传图片的路径
    • 检测结果(疾病名称)
    • 检测置信度(百分比)
    • 疾病详细信息(症状、防治方法等)
    • 热力图路径(用于可视化显示病变区域)
    • 检测时间
  5. 支持历史记录查询 :用户可以查看过去的所有检测记录,便于跟踪植物健康状况的变化。
  6. 错误记录管理 :当检测过程出现错误时,系统会记录错误信息,便于后续排查问题。

    系统架构

    叶片疾病检测系统
    ├── 前端 (HTML/CSS/JavaScript)
    ├── 后端服务 (Spring Boot)
    │   └── 数据库 (MySQL)
    └── 模型服务 (Python)

部署要求

硬件要求

  • CPU: 至少2核
  • 内存: 至少4GB
  • 存储: 至少10GB可用空间

    软件要求

  • JDK 11或更高版本
  • Maven 3.6或更高版本
  • Python 3.8或更高版本
  • pip(Python包管理器)
  • MySQL 8.0或更高版本

    部署步骤

    1. 数据库配置

  • 安装MySQL:

    brew install mysql
  1. 启动MySQL服务:

    brew services start mysql
  2. 创建数据库和用户:

    CREATE DATABASE leaf_disease_detection;
    CREATE USER 'leafuser'@'localhost' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON leaf_disease_detection.* TO 'leafuser'@'localhost';
    FLUSH PRIVILEGES;
  3. 数据库配置在后端的 application.properties 文件中:

    spring.datasource.url=jdbc:mysql://localhost:3306/leaf_disease_detection
    spring.datasource.username=leafuser
    spring.datasource.password=your_password
    spring.jpa.hibernate.ddl-auto=update

2. 模型服务部署

  1. 安装Python依赖:

    cd /Users/huxueyan/Desktop/leaf-disease-detection/model
    pip install -r requirements.txt
  2. 启动模型服务:

    cd /Users/huxueyan/Desktop/leaf-disease-detection/model
    python app.py

模型服务默认在 http://127.0.0.1:3000 上运行。

3. 后端服务部署

  1. 编译后端服务:

    cd /Users/huxueyan/Desktop/leaf-disease-detection/backend
    mvn clean package
  2. 配置上传目录和模型服务URL:
    在 application.properties 文件中确保以下配置正确:

    app.upload.dir=/Users/huxueyan/Desktop/leaf-disease-detection/uploads
    model.service.url=http://127.0.0.1:3000
  3. 启动后端服务:

    cd /Users/huxueyan/Desktop/leaf-disease-detection/backend
    java -jar target/backend-0.0.1-SNAPSHOT.jar

后端服务默认在 http://localhost:8080 上运行。

4. 前端部署

前端是静态HTML/CSS/JavaScript文件,可以通过以下方式部署:

  1. 直接从文件系统打开:

    open /Users/huxueyan/Desktop/leaf-disease-detection/frontend/index.html
  2. 或者使用简单的HTTP服务器:

    cd /Users/huxueyan/Desktop/leaf-disease-detection/frontend
    python -m http.server 8000

然后在浏览器中访问 http://localhost:8000

数据库表结构

系统主要使用 detection_record 表存储检测记录:

CREATE TABLE detection_record (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    image_path VARCHAR(255) NOT NULL,
    result VARCHAR(255),
    confidence DOUBLE,
    details TEXT,
    heatmap_path VARCHAR(255),
    detection_time DATETIME
);

API接口说明

模型服务API

  1. 健康检查

    • URL: GET /health
    • 响应: {"status": "ok"}
  2. 预测接口

    • URL: POST /predict
    • 请求: 表单数据,包含 image 字段(图片文件)
    • 响应: JSON格式

      {
        "result": "疾病名称",
        "confidence": 0.95,
        "details": "疾病详细信息...",
        "heatmapPath": "/path/to/heatmap.jpg"
      }

      后端服务API

  3. 上传图片并检测疾病

    • URL: POST /api/detect
    • 请求: 表单数据,包含 file 字段(图片文件)
    • 响应: JSON格式

      {
        "id": 1,
        "imagePath": "/uploads/image.jpg",
        "result": "疾病名称",
        "confidence": 95.0,
        "details": "疾病详细信息...",
        "heatmapPath": "/uploads/heatmap.jpg",
        "detectionTime": "2023-05-20T14:30:45"
      }
  4. 获取所有检测记录

    • URL: GET /api/records
    • 响应: JSON数组,包含所有检测记录
  5. 获取单个检测记录

    • URL: GET /api/records/{id}
    • 响应: JSON格式的单个检测记录

      故障排除

  6. 数据库连接问题

    • 确保MySQL服务正在运行: brew services list
    • 检查数据库连接配置是否正确
    • 检查数据库用户是否有足够的权限
    • 常见错误: Connection refused 表示MySQL服务未启动
  7. 模型服务连接问题

    • 确保模型服务正在运行
    • 检查 model.service.url 配置是否正确
    • 检查防火墙设置是否允许端口3000的连接
  8. 图片上传问题

    • 确保 app.upload.dir 目录存在且有写入权限
    • 检查上传的图片格式是否为JPG或PNG
    • 检查图片大小是否超过限制(5MB)

      数据备份与恢复

  9. 备份数据库:

    mysqldump -u leafuser -p leaf_disease_detection > backup.sql
  10. 恢复数据库:

    mysql -u leafuser -p leaf_disease_detection < backup.sql

叶子疾病检测系统的Java使用和后端部署结构

根据您的项目文件,我可以看到这是一个叶子疾病检测系统,使用了Java Spring Boot作为后端框架。以下是对Java使用和后端部署结构的详细分析:

1. Java技术栈

1.1 核心框架

  • Spring Boot 2.7.0 :作为主要的后端框架
  • Java 11 :项目使用的Java版本

    1.2 主要依赖

    从 pom.xml 文件中可以看到:

  • Spring Boot Starter Web:提供Web应用程序支持
  • Apache HttpClient/HttpCore:用于HTTP请求处理
  • 其他Spring Boot相关依赖

    2. 后端代码结构

    根据 inputFiles.lst 文件,后端代码组织如下:

2.1 主要包结构

com.leafdisease.backend/
├── LeafDiseaseApplication.java (主应用程序入口)
├── controller/
│   └── DetectionController.java (API控制器)
├── service/
│   ├── DetectionService.java (接口)
│   ├── LeafDiseaseService.java (接口)
│   └── impl/
│       └── DetectionServiceImpl.java (实现类)
├── entity/
│   └── DetectionRecord.java (数据实体)
├── model/
│   └── DetectionResult.java (结果模型)
├── config/
│   ├── AppConfig.java (应用配置)
│   ├── ModelServiceConfig.java (模型服务配置)
│   └── WebConfig.java (Web配置)
└── exception/
    └── GlobalExceptionHandler.java (全局异常处理)

2.2 关键Java类

从 ModelServiceConfig.java 可以看到:

@Configuration
public class ModelServiceConfig {
    
    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        return builder
            .setConnectTimeout(Duration.ofSeconds(60))  // 增加超时时间
            .setReadTimeout(Duration.ofSeconds(60))
            .build();
    }
    
    @Bean
    public String modelServiceUrl() {
        return "http://localhost:5001";  // 确保这个地址和端口与模型服务匹配
    }
}

这表明后端通过REST API与运行在5001端口的模型服务进行通信。

## 3. 数据库配置
从 restart.sh 脚本中可以看到系统使用H2数据库:

H2数据库配置 - 使用文件模式

spring.datasource.url=jdbc:h2:file:/Users/huxueyan/Desktop/leaf-disease-detection/db/leafdb;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

启用H2控制台

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

系统还有专门的 start-h2.sh 脚本用于启动H2数据库服务。

4. 部署结构

4.1 系统组件

  1. Java后端 :运行在8080端口
  2. 前端 :运行在8888端口(基于HTML/JS/CSS)
  3. 模型服务 :运行在5001端口(Python实现)

    4.2 部署脚本

    系统提供了多个脚本来管理部署:

  • start.sh :启动系统
  • restart.sh :重启整个系统,包括前端、后端和模型服务
  • shutdown.sh :关闭系统,释放端口
  • start-h2.sh :单独启动H2数据库

    4.3 文件存储

    系统配置了上传目录:

# 上传目录配置
app.upload.dir=/Users/huxueyan/Desktop/leaf-disease-detection/uploads

# 允许上传大文件
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

从 uploads 目录中可以看到,系统存储了大量的叶子图像文件,包括原始图像和热力图(heatmap)。

## 5. 构建与运行
项目使用Maven进行构建,通过Maven Wrapper( mvnw / mvnw.cmd )确保构建环境的一致性。

从 restart.sh 脚本可以看出完整的启动流程:

1. 停止所有现有服务
2. 启动模型服务(Python)
3. 配置数据库连接
4. 启动后端服务(Java Spring Boot)
5. 启动前端服务
## 6. 系统架构图

┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 前端 │ │ Java后端 │ │ Python │
│ (8888端口) │<────>│ (8080端口) │<────>│ 模型服务 │
└─────────────┘ └─────────────┘ │ (5001端口) │

                       │              └─────────────┘
                       ▼
                 ┌─────────────┐
                 │  H2数据库   │
                 │ (文件模式)  │
                 └─────────────┘

这是一个典型的三层架构应用,前端负责用户界面,Java后端处理业务逻辑和数据持久化,Python模型服务负责叶子疾病的识别和分析。

叶片疾病检测系统部署说明文档
https://www.zhuqiy.com/technology/8.html
本文作者 zhuqiy
发布时间 2025-04-21
许可协议 CC BY-NC-SA 4.0
发表新评论