在无人机与增强现实融合的项目里,后端既要处理UAV传回的实时视频,又要跑目标检测模型,还要给前端AR页面提供叠加数据。借助宝塔面板,我们可以用图形界面完成大部分运维操作,不必死记Linux命令。

一、系统准备与面板安装
先准备一台带独立显卡的Ubuntu 20.04服务器,确保能连通外网。UAV和AR应用对延迟敏感,建议选用本地机房机器而非跨地域云主机。登录SSH后,用官方脚本安装宝塔面板,过程基本是自动化的。
安装完成后,面板会给出后台地址、用户名和密码。进入面板 first time 时,会提示安装LNMP或LAMP套件。对于人工智能应用,我们其实不需要完整Web套件,但可以顺手装Nginx做反向代理,MySQL按需安装。Python环境我们后面用软件商店里的版本管理器单独处理。
# 安装宝塔面板 wget -O install.sh http://download.bt.cn/install/install_6.0.sh sudo bash install.sh # 安装后记得放行8888端口 sudo ufw allow 8888
二、配置GPU与Python推理环境
UAV视频流的目标识别通常依赖深度学习框架,比如PyTorch或TensorFlow,这些库需要CUDA支持。在宝塔的软件商店中搜索“Python”,安装多版本管理器,再新建一个Python 3.9环境。不要直接用系统自带Python,避免包冲突。
接着通过SSH手动安装NVIDIA驱动与CUDA工具包,因为面板暂时不提供一键GPU驱动。装好后,在Python环境里用pip安装torch、opencv-python。下面是一段调用YOLO做UAV画面检测的简化代码,注意图像数据来自无人机推流地址。
import cv2
import torch
# 加载本地训练好的无人机目标模型
model = torch.hub.load('ultralytics/yolov5', 'custom', path='uav_model.pt')
cap = cv2.VideoCapture('udp://127.0.0.1:5000')
while True:
ret, frame = cap.read()
if not ret:
break
results = model(frame)
# 将检测结果发给AR前端
print(results.pandas().xyxy[0])
cv2.imshow('uav', results.render()[0])
if cv2.waitKey(1) == 27:
break
这种方式的优势是环境隔离清晰,宝塔的进程管理器能直接看Python占用。缺点是CUDA装错版本会黑屏,所以驱动和运行时版本要严格对照官网表。
三、部署AR前端与WebSocket服务
AR部分一般用Web前端展示,通过WebSocket接收UAV检测框坐标,再把虚拟物体叠到视频上。我们在宝塔里新建一个Node项目,用pm2守护进程。Nginx反向代理到Node端口,对外只暴露443。
下面代码演示Node如何用WebSocket把后端识别结果广播给AR页面。前端拿到数据后,用three.js贴三维模型。这样UAV飞到哪里,AR眼镜里就能看到标注和指引。
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8081 });
wss.on('connection', function connection(ws) {
// 假设Python端通过TCP把结果发到本机6000,这里做中转
const client = require('net').connect(6000, '127.0.0.1');
client.on('data', function (data) {
ws.send(data.toString());
});
});
用宝塔的防火墙功能,只开80、443和SSH,其余端口全关。比起手工改iptables,面板操作更不容易误删规则。若AR用户增多,可在面板里一键装Redis做结果缓存,降低Python重复计算。
四、常见坑与维护建议
第一个坑是UAV图传协议用UDP,但宝塔默认不显示UDP连接,排查时要用命令行netstat。第二个坑是Python环境升级后,pm2启动的Node服务若写死旧路径会报错,建议在面板里把启动命令写成绝对路径。
日常维护时,利用宝塔的计划任务每天备份模型文件和Nginx配置。遇到显存爆满,面板资源监控能快速定位是哪个进程。总体来说,宝塔降低了人工智能服务器入门门槛,让我们把精力放在UAV与AR的算法联调上。
| 组件 | 宝塔内处理方式 | 注意事项 |
|---|---|---|
| Python环境 | 软件商店多版本管理 | 勿用系统Python |
| Nginx | 套件或单独安装 | 反代WebSocket需加配置 |
| GPU驱动 | SSH手动装 | 版本匹配CUDA |
按照上述步骤,一台支撑UAV视频识别和AR叠加的服务器就配置完毕了。后续扩展更多无人机接入,只需复制Python环境并改端口,面板里点几下即可完成。