阿里云ECS部署YOLO教程
发布时间:2026/9/2 15:21:09 作者:尧图编辑部 阅读量:1,286

1、阿里云注册在官网注册账号阿里云登录 - 欢迎登录阿里云安全稳定的云计算服务平台2、ECS配置选择3、在阿里云 Workbench里为Ubuntu 18/20/22/24安装XFCE桌面不推荐在这个里面使用不好用stesteps1、通过VNC连接实例step2、更新软件包列表和已安装的包sudo apt update sudo apt upgrade -ystep3、安装XFCE桌面环境sudo apt install -y xfce4 xfce4-goodies lightdm lightdm-gtk-greeterstep4、重启ECS实例sudo reboot4、ssh连接十分推荐step1在控制ECS控制台查看自己的公网IP地址step2在vscode进行连接step3输入root公网ip进行连接5、安装miniconda官网Linux installer - Anaconda在vscode按下ctrlshift打开终端在终端依次输入miniconda安装指令如果conda --version有版本号输出则表明miniconda安装成功# 安装包安装 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 运行安装脚本 bash Miniconda3-latest-Linux-x86_64.sh # 安装完成后关闭当前终端重新打开或执行 source ~/.bashrc # 验证 conda conda --version6、pytorch环境搭建官方教程入门 - PyTorch 框架打开新的终端依次完成一下步骤step1创建conda环境conda create --name pytorch python3.11step2激活环境conda activate pytorchstep3安装pytorchpip3 install torch torchvision --index-url https://download.pytorch.org/whl/cpu7、TensorFlow环境搭建官网教程https://tensorflow.google.cn/install/pip#linux8、使用8.1让单个Python 脚本在后台持久运行方法一使用nohup命令最简单快捷nohup的意思是 no hang up不挂断。它可以让程序忽略终端关闭的信号并在后台默默运行。1. 启动程序在终端中输入以下命令nohup python3 /root/Desktop/server_andian_test/server_ai_multi_stomp.py /root/Desktop/server_andian_test/run.log 21 nohup: 让程序在后台运行。 /root/Desktop/server_andian_test/run.log 21: 将原本在屏幕上打印的日志包括报错全部保存到run.log文件中。: 将任务放到后台。2. 检查日志按下回车后你可以放心地关闭终端。如果想看运行状态随时连上服务器输入tail -f /root/Desktop/server_andian_test/run.log(按CtrlC退出日志查看程序依然会在后台运行)3. 如何停止程序当你需要更新代码或停止程序时先找到它的进程 ID (PID)ps aux | grep server_ai_multi_stomp.py找到对应的进程号通常是第二列的数字然后杀掉它假设 PID 是 12345kill -9 12345方法二使用tmux终端复用器最优雅强烈推荐tmux相当于在服务器上开了一个“虚拟显示器”。你把程序开在这个虚拟显示器里关掉你自己的电脑屏幕虚拟显示器依然在工作。下次连上去还能看到一模一样的实时运行画面。1. 安装 tmux如果尚未安装apt-get update apt-get install tmux -y2. 创建一个新会话tmux new -s aiserver(这时候屏幕会刷新底部会出现一条绿色的状态栏说明你已经进入虚拟终端了)3. 在里面正常运行你的程序cd /root/Desktop/server_andian_test python3 server_ai_multi_stomp.py4. “挂起”并离开重点让程序跑着依次按下键盘的先按一下Ctrl B松开然后按一下字母D(Detach)(此时你会回到原来的普通终端并看到提示[detached (from session aiserver)]。现在你可以安全地关闭 SSH 软件了)5. 以后如何重新连接回来无论过多久重新连上服务器输入以下命令就能回到那个实时打印日志的画面tmux attach -t aiserver8.2让多个Python 脚本在后台持久运行方法一使用tmux的“多窗口”功能最推荐所见即所得之前已经了解了tmux相当于一个虚拟显示器。实际上这台“虚拟显示器”里面是可以开多个标签页Window的就像浏览器的标签页一样。1. 新建并进入一个大的 tmux 会话相当于打开浏览器tmux new -s all_my_apps2. 在第一个标签页运行第一个程序cd /root/Desktop/server_andian_test python3 server_ai_multi_stomp.py3. 新建一个标签页运行第二个程序不要关掉当前程序依次按下键盘先按Ctrl B松开然后按字母C(Create 的意思)(此时屏幕底部的绿条会出现一个1:bash*说明你来到了第二个全新的空终端。第一个程序依然在后台0号窗口跑着。)在新窗口里运行你的第二个程序python3 another_script.py4. 如何在多个程序之间切换看日志先按Ctrl B松开然后按数字0—— 回到第一个程序先按Ctrl B松开然后按数字1—— 切换到第二个程序依此类推...5. 挂起并离开按Ctrl B松开后按D(Detach)。此时你可以安全关闭你的 SSH 软件比如 Xshell、Termius、Putty。所有的程序都会在各自的窗口里乖乖运行。方法二使用PM2进程管理器企业级生产环境首选如果是真正的生产环境万一服务器半夜重启了或者代码报错崩溃了tmux和nohup是不会自动重启程序的。这时候专业的程序员会使用pm2。虽然它是 Node.js 环境下诞生的但管理 Python 脚本简直是神器。1. 安装 PM2(如果是 Ubuntu/Debian 且有 npm)apt-get install npm -y npm install pm2 -g2. 一键启动所有 Python 程序pm2 start /root/Desktop/server_andian_test/server_ai_multi_stomp.py --name AI_Server --interpreter python3 pm2 start /root/Desktop/server_andian_test/another_script.py --name Data_Spider --interpreter python33. PM2 的魔法指令pm2 list—— 像看表格一样查看所有正在运行的程序状态运行时长、内存占用、CPU 占用等。pm2 logs—— 像看电视分屏一样同时看所有程序的实时日志。pm2 restart AI_Server—— 重启单个程序。pm2 startup然后pm2 save—— 甚至能做到服务器断电重启后开机自动把你这些程序拉起来8.3程序热重启-1Uvicorn 原生就提供了一个非常强大的“热重载 (Hot Reload)”功能。开启这个功能后只要按下保存CtrlS修改了任何.py文件服务器就会在不到 1 秒内自动重启并应用新代码完全不需要再手动去掐断进程并重新运行。开启reloadTrue后Uvicorn 的监听机制是全局扫描的。它监听的不仅仅是入口文件main.py而是当前运行目录及所有子目录下的所有 Python 文件 (*.py)。也就是说只要不关掉运行着main.py的终端无论什么时候去修改并保存algorithm_cusum.py或者是ai_core.py、configv3.py等等Uvicorn 都会在不到 1 秒的时间内自动侦测到文件的变动并替在后台瞬间完成“掐断旧进程 - 加载新算法代码 - 重新拉起服务”的全套动作。直接修改算法参数保存立刻就能在前端看到新算法跑出来的效果开发体验会极其丝滑。只有一点“物理规律”需要注意关于状态重置因为热重载本质上是一次真正的服务重启所以当你按下保存键CtrlS触发热重载的那一瞬间会发生以下现象内存清空mainv5.py里暂存的设备状态、滴漏缓冲池channel_states会被重置清空。WebSocket 瞬间断开前端大屏与后端的连接会被踢掉。way1通过命令行启动最推荐、最规范以后在开发阶段不要再使用python main.py来启动项目了。请打开终端Terminal在文件所在的目录下直接输入以下命令uvicorn mainv5:app --host 0.0.0.0 --port 9000 --reloadmain:app告诉系统去mainv5.py文件里寻找名字叫app的 FastAPI 实例。--reload这就是开启代码变动监听的魔法开关。way2直接修改mainv5.py底部的代码如果习惯直接在 IDE 里点击“运行”按钮或者习惯输入python main.py需要稍微修改一下文件最底部uvicorn.run的写法。找到文件最底部的这段代码if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port9000)将其精准替换为if __name__ __main__: import uvicorn # 极其重要当开启 reloadTrue 时第一个参数不能直接传 app 变量必须传字符串 文件名:实例名 uvicorn.run(main:app, host0.0.0.0, port9000, reloadTrue)8.3程序热重启-2如果厌倦了每次改一行代码都要等 PyTorch 重新加载best_model.pth可以使用jurigged。原理它基于 Python 的 AST抽象语法树和sys.settrace。当修改了一个函数或类它会在不重启整个进程的情况下直接在内存中“热替换”掉旧的代码块。优势WebSocket 连接不断全局变量如channel_states不丢PyTorch 模型不用重新加载。用法 先安装pip install jurigged然后在终端先cd进代码所在的真实目录然后再执行jurigged让它和你的代码处于同一层级。9、问题9.1内存使用率、云盘使用率以及网络流量一直处于正在采集9.1.1问题分析CPU 使用率属于宿主机底层虚拟化层面的监控无需系统内部授权即可直接读取而内存使用率、云盘使用率和系统内部网络流量属于操作系统内部指标必须依赖实例内部安装并运行云监控插件CloudMonitor Agent / argusagent来主动上报。当插件未安装、未启动、进程异常或与云监控内网通信受阻时控制台就会一直显示“正在采集”。9.1.2问题排查与解决第一步登录服务器检查插件状态 (以 Linux 为例)通过 SSH 或阿里云控制台的Workbench / VNC登录 ECS执行以下命令查看云监控插件状态# 查看云监控插件进程是否存在 ps -ef | grep -E argusagent|CmsGoAgent | grep -v grep # 或者查看服务运行状态 (系统服务方式) systemctl status cloudmonitor如果提示服务未找到或无进程说明插件未安装或已被卸载。如果服务处于inactive/dead尝试启动服务sudo systemctl restart cloudmonitor第二步安装或重新安装云监控插件方法 1通过控制台一键安装推荐打开阿里云 ECS 控制台。在左侧导航栏找到运维与监控 - 云助手或在实例详情页的“运维”标签中。搜索云监控插件直接点击安装 / 升级。方法 2通过 Linux 终端一键安装脚本在服务器内执行对应地域的安装命令内网加速免外网流量# 官方标准安装脚本自动识别系统架构与内网节点 sudo bash -c $(curl -fsSL https://cms-agent-cn-hangzhou.oss-cn-hangzhou-internal.aliyuncs.com/cms-go-agent/cms_go_agent_install.sh)(注如果实例在非杭州地域脚本通常会自动解析如无法下载可将链接中的cn-hangzhou替换为您实例所在的 Region ID如cn-beijing、cn-shanghai等)如果是 Windows 系统登录实例打开任务管理器检查是否存在argusagent服务。若未安装前往控制台通过云助手推送或从阿里云官网下载 Windows 版云监控安装包手动运行。第三步检查网络与安全配置若安装后仍无法采集如果插件已正常运行但依然显示“正在采集”请检查以下两点DNS 配置是否正确确保/etc/resolv.conf中包含阿里云内网 DNS例如100.100.2.136或100.100.2.138否则插件无法解析云监控服务上报地址。安全防护软件 / 出方向防火墙拦截检查系统内部iptables/firewalld或安全组的出方向规则确保未拦截访问内网 IP 段100.64.0.0/10此为阿里云内部服务保留网段。验证生效完成安装/启动后等待 3 ~ 5 分钟监控数据采集与汇聚有固定周期强制刷新控制台页面指标即可正常显示。