1、阿里云注册
在官网注册账号:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
2、ECS配置选择


3、在阿里云 Workbench里为Ubuntu 18/20/22/24安装XFCE桌面(不推荐在这个里面使用,不好用!)
stesteps1、通过VNC连接实例
step2、更新软件包列表和已安装的包
sudo apt update && sudo apt upgrade -y
step3、安装XFCE桌面环境
sudo apt install -y xfce4 xfce4-goodies lightdm lightdm-gtk-greeter
step4、重启ECS实例
sudo reboot
4、ssh连接(十分推荐)
step1:在控制ECS控制台查看自己的公网IP地址

step2:在vscode进行连接

step3:输入root@公网ip,进行连接

5、安装miniconda
在vscode按下ctrl+shift++打开终端,在终端依次输入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 --version
6、pytorch环境搭建
官方教程:入门 - PyTorch 框架
打开新的终端,依次完成一下步骤:
step1:创建conda环境
conda create --name pytorch python=3.11
step2:激活环境
conda activate pytorch
step3:安装pytorch
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cpu
7、TensorFlow环境搭建
官网教程:https://tensorflow.google.cn/install/pip#linux
8、使用
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 2>&1 &
-
nohup: 让程序在后台运行。 -
> /root/Desktop/server_andian_test/run.log 2>&1: 将原本在屏幕上打印的日志(包括报错)全部保存到run.log文件中。 -
&: 将任务放到后台。
2. 检查日志
按下回车后,你可以放心地关闭终端。如果想看运行状态,随时连上服务器输入:
tail -f /root/Desktop/server_andian_test/run.log
(按 Ctrl+C 退出日志查看,程序依然会在后台运行)
3. 如何停止程序
当你需要更新代码或停止程序时,先找到它的进程 ID (PID):
ps aux | grep server_ai_multi_stomp.py
找到对应的进程号(通常是第二列的数字),然后杀掉它(假设 PID 是 12345):
kill -9 12345
方法二:使用 tmux 终端复用器(最优雅,强烈推荐)
tmux 相当于在服务器上开了一个“虚拟显示器”。你把程序开在这个虚拟显示器里,关掉你自己的电脑屏幕,虚拟显示器依然在工作。下次连上去,还能看到一模一样的实时运行画面。
1. 安装 tmux(如果尚未安装)
apt-get update && apt-get install tmux -y
2. 创建一个新会话
tmux new -s aiserver
(这时候屏幕会刷新,底部会出现一条绿色的状态栏,说明你已经进入虚拟终端了)
3. 在里面正常运行你的程序
cd /root/Desktop/server_andian_test
python3 server_ai_multi_stomp.py
4. “挂起”并离开(重点!) 让程序跑着,依次按下键盘的:
-
先按一下
Ctrl + B(松开) -
然后按一下字母
D(Detach) (此时你会回到原来的普通终端,并看到提示[detached (from session aiserver)]。现在你可以安全地关闭 SSH 软件了!)
5. 以后如何重新连接回来
无论过多久,重新连上服务器,输入以下命令就能回到那个实时打印日志的画面:
tmux attach -t aiserver
8.2让多个Python 脚本在后台持久运行
方法一:使用 tmux 的“多窗口”功能(最推荐,所见即所得)
之前已经了解了 tmux 相当于一个虚拟显示器。实际上,这台“虚拟显示器”里面是可以开多个标签页(Window)的,就像浏览器的标签页一样。
1. 新建并进入一个大的 tmux 会话(相当于打开浏览器)
tmux new -s all_my_apps
2. 在第一个标签页,运行第一个程序
cd /root/Desktop/server_andian_test
python3 server_ai_multi_stomp.py
3. 新建一个标签页,运行第二个程序
不要关掉当前程序!依次按下键盘:
-
先按
Ctrl + B(松开) -
然后按字母
C(Create 的意思) (此时屏幕底部的绿条会出现一个1:bash*,说明你来到了第二个全新的空终端。第一个程序依然在后台0号窗口跑着。)
在新窗口里运行你的第二个程序:
python3 another_script.py
4. 如何在多个程序之间切换看日志?
-
先按
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 -g
2. 一键启动所有 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 python3
3. PM2 的魔法指令
-
pm2 list—— 像看表格一样查看所有正在运行的程序状态(运行时长、内存占用、CPU 占用等)。 -
pm2 logs—— 像看电视分屏一样,同时看所有程序的实时日志。 -
pm2 restart AI_Server—— 重启单个程序。 -
pm2 startup然后pm2 save—— 甚至能做到服务器断电重启后,开机自动把你这些程序拉起来!
8.3程序热重启-1
Uvicorn 原生就提供了一个非常强大的“热重载 (Hot Reload)”功能。开启这个功能后,只要按下保存(Ctrl+S)修改了任何 .py 文件,服务器就会在不到 1 秒内自动重启并应用新代码,完全不需要再手动去掐断进程并重新运行。
开启 reload=True 后,Uvicorn 的监听机制是全局扫描的。它监听的不仅仅是入口文件 main.py,而是当前运行目录及所有子目录下的所有 Python 文件 (*.py)。也就是说,只要不关掉运行着 main.py 的终端,无论什么时候去修改并保存 algorithm_cusum.py(或者是 ai_core.py、configv3.py 等等),Uvicorn 都会在不到 1 秒的时间内自动侦测到文件的变动,并替在后台瞬间完成“掐断旧进程 -> 加载新算法代码 -> 重新拉起服务”的全套动作。直接修改算法参数保存,立刻就能在前端看到新算法跑出来的效果,开发体验会极其丝滑。
只有一点“物理规律”需要注意(关于状态重置):因为热重载本质上是一次真正的服务重启,所以当你按下保存键(Ctrl+S)触发热重载的那一瞬间,会发生以下现象:
-
内存清空:
mainv5.py里暂存的设备状态、滴漏缓冲池(channel_states)会被重置清空。 -
WebSocket 瞬间断开:前端大屏与后端的连接会被踢掉。
way1:通过命令行启动(最推荐、最规范)
以后在开发阶段,不要再使用 python main.py 来启动项目了。请打开终端(Terminal),在文件所在的目录下直接输入以下命令:
uvicorn mainv5:app --host 0.0.0.0 --port 9000 --reload
-
main:app:告诉系统去mainv5.py文件里寻找名字叫app的 FastAPI 实例。 -
--reload:这就是开启代码变动监听的魔法开关。
way2:直接修改 mainv5.py 底部的代码
如果习惯直接在 IDE 里点击“运行”按钮,或者习惯输入 python main.py,需要稍微修改一下文件最底部 uvicorn.run 的写法。
找到文件最底部的这段代码:
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=9000)
将其精准替换为:
if __name__ == "__main__":
import uvicorn
# 极其重要:当开启 reload=True 时,第一个参数不能直接传 app 变量,必须传字符串 "文件名:实例名"
uvicorn.run("main:app", host="0.0.0.0", port=9000, reload=True)
8.3程序热重启-2
如果厌倦了每次改一行代码都要等 PyTorch 重新加载 best_model.pth,可以使用jurigged 。
-
原理:它基于 Python 的 AST(抽象语法树)和
sys.settrace。当修改了一个函数或类,它会在不重启整个进程的情况下,直接在内存中“热替换”掉旧的代码块。 -
优势:WebSocket 连接不断,全局变量(如
channel_states)不丢,PyTorch 模型不用重新加载。 -
用法: 先安装:
pip install jurigged,然后在终端先cd进代码所在的真实目录,然后再执行jurigged,让它和你的代码处于同一层级。
1万+

被折叠的 条评论
为什么被折叠?



