446 lines
12 KiB
Markdown
446 lines
12 KiB
Markdown
# 主干AI实验室
|
||
|
||
## 一、技术栈
|
||
|
||
- ### 前端
|
||
|
||
- **Vue**:Vben Admin作为框架
|
||
- 开发语言:**TypeScript/JavaScript**
|
||
|
||
- ### 后端
|
||
|
||
- **Ktor**:业务后端
|
||
- 开发语言:**Java/Kotlin**
|
||
- **FastAPI**:实验室AI模块后端程序
|
||
- 开发语言:**Python**
|
||
- **RabbitMQ**:消息队列
|
||
|
||
- ### 人工智能
|
||
|
||
- **LangChain**:自定义LLM流程核心
|
||
- **LangGraph**:Agent构建核心
|
||
- **YOLO**:目标检测模型
|
||
- **DeepStream**:视频流分析框架
|
||
|
||
- ### 数据库
|
||
|
||
- **Redis**:内存数据库
|
||
- **PostgreSQL**:实验室业务数据库
|
||
- **Milvus**:实验室向量数据库
|
||
- **SQLServer**:F8业务数据库
|
||
|
||
- ### 对象存储服务器
|
||
|
||
- **MinIO**:实验室对象存储服务器
|
||
|
||
- ### 运维
|
||
|
||
- **Docker**:项目部署
|
||
- **Nginx**:前端项目(AI实验室、机器人测试)部署
|
||
- **Kong**: 网关
|
||
- **Prometheus**:服务监控
|
||
- **Grafana**:数据可视化
|
||
|
||
## 二、端口使用
|
||
|
||
| 键 | 值 |
|
||
| ------------------------- | --------------- |
|
||
| **公网域名** | ai.ronsunny.cn |
|
||
| **公网IP** | 171.212.101.200 |
|
||
| **内网地址** | 10.10.12.101 |
|
||
| **虚拟机管理地址**,root: | 10.10.12.100 |
|
||
|
||
| 公网端口 | 内网端口 | docker端口 | docker服务/Host | 技术栈 | 功能作用 |
|
||
| --------- | -------- | ---------- | -------------------- | -------------------- | ------------------------------------------ |
|
||
| **13011** | 13011 | 13011 | Harbor | Harbor | Harbor**管理界面**,admin:Bbit000000 |
|
||
| | | 8091 | ce_vue | Vue | Vue前端服务-AI实验室 |
|
||
| | | 8093 | ce_vue_data | Vue | Vue前端服务-大数据可视化平台 |
|
||
| | 8089 | | | Ktor | 实验室业务后端,使用systemctl启动 |
|
||
| | | 13011 | ce_pybackend | FastAPI | 实验室AI后端 |
|
||
| | 5432 | 5432 | ce_postgres | PostgreSQL | PostgreSQL数据库 |
|
||
| | 6379 | 6379 | ce_redis | Redis | Radis数据库 |
|
||
| | | 2379 | ce_etcd | Etcd | Etcd,Key-Value 存储,给ce_milvus使用 |
|
||
| **9000** | 9000 | 9000 | ce_minio | MinIO | MinIO数据访问 |
|
||
| | 9001 | 9001 | ce_minio | MinIO | MinIO**管理界面**,minioadmin:minioadmin |
|
||
| | 19530 | 19530 | ce_milvus | Milvus | Minvus数据访问 |
|
||
| | 9091 | 9091 | ce_milvus | Milvus | Minvus**管理界面**,需要加/webui,无需登录 |
|
||
| | 3000 | 3000 | ce_attu | Attu | Minvus Attu**管理界面**,无需密码 |
|
||
| **8090** | 8090 | 8090 | ce_kong | Kong | Kong网关 |
|
||
| | 8001 | 8001 | ce_kong | Kong | Kong Admin API |
|
||
| | 8002 | 8002 | ce_kong | Kong | Kong**管理界面**,无需登录 |
|
||
| | 8444 | 8444 | ce_kong | Kong | Kong Admin API 的 HTTPS 端口 |
|
||
| | 8088 | | | ws-scrcpy | Android远程框架 |
|
||
| | 5672 | 5672 | ce_rabbitmq | RabbitMQ | RabbitMQ 客户端连接端口 |
|
||
| | 15672 | 15672 | ce_rabbitmq | RabbitMQ | RabbitMQ**管理界面**,admin:123456 |
|
||
| | 9323 | 9323 | | Docker | Docker debug端口 |
|
||
| | 3001 | 3001 | ce_grafana | Grafana | Grafana**管理界面**,admin:123456 |
|
||
| | 9090 | 9090 | ce_prometheus | Prometheus | Prometheus监控/**管理界面**,无需登录 |
|
||
| | | 9121 | ce_redis_exporter | Prometheus | Prometheus监控Radis的工具 |
|
||
| | | 9187 | ce_postgres_exporter | Prometheus | Prometheus监控PostgreSQL的工具 |
|
||
| | 9100 | host | ce_node_exporter | Prometheus | Prometheus监控主机的工具 |
|
||
| | 8000 | 8000 | ce_bot_server | xiaozhi-esp32-server | 小智AI服务ws端口 |
|
||
| | 8003 | 8003 | ce_bot_server | xiaozhi-esp32-server | 小智AI服务http端口 |
|
||
| | 8005 | 8002 | ce_bot_web | xiaozhi-esp32-server | 小智**管理界面**,admin:Bbit000000 |
|
||
| | 8092 | 8092 | ce_bot_test | xiaozhi-esp32-server | 小智服务器测试页面 |
|
||
| | 8004 | 8004 | ce_bot_mcp | mcp-endpoint-server | 小智MCP接入点 |
|
||
| **8094** | 8094 | 8080 | CVAT | CVAT | CVAT**管理界面**,bbit:bbit |
|
||
| | 1883 | 1883 | ce_emqx | EMQX | MQTT TCP 端口 |
|
||
| | 18083 | 18083 | ce_emqx | EMQX | EMQX**管理界面**,admin:Bbit000000 |
|
||
| | 8883 | 8883 | ce_emqx | EMQX | MQTT TCP TLS 端口 |
|
||
| | 8083 | 8083 | ce_emqx | EMQX | MQTT WS 端口 |
|
||
| | 8084 | 8084 | ce_emqx | EMQX | MQTT WS TLS 端口 |
|
||
| | | | | | |
|
||
| | | | | | |
|
||
| | | | | | |
|
||
| | | | | | |
|
||
| | | | | | |
|
||
|
||
|
||
|
||
## 三、新部署
|
||
|
||
### 3.1 ktor
|
||
|
||
1. 将Ktor程序运行installDist打包程序。
|
||
|
||
2. 将程序覆盖于服务器/opt/final/ktor文件夹
|
||
|
||
3. 重启服务
|
||
```
|
||
sudo systemctl restart ktor.service
|
||
|
||
sudo systemctl status ktor.service
|
||
```
|
||
|
||
### 3.2 FastAPI
|
||
|
||
1. 打包镜像:运行Dockerfile
|
||
```
|
||
docker build -t ce_pybackend .
|
||
```
|
||
|
||
2. 打标签
|
||
```
|
||
docker tag ce_pybackend:latest s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:latest
|
||
docker tag ce_pybackend:latest s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:1.5
|
||
```
|
||
|
||
3. 推送镜像
|
||
```
|
||
docker push s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:1.5
|
||
docker push s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:latest
|
||
```
|
||
|
||
4. (服务器)重启Compose
|
||
```
|
||
docker-compose pull backend
|
||
|
||
docker compose up -d
|
||
```
|
||
|
||
### 3.3 Vue
|
||
|
||
1. 打包项目
|
||
```
|
||
pnpm build:antd
|
||
```
|
||
|
||
2. 打包镜像:运行Dockerfile
|
||
|
||
```
|
||
docker build -t ce_vue .
|
||
```
|
||
|
||
3. 打标签
|
||
```
|
||
docker tag ce_vue:latest s1.ronsunny.cn:13011/bbit_ai/ce_vue:latest
|
||
docker tag ce_vue:latest s1.ronsunny.cn:13011/bbit_ai/ce_vue:1.1.0
|
||
```
|
||
|
||
4. 推送镜像
|
||
```
|
||
docker push s1.ronsunny.cn:13011/bbit_ai/ce_vue:1.1.0
|
||
docker push s1.ronsunny.cn:13011/bbit_ai/ce_vue:latest
|
||
```
|
||
|
||
5. (服务器)重启Compose
|
||
```
|
||
docker-compose pull vue
|
||
docker compose up -d
|
||
```
|
||
|
||
### 3.4 更新并重启Compose
|
||
|
||
```
|
||
docker compose down
|
||
docker compose pull vue backend
|
||
docker compose up -d
|
||
|
||
docker image prune -f
|
||
```
|
||
|
||
## 四、配置
|
||
|
||
- 安装顺序
|
||
|
||
1. 安装docker
|
||
2. 运行基本环境infra-compose.yaml
|
||
3. 安装Harbor
|
||
4. 推送镜像
|
||
5. 运行前后端程序docker-compose.yaml
|
||
|
||
- Harbor
|
||
|
||
1. 添加用户
|
||
|
||
2. 添加仓库
|
||
|
||
3. 添加仓库用户使用权限
|
||
|
||
4. (2x客户端)登录
|
||
```
|
||
docker login ai.ronsunny.cn:13011
|
||
```
|
||
|
||
- Prometheus
|
||
|
||
1. 设置docker metrics配置文件
|
||
```
|
||
{
|
||
"registry-mirrors": [
|
||
"https://docker.m.daocloud.io",
|
||
"https://mirror.baidubce.com",
|
||
"https://docker.nju.edu.cn"
|
||
],
|
||
"metrics-addr": "10.10.10.9:9323",
|
||
"experimental": true,
|
||
"insecure-registries": ["s1.ronsunny.cn:13011"]
|
||
}
|
||
```
|
||
|
||
2. 重启docker
|
||
```
|
||
sudo systemctl restart docker
|
||
```
|
||
|
||
- RabbitMQ
|
||
|
||
1. 添加用户
|
||
2. 添加Vhost
|
||
|
||
- [Grafana][https://grafana.com/grafana/dashboards/]
|
||
|
||
1. 创建Prometheus数据源
|
||
|
||
2. 增加配置
|
||
|
||
| 项目 | 代码 | 描述 |
|
||
| ----------- | ----- | ---- |
|
||
| MinIO | 13502 | |
|
||
| Docker | 9621 | |
|
||
| PostgreSQL | 9628 | |
|
||
| 主机 | 1860 | |
|
||
| RabbitMQ | 10991 | |
|
||
| Redis | 11835 | |
|
||
| Prometheus | 19268 | |
|
||
| 主机 中文版 | 8919 | |
|
||
| Kong | 7424 | |
|
||
|
||
- MinIO
|
||
|
||
```
|
||
Minio 交换机路由配置
|
||
交换机video_exchange
|
||
路由/sca
|
||
队列/sca_queue
|
||
```
|
||
|
||
|
||
|
||
## 五、其他
|
||
|
||
docker 权限
|
||
|
||
sudo groupadd docker
|
||
|
||
sudo usermod -aG docker kaijihar
|
||
|
||
newgrp docker
|
||
|
||
### 旧部署
|
||
|
||
后端
|
||
|
||
ktor
|
||
|
||
1. 将Ktor程序运行installDist打包程序。
|
||
|
||
2. 将程序覆盖于服务器/opt/final/ktor文件夹
|
||
|
||
3. 将项目目录server/service的ktor.service文件置于服务器/etc/systemd/system/目录
|
||
|
||
4. 输入命令使服务开机自启
|
||
```shell
|
||
sudo systemctl enable ktor.service
|
||
sudo systemctl status ktor.service
|
||
|
||
|
||
sudo systemctl restart ktor.service
|
||
```
|
||
|
||
python
|
||
|
||
1. 打包Docker
|
||
```
|
||
docker build -t ce_pybackend .
|
||
```
|
||
|
||
2. 保存Image为文件
|
||
```
|
||
docker save -o ce-pybackend.tar ce_pybackend
|
||
```
|
||
|
||
3. 将保存好的Image`ce-pybackend.tar`上传到服务器
|
||
|
||
4. 删除服务器的旧版镜像
|
||
```
|
||
docker rmi ce_pybackend:latest
|
||
```
|
||
|
||
5. **读取上传的新镜像**
|
||
|
||
```
|
||
docker load -i ce_pybackend.tar
|
||
```
|
||
|
||
其他命令:
|
||
|
||
- 测试运行docker
|
||
```
|
||
docker run -d -p 13011:13011 ce_pybackend
|
||
```
|
||
|
||
- 调试运行项目
|
||
```
|
||
uvicorn app:app --reload --host 0.0.0.0 --port 13011
|
||
```
|
||
|
||
- docker日志查看
|
||
```
|
||
docker logs -f ce_pybackend
|
||
```
|
||
|
||
前端
|
||
|
||
直接在wsl中build,不要install
|
||
|
||
1. 在vue目录运行docker打包命令
|
||
```shell
|
||
pnpm build:docker
|
||
```
|
||
|
||
2. 将Image保存为文件
|
||
```shell
|
||
docker save -o vue.tar ce_vue
|
||
```
|
||
|
||
3. 将保存好的Image`vue.tar`上传到服务器
|
||
|
||
4. 停掉之前的docker compose
|
||
|
||
```
|
||
docker-compose down
|
||
```
|
||
|
||
5. 删除之前的Image
|
||
|
||
```shell
|
||
docker rmi ce_vue:latest
|
||
```
|
||
|
||
6. 在服务器读取Image
|
||
```shell
|
||
docker load -i vue.tar
|
||
```
|
||
|
||
7. 重新运行
|
||
|
||
```
|
||
docker compose up -d
|
||
```
|
||
|
||
### docker
|
||
|
||
#### 内网地址
|
||
|
||
windows:host.docker.internal
|
||
|
||
Linux:ip addr show docker0 查看
|
||
|
||
#### 相关命令
|
||
|
||
查看所有镜像
|
||
|
||
```
|
||
docker images
|
||
```
|
||
|
||
删除镜像
|
||
|
||
```
|
||
docker rm
|
||
```
|
||
|
||
删除容器
|
||
|
||
```
|
||
docker rmi 镜像名:Tag
|
||
```
|
||
|
||
删除无用镜像
|
||
|
||
```
|
||
docker image prune
|
||
```
|
||
|
||
### Vue项目使用
|
||
|
||
- 本地运行dist文件夹
|
||
|
||
```shell
|
||
npm install -g http-server
|
||
cd dist
|
||
http-server -p 8080
|
||
```
|
||
|
||
- VBen项目运行方法
|
||
|
||
1. 下载最新node
|
||
|
||
2. 开发
|
||
|
||
```shell
|
||
# 进入项目目录
|
||
cd vue-vben-admin
|
||
|
||
# 使用项目指定的pnpm版本进行依赖安装
|
||
npm i -g corepack
|
||
|
||
# 安装依赖
|
||
pnpm install
|
||
# 启动项目
|
||
pnpm dev
|
||
```
|
||
|
||
3. 本地部署
|
||
```shell
|
||
构建
|
||
pnpm build
|
||
|
||
预览
|
||
pnpm preview
|
||
```
|
||
|
||
|
||
|
||
[https://grafana.com/grafana/dashboards/]: |