DAMO-YOLO部署避坑指南:端口7860被占、防火墙拦截、服务崩溃全解决

📅 发布时间:2026/7/11 12:00:13 👁️ 浏览次数:
DAMO-YOLO部署避坑指南:端口7860被占、防火墙拦截、服务崩溃全解决
DAMO-YOLO部署避坑指南端口7860被占、防火墙拦截、服务崩溃全解决1. 项目简介与核心价值最近在部署一个基于DAMO-YOLO的手机检测系统时遇到了不少坑。从端口冲突到防火墙拦截再到服务莫名其妙崩溃几乎把新手可能遇到的问题都踩了一遍。今天我就把这些实战经验整理出来帮你避开这些坑顺利部署这个“小、快、省”的手机检测系统。这个系统有什么特别之处它专门针对手机检测场景做了优化核心模型来自阿里巴巴达摩院的DAMO-YOLO结合TinyNAS技术实现了在手机端也能跑得动的实时检测能力。准确率88.8%每张图片处理只要3.83毫秒对于考场防作弊、会议管理、驾驶监控这些场景特别实用。但好东西往往不好装下面我就带你一步步解决部署过程中的各种问题。2. 环境准备与快速部署2.1 系统要求检查在开始之前先确认你的环境是否符合要求操作系统LinuxUbuntu 20.04/22.04或CentOS 7/8都行Python版本3.11或更高内存至少4GB8GB更稳妥存储空间预留200MB给模型文件网络能正常访问互联网下载依赖怎么检查打开终端一行命令搞定# 检查Python版本 python3 --version # 检查内存 free -h # 检查磁盘空间 df -h如果Python版本不够用这个命令升级# Ubuntu/Debian系统 sudo apt update sudo apt install python3.11 python3.11-venv # CentOS/RHEL系统 sudo yum install python3.112.2 一键部署脚本最省心的方式是用官方提供的一键部署脚本。但这里有个坑要注意有些脚本默认用root用户运行可能会遇到权限问题。# 下载部署脚本 wget https://example.com/deploy_phone_detection.sh # 给执行权限 chmod x deploy_phone_detection.sh # 用普通用户运行不要用root ./deploy_phone_detection.sh运行脚本后它会自动创建虚拟环境安装所有依赖包下载DAMO-YOLO模型配置Supervisor服务启动Web服务整个过程大概5-10分钟取决于你的网速。如果卡在某个步骤别急着关掉看看错误信息是什么。3. 常见部署问题与解决方案3.1 端口7860被占用问题这是最常见的问题。系统默认用7860端口但这个端口可能已经被其他服务占用了。怎么检查端口占用# 方法1用netstat命令 sudo netstat -tlnp | grep :7860 # 方法2用lsof命令如果netstat没有 sudo lsof -i :7860 # 方法3用ss命令新系统推荐 sudo ss -tlnp | grep :7860如果看到类似这样的输出tcp 0 0 0.0.0.0:7860 0.0.0.0:* LISTEN 1234/python说明7860端口已经被PID为1234的Python进程占用了。解决方案有三种方案A停止占用进程推荐# 先找到进程ID sudo lsof -i :7860 # 然后停止它 sudo kill 1234 # 1234是进程ID # 或者强制停止 sudo kill -9 1234方案B修改服务端口如果不想停止其他服务可以修改手机检测系统的端口# 找到配置文件 cd /root/phone-detection nano app.py # 或者用vim # 找到这行大概在第50行左右 demo.launch(server_name0.0.0.0, server_port7860) # 把7860改成其他端口比如7861 demo.launch(server_name0.0.0.0, server_port7861)方案C使用其他端口启动启动时直接指定端口cd /root/phone-detection python app.py --port 78613.2 防火墙拦截问题端口开了服务也跑了但就是打不开网页很可能是防火墙在作怪。CentOS/RHEL系统firewalld# 检查防火墙状态 sudo firewall-cmd --state # 如果显示running需要开放端口 sudo firewall-cmd --add-port7860/tcp --permanent sudo firewall-cmd --reload # 确认端口已开放 sudo firewall-cmd --list-ports | grep 7860Ubuntu/Debian系统ufw# 检查ufw状态 sudo ufw status # 如果显示active开放端口 sudo ufw allow 7860/tcp sudo ufw reload # 或者直接关闭ufw不推荐生产环境 sudo ufw disable如果用的是云服务器阿里云、腾讯云等还需要在控制台的安全组里添加规则登录云服务器控制台找到安全组配置添加入站规则端口范围7860协议TCP源0.0.0.0/0保存并应用3.3 服务启动失败问题有时候服务看起来启动了但实际没跑起来。用Supervisor管理服务时这几个命令一定要会# 查看服务状态最重要 sudo supervisorctl status phone-detection # 正常应该显示RUNNING # 如果显示STOPPED或FATAL就有问题 # 查看详细日志 sudo tail -100 /root/phone-detection/logs/error.log常见错误及解决方法错误1ModuleNotFoundErrorModuleNotFoundError: No module named gradio解决方法重新安装依赖cd /root/phone-detection pip install -r requirements.txt错误2CUDA out of memoryRuntimeError: CUDA out of memory解决方法如果没有GPU修改代码使用CPU# 修改app.py在开头添加 import os os.environ[CUDA_VISIBLE_DEVICES] # 强制使用CPU错误3端口已被绑定OSError: [Errno 98] Address already in use这就是前面说的端口占用问题按3.1节的方法解决。3.4 模型下载失败问题DAMO-YOLO模型文件大概125MB如果下载慢或失败可以手动下载# 先找到模型下载链接在代码里找 cd /root/phone-detection grep -r model . # 查找模型相关配置 # 手动下载示例实际链接可能不同 wget https://modelscope.cn/models/damo/cv_tinynas_object-detection_damoyolo/summary -O damoyolo_model.pth # 然后放到正确位置 mkdir -p ~/.cache/modelscope/hub/damo/cv_tinynas_object-detection_damoyolo cp damoyolo_model.pth ~/.cache/modelscope/hub/damo/cv_tinynas_object-detection_damoyolo/4. 服务管理与监控4.1 Supervisor配置详解Supervisor是个好东西能让服务在后台稳定运行。但配置不对的话服务会频繁重启或根本起不来。查看完整配置sudo cat /etc/supervisor/conf.d/phone-detection.conf正常配置应该类似这样[program:phone-detection] command/root/phone-detection/venv/bin/python /root/phone-detection/app.py directory/root/phone-detection userroot autostarttrue autorestarttrue startsecs10 startretries3 stdout_logfile/root/phone-detection/logs/access.log stderr_logfile/root/phone-detection/logs/error.log如果服务起不来检查这几个地方command路径python和app.py的路径要对directory路径工作目录要对日志路径要有写权限user如果用非root用户要确保有权限重新加载配置# 修改配置后要重新加载 sudo supervisorctl reread sudo supervisorctl update # 然后重启服务 sudo supervisorctl restart phone-detection4.2 日志分析技巧日志是排查问题的关键。学会看日志能解决80%的问题。实时监控日志# 看正常访问日志 tail -f /root/phone-detection/logs/access.log # 看错误日志更重要 tail -f /root/phone-detection/logs/error.log常见日志信息解读# 正常启动日志 INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:7860 # 错误日志示例 ERROR: [Errno 98] Address already in use # 端口被占 ERROR: No module named torch # 缺少依赖 ERROR: CUDA error: out of memory # 显存不足日志文件太大怎么办# 清空日志文件谨慎操作 /root/phone-detection/logs/access.log /root/phone-detection/logs/error.log # 或者设置日志轮转 sudo nano /etc/logrotate.d/phone-detection4.3 性能监控与优化系统跑起来后怎么知道它状态好不好监控CPU和内存# 查看进程资源占用 top -p $(pgrep -f app.py) # 或者用htop更直观 htop监控GPU使用如果有nvidia-smi如果发现性能问题问题响应慢检查网络带宽检查服务器负载考虑升级配置问题内存泄漏# 监控内存增长 watch -n 1 ps aux | grep app.py优化建议调整Gradio的并发数在app.py里修改使用更轻量的模型如果准确率要求不高增加服务器内存或使用GPU5. 使用技巧与高级配置5.1 自定义模型参数默认配置可能不适合所有场景你可以调整这些参数修改检测阈值# 在app.py里找到检测部分 # 默认可能是0.5可以调高减少误检调低增加检出 conf_threshold 0.5 # 改为0.6或0.7修改输入尺寸# DAMO-YOLO默认用640x640 # 如果图片中手机很小可以增大尺寸 input_size (640, 640) # 改为(800, 800)或(1024, 1024)启用GPU加速如果有N卡# 安装CUDA版本的PyTorch pip uninstall torch torchvision pip install torch torchvision --index-url https://download.pytorch.org/whl/cu1185.2 批量处理技巧虽然Web界面不支持批量上传但可以通过API批量处理import requests import base64 import json def detect_phone_in_batch(image_paths, server_urlhttp://localhost:7860): results [] for img_path in image_paths: # 读取图片并编码 with open(img_path, rb) as f: img_base64 base64.b64encode(f.read()).decode() # 调用API response requests.post( f{server_url}/api/predict, json{image: img_base64} ) if response.status_code 200: results.append(response.json()) else: results.append({error: fFailed for {img_path}}) return results # 使用示例 image_list [img1.jpg, img2.jpg, img3.jpg] detections detect_phone_in_batch(image_list)5.3 集成到其他系统如果你想把这个检测功能集成到自己的系统里方法1直接调用Python函数import sys sys.path.append(/root/phone-detection) from detection_module import detect_phones # 直接使用检测函数 result detect_phones(your_image.jpg) print(f检测到 {len(result)} 个手机)方法2通过HTTP APIimport requests # 上传图片并获取结果 files {image: open(test.jpg, rb)} response requests.post(http://localhost:7860/upload, filesfiles) if response.status_code 200: data response.json() # 处理返回的检测结果方法3使用WebSocket实时流如果需要实时视频流检测可以修改代码支持WebSocket。6. 故障排查流程图遇到问题不要慌按这个流程图一步步排查网页打不开 ↓ 检查服务状态sudo supervisorctl status phone-detection ↓ ├─→ 状态STOPPED → 启动服务sudo supervisorctl start phone-detection │ ├─→ 状态FATAL → 查看错误日志tail -100 error.log │ └─→ 状态RUNNING → 检查端口netstat -tlnp | grep 7860 ↓ ├─→ 端口被占 → 按3.1节解决 │ ├─→ 端口正常 → 检查防火墙sudo firewall-cmd --list-ports │ └─→ 防火墙正常 → 检查网络连接curl http://localhost:78607. 总结与建议部署DAMO-YOLO手机检测系统最常遇到的三个坑就是端口7860被占用、防火墙拦截、服务配置错误。只要掌握了本文的方法95%的问题都能自己解决。给新手的几点建议先测试再上线在本地或测试环境先跑通再部署到生产环境善用日志遇到问题先看日志错误信息往往能直接告诉你问题在哪备份配置修改任何配置文件前先备份原文件分步验证不要一次性改太多配置改一点测一点社区求助实在解决不了去相关社区或论坛提问记得带上错误日志这个系统最大的优势就是“小、快、省”——模型小、速度快、省资源。特别适合需要实时手机检测但又不想投入太多硬件成本的场景。部署过程虽然有些小坑但一旦跑起来用起来真的很香。最后提醒一点如果按照所有步骤还是无法解决可能是环境差异太大。这时候最有效的方法是——从头再来。清理所有安装按照官方文档一步步重装往往能解决那些莫名其妙的问题。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。