YOLO X Layout部署教程(阿里云ECS):公网访问7860端口的安全组与Nginx配置
YOLO X Layout部署教程阿里云ECS公网访问7860端口的安全组与Nginx配置想把文档里的文字、表格、图片自动识别出来整理得清清楚楚YOLO X Layout这个工具就能帮你搞定。它是个基于YOLO模型的文档版面分析神器能自动识别出文档图片里的标题、正文、表格、图片、公式等足足11种元素还能给它们画上框、标上类别。不过这个工具默认只能在服务器本地访问http://localhost:7860。如果你想从办公室、家里甚至让同事也能用上这个服务就需要把它“暴露”到公网上。今天我就手把手教你在阿里云ECS服务器上完成YOLO X Layout的部署并配置好安全组和Nginx让你能安全、稳定地从任何地方访问它。1. 环境准备与模型部署在开始配置网络之前我们得先把YOLO X Layout服务在服务器上跑起来。这个过程很简单跟着做就行。1.1 服务器基础环境检查首先确保你的阿里云ECS服务器已经准备好了。推荐使用Ubuntu 20.04或22.04系统操作起来比较方便。登录服务器后先更新一下系统包并安装一些必要的工具# 更新软件包列表 sudo apt update sudo apt upgrade -y # 安装Python3和pip如果尚未安装 sudo apt install python3 python3-pip git -y # 验证安装 python3 --version pip3 --version1.2 获取YOLO X Layout项目代码接下来我们把项目代码从仓库里克隆下来。这里假设我们把项目放在/root目录下。# 切换到root目录如果尚未在此 cd /root # 克隆项目代码这里假设你有项目仓库地址若无请根据你的源码位置调整 # 示例git clone 你的项目仓库地址 # 由于输入中已给出路径我们假设代码已在 /root/yolo_x_layout 目录下 # 若没有你需要自行准备app.py等文件 # 创建一个项目目录 mkdir -p /root/yolo_x_layout cd /root/yolo_x_layout现在你需要把YOLO X Layout的核心文件放到这个目录里。主要是两个东西app.py这是用Gradio写的Web界面和API服务的主程序。模型文件需要放在/root/ai-models/AI-ModelScope/yolo_x_layout/目录下。模型有三个版本可选区别如下模型名称大小特点适用场景YOLOX Tiny约20MB速度最快资源占用少对实时性要求高或服务器配置较低YOLOX L0.05 Quantized约53MB速度和精度平衡量化版大多数场景下的首选YOLOX L0.05约207MB精度最高检测最准对分析精度有极致要求你可以根据服务器性能和需求选择合适的模型。把下载好的.onnx模型文件放到/root/ai-models/AI-ModelScope/yolo_x_layout/这个路径里。1.3 安装Python依赖并启动服务环境准备好后安装运行所需的Python库。# 确保在项目目录中 cd /root/yolo_x_layout # 安装依赖库 pip3 install gradio4.0.0 opencv-python4.8.0 numpy1.24.0 onnxruntime1.16.0 requests依赖安装完成后我们可以先试运行一下看看服务在本地能不能正常启动。# 启动服务默认会监听7860端口 python3 app.py如果看到输出里包含Running on local URL: http://0.0.0.0:7860这样的信息说明服务启动成功了。先按CtrlC停止它因为我们接下来要做后台运行和公网访问配置。为了让服务在后台稳定运行我们可以使用nohup或者创建一个系统服务。这里用一个简单的nohup方法# 使用nohup在后台启动服务并将日志输出到文件 cd /root/yolo_x_layout nohup python3 app.py yolo_layout.log 21 这样服务就在后台运行了。你可以用ps aux | grep app.py查看进程或者用cat yolo_layout.log看看启动日志。2. 配置阿里云ECS安全组关键步骤现在服务在服务器本地已经跑起来了但外网还访问不了。第一步要做的就是在阿里云控制台给我们的ECS实例“开个门”也就是配置安全组规则。安全组相当于服务器的虚拟防火墙不在这里放行端口外面的请求根本进不来。2.1 登录阿里云控制台打开 阿里云官网 并登录你的账号。进入控制台在左上角产品与服务中找到云服务器ECS点击进入。2.2 找到并配置安全组在ECS实例列表中找到你正在使用的这台服务器点击实例ID进入详情页。在实例详情页找到“安全组”选项卡点击安全组ID例如sg-xxx进入安全组配置页面。你也可以在左侧导航栏直接点击“网络与安全” - “安全组”找到绑定在你ECS实例上的那个安全组。2.3 添加入方向规则我们要允许公网访问服务器的7860端口。在安全组规则页面点击“配置规则”。点击“手动添加”或“添加安全组规则”。按照下表填写规则配置项填写内容说明规则方向入方向允许外部流量进入服务器授权策略允许协议类型自定义TCP我们的Web服务基于HTTP使用TCP协议端口范围7860/7860填写YOLO X Layout使用的端口优先级1数字越小优先级越高1是最高授权对象0.0.0.0/0谨慎这表示允许所有IP访问。生产环境建议改成你的办公室IP或特定IP段。点击“保存”。规则生效通常需要1-2分钟。重要提醒0.0.0.0/0意味着全互联网都能尝试访问你的7860端口。虽然服务可能有验证但从安全角度强烈建议在测试完成后将“授权对象”修改为你自己的公网IP例如你的公网IP/32。你可以在百度搜索“我的IP”来获取当前公网IP。2.4 验证端口是否开放配置完成后我们可以快速验证一下。回到ECS实例列表复制你的服务器的公网IP地址。在你的本地电脑浏览器中尝试访问http://你的公网IP:7860如果此时YOLO X Layout服务正在运行但显示无法连接或超时可能是安全组规则还未生效请稍等再试。如果看到Gradio的界面恭喜你端口已经通了不过先别急我们通常不会直接用IP端口访问下一步用Nginx来让它更专业、更安全。3. 使用Nginx配置反向代理与域名访问直接通过IP和端口号访问服务不够优雅也不安全。我们可以用Nginx作为反向代理实现以下好处使用域名访问比如layout.yourdomain.com更好记。隐藏端口用户无需记住7860这个端口号。负载均衡与SSL为后续添加HTTPSSSL证书提供便利。增加一层缓冲对请求进行初步管理。3.1 安装Nginx在服务器上安装Nginxsudo apt install nginx -y安装完成后启动Nginx并设置开机自启sudo systemctl start nginx sudo systemctl enable nginx现在在浏览器访问你的服务器公网IP应该能看到Nginx的欢迎页面这说明Nginx安装成功。3.2 配置Nginx反向代理接下来为YOLO X Layout服务创建一个独立的Nginx配置文件。创建一个新的配置文件sudo nano /etc/nginx/sites-available/yolo-x-layout将以下配置内容粘贴进去。请将your_domain_or_ip替换为你实际绑定的域名或者暂时就用服务器公网IP。server { listen 80; # 将 server_name 替换为你的域名如果没有域名就用下划线 _ 或服务器IP server_name your_domain_or_ip; # 静态文件缓存设置可选如果服务有静态资源 location /static/ { alias /root/yolo_x_layout/static/; # 假设你的静态文件路径 expires 30d; } # 核心配置将所有请求代理到本地的7860端口服务 location / { proxy_pass http://127.0.0.1:7860; # 指向本地运行的YOLO X Layout服务 # 以下是一些重要的代理头设置确保Gradio等Web框架能正常工作 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket支持如果Gradio使用WebSocket需要开启 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # 超时设置 proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; } # 可选限制上传文件大小Gradio上传图片用 client_max_body_size 10M; }按CtrlO保存文件再按CtrlX退出编辑器。3.3 启用配置并测试创建一个符号链接将配置文件启用sudo ln -s /etc/nginx/sites-available/yolo-x-layout /etc/nginx/sites-enabled/测试Nginx配置语法是否正确sudo nginx -t如果看到syntax is ok和test is successful的提示说明配置正确。重新加载Nginx配置使其生效sudo systemctl reload nginx3.4 验证访问现在你可以尝试访问了如果你配置了域名请在浏览器访问http://你的域名如果你暂时没有域名访问http://你的服务器公网IP你应该能看到和直接访问http://你的公网IP:7860一样的YOLO X Layout的Web界面了。这意味着Nginx反向代理配置成功。4. 服务使用与API调用配置好网络我们的YOLO X Layout服务就可以正式对外提供了。无论是通过Web界面手动操作还是通过API集成到其他系统都非常方便。4.1 通过Web界面使用这是最直观的方式适合单次或小批量的文档分析。访问界面在浏览器打开你配置好的地址域名或IP。上传图片点击上传区域选择需要分析的文档图片支持PNG、JPG等格式。调整阈值Confidence Threshold置信度阈值默认为0.25。调高如0.5会让识别更严格框出的内容更准但可能漏检调低则更敏感可能框出更多区域但包含一些错误。可以根据文档清晰度调整。开始分析点击“Analyze Layout”按钮。查看结果右侧会显示分析后的图片不同版面元素会用不同颜色的框标出并显示类别标签和置信度。4.2 通过API接口调用对于需要批量处理或集成到自动化流程的场景API接口更有用。我们的服务在启动时就已经提供了API端点。下面是一个Python调用示例你可以保存为test_api.py在本地或服务器上运行import requests import json # 替换成你的实际访问地址 api_url http://你的域名或IP/api/predict # 注意通过Nginx代理后直接访问根路径下的/api/predict # 如果是直接通过IP:端口访问则是http://你的公网IP:7860/api/predict # 准备图片文件 image_path your_document.png # 替换为你的图片路径 # 构造请求 files {image: open(image_path, rb)} data {conf_threshold: 0.25} # 可选参数不传则使用默认值 try: response requests.post(api_url, filesfiles, datadata) response.raise_for_status() # 检查请求是否成功 result response.json() print(API调用成功) print(f检测到的元素数量{len(result.get(boxes, []))}) # 打印前几个检测框的信息 for i, box in enumerate(result.get(boxes, [])[:3]): print(f元素 {i1}: 类别{box.get(label)}, 置信度{box.get(score):.3f}, 坐标{box.get(bbox)}) # 可以将结果保存为JSON文件 with open(layout_result.json, w) as f: json.dump(result, f, indent2) print(结果已保存到 layout_result.json) except requests.exceptions.RequestException as e: print(fAPI请求失败: {e}) except Exception as e: print(f处理结果时出错: {e})API返回的JSON结构通常包含检测框boxes信息每个框会有类别label、置信度score和边界框坐标bbox格式一般为[x_min, y_min, x_max, y_max]。5. 总结与进阶建议走到这一步你已经成功在阿里云ECS上部署了YOLO X Layout服务并通过安全组和Nginx配置实现了安全、便捷的公网访问。我们来回顾一下关键点并看看还有什么可以优化的。5.1 核心步骤回顾部署服务在ECS上准备好环境、代码和模型用Python启动Gradio服务。开通网络在阿里云控制台为ECS实例的安全组添加一条入方向规则放行TCP7860端口。这是能让外网访问到的前提。配置代理安装Nginx并配置反向代理将80端口的请求转发到本地的7860端口服务。这样我们就可以用域名或IP直接访问无需输入端口号。测试使用通过Web界面或API接口验证服务是否正常工作。5.2 安全与优化建议当前的配置已经可以运行但对于长期使用的生产环境我建议你考虑以下几点限制访问IP将安全组规则中的0.0.0.0/0改为你常用的、固定的公网IP地址段如你的办公室IP/32大幅降低被扫描攻击的风险。启用HTTPS申请一个SSL证书阿里云可以申请免费证书在Nginx配置中启用443端口将HTTP请求重定向到HTTPS。这能加密数据传输更安全。使用进程管理用systemd或Supervisor来管理app.py进程实现服务崩溃后自动重启、日志轮转等功能比简单的nohup更可靠。域名与DNS购买一个简短的域名并配置DNS解析到你的服务器IP。用域名访问比记IP地址专业得多。防火墙加固除了安全组还可以在ECS操作系统内部启用防火墙如ufw只开放必要的端口如80, 443, 22。模型选择根据实际使用反馈在速度Tiny模型和精度L0.05模型之间做权衡选择最合适的模型。现在你的文档智能分析工具已经就绪了。无论是处理扫描的合同、提取报告中的表格还是分析论文排版YOLO X Layout都能帮你自动化完成初期的版面识别工作大大提高效率。快去试试吧获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。