乐思 AI 智能识别平台(基于 YOLO,.NET+Vue3 开发)开源指南
乐思平台:多功能集成应用系统 乐思平台是一款基于.NET技术的综合性应用,提供用户管理、在线答题和AI图像识别功能。支持QQ邮箱注册登录,内置题库系统可实时记录成绩并导出Word文档。集成YOLOv8技术实现图片识别,后台数据大屏展示关键指标。项目采用单体与微服务双架构,技术栈包括.NET Core 8/9、MySQL、Redis、EFCore、Dapper、gRPC等,支持Docker和Kube
目录
步骤 1:将本地 aitest.sql 复制到 MySQL 容器内
项目概述
乐思平台是一款集成多种功能的综合性应用平台,涵盖用户管理、学习答题与 AI 图像识别场景。用户可通过 QQ 邮箱注册、登录,便捷管理个人账号;内置练题系统,支持在线答题,答题成绩实时记录于后台成绩中心,还能按需导出作答情况 Word 文档,方便复盘总结。集成先进 AI 模块,依托 YOLOv8 技术,允许用户上传图片识别,识别后的图片自动存储,随时查看详情。系统界面配备直观数据大屏,精准呈现识别次数、用户注册量等关键指标。
平台经历了从单体应用到微服务架构的演进,不断优化性能与扩展性,以满足日益增长的用户需求和复杂的业务场景。
项目地址
单体应用版本
https://gitee.com/libihao520/ai-recognition-system
微服务版本
该平台拥有演示地址:http://47.107.226.106:8080/login,用户可使用账号 “lbhlbh”、密码 “123456” 登录体验。
功能模块
无论是单体应用版本还是微服务版本,功能模块基本一致,以下是部分功能截图:
登录注册:
数据大屏:
题库系统:
在线识别:
AI 大模型:
用户管理:
框架与技术栈
单体应用版本
- 基于微软.NetCore8.0、C#12.0 开发,采用主流数据库 MySQL、Redis,ORM 框架为 EFCore。
- 后端:asp.net Core Api、JWT、QRCode、YoloDotNet、Autofac、AutoMapper、EPPlus、word 模板引擎 SharpDocx、YOLOv8、ONNX。
- 前端:vue3、nodejs、vuex、axios 请求、promise、element ui、element plus、pinia 用户仓库与 token 持久化。
微服务版本
- 基于微软.NetCore8.0、.NetCore9.0 开发,采用主流数据库 MySQL、Redis,ORM 框架为 EFCore、Dapper。
- 后端:
-
- Platform-Api (网关 / 聚合层):.NET 8 MVC, EFCore, SignalR, Autofac, AutoMapper, EPPlus, SharpDocx, QRCode。
-
- AI Server (AI 处理核心):.NET 8, Dapper, RabbitMQ/Kafka, YoloDotNet, ONNX。
-
- Admin Server (管理后台核心):.NET 8, DDD, 中介者模式,CQRS, EFCore 仓储,动态密钥,gRPC。
- 前端:vue3、nodejs、vuex、axios 请求、promise、element ui、element plus、pinia 用户仓库与 token 持久化。
- 服务通讯:gRPC (内部), 消息队列 (异步解耦), SignalR (前后端实时)。
- 运维部署:Kubernetes (k8s), Docker, Jenkins CI/CD。
安装教程
模型合并:由于演示模型过大,单独上传到了百度云网盘,需要的用户可自行下载。通过网盘分享的文件:Model,链接: https://pan.baidu.com/s/1sTZ8uQLpyrl3hygkZ3VmvA?pwd=ewfk 提取码: ewfk。模型下载下来后放到路径 ai-recognition-system\Ai-Web-API\WebApi\Model 下。
单体应用与微服务应用部署说明大纲
单体应用部署说明
安装git 拉取代码
# 安装git
sudo apt update
sudo apt install git
git --version
# 拉取代码
cd ../home
mkdir -p projects
cd projects
git clone https://gitee.com/libihao520/ai-recognition-system.git
前端部署
安装Node.js 和 npm
安装Node.js 和 npm(Node Package Manager)。这些工具通常一起安装,因为 npm 是 Node.js 的包管理器。
# node建议v16.20.2
# 若使用sudo apt install nodejs npm命令安装Node.js和npm时
# 通常安装的是Ubuntu官方软件仓库中提供的版本。这些版本可能是稳定的,但不一定是最新的
# 如果要指定版本,通过其他方式安装
#方法一 使用NodeSource的安装脚本指定安装 node v16.20.2
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
# 添加NodeSource的APT源
VERSION=node_16.x
DISTRO=$(lsb_release -s -c)
echo "deb https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list
# 更新APT源并安装Node.js
sudo apt update
sudo apt install nodejs -y
# 安装完成后查看版本
node -v
npm -v
# 换镜像源
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
安装依赖项并构建
cd ai-recognition-system/Vue3-ai-system-admin
npm install
npm run build
使用Nginx部署
安装Nginx
sudo apt update
sudo apt install nginx
vim /etc/nginx/nginx.conf
# 找到http包裹部分,修改为如下部分
# listen : 监听的端口
# server_name : 你当前服务器的 IP 或者 域名
http {
server {
listen 8080;
server_name 47.107.226.106;
root /home/projects/ai-recognition-system/Vue3-ai-system-admin/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
}
# 退出编辑
:wq!
# 检查配置并重启Nginx
sudo nginx -t
sudo systemctl restart nginx
# 服务器开端口,完成!
后端部署
添加Microsoft包管理源
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
安装.Net 8.0SDK
sudo apt-get install -y dotnet-sdk-8.0
# 查看版本是否安装成功
dotnet --version
字体安装
cd /usr/share/fonts/truetype/msttcorefonts/
sudo apt install cabextract
wget https://www.freedesktop.org/software/fontconfig/webfonts/webfonts.tar.gz
# 解压
tar -xzf webfonts.tar.gz
cd msfonts/
cabextract *.exe
# 移动字体
cp *.ttf *.TTF ~ /usr/share/fonts/truetype/msttcorefonts/
原始构建运行
cd /home/projects/ai-recognition-system/Ai-Web-API
# 构建
dotnet build -c Release
# 运行项目
dotnet /home/projects/ai-recognition-system/Ai-Web-API/WebApi/bin/Release/net8.0/WebApi.dll --urls http://0.0.0.0:5157
使用systemd来启动服务(应用崩溃时自动重启)
sudo vim /etc/systemd/system/webapi.service
在文件中添加如下内容
[Unit]
Description=Ai Web API Service
After=network.target
[Service]
WorkingDirectory=/home/projects/ai-recognition-system/Ai-Web-API/WebApi/bin/Release/net8.0
ExecStart=/usr/bin/dotnet ./WebApi.dll --urls http://0.0.0.0:5157
Restart=always
# 如果需要,可以取消注释并设置内存限制或运行用户
# MemoryMax=500M
# User=yourusername
Environment=ASPNETCORE_ENVIRONMENT=Production
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=webapi
[Install]
WantedBy=multi-user.target
重新加载配置并启动服务
sudo systemctl daemon-reload
sudo systemctl start webapi.service
# 设置服务开机自启(可选)
sudo systemctl enable webapi.service
# 检查服务状态和日志
# 使用 systemctl status 命令检查服务的状态,并使用 journalctl 命令查看服务的日志输出。
sudo systemctl status webapi.service
sudo journalctl -u webapi.service -f
后续更新
# 更新代码
cd /home/projects/ai-recognition-system
git pull origin master
# 前端
cd /home/projects/ai-recognition-system/Vue3-ai-system-admin
npm run build
# 后端(systemctl )
sudo systemctl stop webapi.service
cd /home/projects/ai-recognition-system/Ai-Web-API
dotnet build -c Release
sudo systemctl start webapi.service
# 查看日志
sudo journalctl -u webapi.service -f
数据库部署
自行安装mysql与redis
微服务应用部署说明
本地构建打包形式
每个项目依次拉取代码
每个项目的根目录下都有一个Dockerfile文件
如下图在每个项目下面分别执行dockerfile文件
命令:
docker build -t lesi-platform-web .
docker build -t lesi-platform-api .
docker build -t lesi-ai-api .
docker build -t lesi-admin-api .
等镜像全部构建完成之后,最后执行
docker-compose -f docker-compose.local.yml up -d
所有的项目启动了,访问http://127.0.0.1:8080/login查看服务是否正常
远程仓库部署
所有的项目服务我都已经已经上传到阿里云镜像平台了,因此不需要改动代码,只需要快速搭建的话,只要拉取 (网关/聚合层) LeSi-Platform-Api 代码,在根目录下执行
docker-compose -f docker-compose.aliyun.yml up -d
K8s部署
需提前安装k8s环境,我这里以minikube为例
安装 kubectl
:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
安装虚拟化驱动(以 Docker 为例):
sudo apt-get install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER # 将当前用户加入 docker 组(需重新登录生效)
安装 Minikube
# 运行以下命令确认你的系统架构:
uname -m
# 如果是 x86_64,说明是 64 位 Intel/AMD CPU 安装这个版本
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 如果是 aarch64 或 arm64,说明是 ARM 架构
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
sudo install minikube-linux-arm64 /usr/local/bin/minikube
启动 Minikube
minikube start --driver=docker # 使用 Docker 驱动
如果遇到权限问题,请确保当前用户在 docker 组(执行 newgrp docker 或重新登录)。
验证安装
minikube status
kubectl get pods -A # 检查 Kubernetes 集群状态
启动服务
启动服务编排好的yaml文件我都放在了 (网关/聚合层) LeSi-Platform-Api 项目的根目录k8s文件夹下面。
启动 Minikube:
bashminikube start --driver=docker --memory=8g --cpus=4
创建命名空间:
bashkubectl apply -f namespace.yaml
依次部署各个服务:
kubectl apply -f mysql-deployment.yaml
kubectl apply -f redis-deployment.yaml
kubectl apply -f rabbitmq-deployment.yaml
kubectl apply -f admin-api-deployment.yaml
kubectl apply -f platform-api-deployment.yaml
kubectl apply -f ai-api-deployment.yaml
kubectl apply -f platform-web-deployment.yaml
访问前端服务:
minikube service platform-web -n lesi-platform
会获得一个ip地址,打开地址,就可以访问到我们的服务了。
数据初始化
数据库初始化数据放在了(网关/聚合层) LeSi-Platform-Api 项目的aitest文件中,直接执行就好了,下面只举例微服务中执行步骤。
手动执行 aitest.sql
文件,可以通过 kubectl exec
进入 MySQL 容器,再使用 mysql
命令执行脚本。具体步骤如下:
步骤 1:将本地 aitest.sql
复制到 MySQL 容器内
把本地的 aitest.sql
文件上传到正在运行的 MySQL Pod 中(例如 /tmp
目录):
# 语法:kubectl cp 本地文件路径 命名空间/ Pod名称:容器内目标路径
kubectl cp ./aitest.sql lesi-platform/mysql-864ddd5c77-6rgmg:/tmp/aitest.sql
步骤 2:进入 MySQL 容器
通过 kubectl exec
登录到 MySQL 容器内部:
kubectl exec -it -n lesi-platform mysql-864ddd5c77-6rgmg -- /bin/bash
执行后会进入容器的命令行界面(类似 bash-4.4#
)。
步骤 3:使用 mysql
命令执行 SQL 脚本
在容器内,通过 MySQL 客户端连接数据库并执行 aitest.sql
:
# 连接 MySQL(使用你的 root 密码,即 MYSQL_ROOT_PASSWORD 的值)
mysql -u root -p
# 输入密码
Enter password: 1qazZAQ!hhh333
# 执行 SQL 脚本(假设脚本需要指定数据库,若未指定可先创建或切换数据库)
mysql> source /tmp/aitest.sql;
# 执行完成后退出 MySQL 客户端
mysql> exit;
# 退出容器
exit
登陆
自此,项目已经部署完成了,系统的默认账号密码是
账号:lbhlbh
密码:123456
更多推荐
所有评论(0)