目录
项目概述
乐思平台是一款集成多种功能的综合性应用平台,涵盖用户管理、学习答题与 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