首页 / 资讯中心 / 文章详情

自己练习云迁移与部署

自己练习云迁移与部署 ★ FEATURED ARTICLE
要点创建云主机系统环境配置装运行环境Java/Python天翼云后台查看已分配资源ECS / EIP / RDS / REDIS / VPC / 安全组EIP 先绑定 ECS 完成应用迁移部署 Docker 容器化环境下载 Java、Node、Maven 等镜像之后把 EIP 解绑重新绑定到 NAT 网关实现多台 ECS 上网安装dockeryum install -y docker— 1.1 安装 java、maven、python 等环境 —— 1.2 修改 docker 镜像源 —备份原配置cp /etc/containers/registries.conf /etc/containers/registries.conf.bak覆盖写入清掉旧死源cat /etc/containers/registries.conf ‘EOF’unqualified-search-registries [“docker.io”][[registry]]prefix “docker.io”location “docker.io”[[registry.mirror]]location “docker.m.daocloud.io”[[registry.mirror]]location “docker.1ms.run”EOF直接裸名字拉镜像不带前缀 docker pull maven:3-eclipse-temurin-8-alpinedocker pull maven:3.8-jdk-8docker pull eclipse-temurin:8-jre-alpinedocker pull node:16-alpinedocker pull python:3.9-slim要点改配置文件数据库地址/OSS→ Docker 重新打包部署 → 数据迁移— 2.1 修改应用配置文件 —java 项目路径src/main/resources/application.yml数据库地址改为 RDS 内网IP如 192.168.0.32:3306账号密码对应改文件存储改为 OSS 类型endpoint 换成公网地址bucket 写文件夹名— 2.2 编译镜像并部署 —cd /root/member-systemdocker build -t member-system:cloud .注意结尾要带 . 目录下必须有 Dockerfile改了参数就删容器重新打包docker rm -f member-app— 2.3 Dockerfile 内容两阶段—阶段1Maven 编译FROM maven:3.8-jdk-8 AS buildWORKDIR /appCOPY pom.xml .RUN mvn dependency:go-offline -qCOPY src ./srcRUN mvn package -DskipTests -q阶段2JRE 运行temurinopenjdk已废弃FROM eclipse-temurin:8-jre-alpineWORKDIR /appCOPY --frombuild /app/target/*.jar app.jarEXPOSE 8080ENTRYPOINT [“java”,“-jar”,“/app/app.jar”]启动程序docker run -d --name member-app -p 8080:8080 member-system:cloud数据库迁移导出→上传ECS→导入RDS 文件迁移OSS 页面验证本子任务以平台操作为主核心命令为 mysqldump 导出、mysql 导入mysqldump 导出本地数据库 → 上传至天翼云 ECS → 从 ECS 命令行导入 RDS源主机.\mysqldump.exe -uroot -p --databases member_db --add-drop-database member_db.sql云主机mysql -h RDS内网地址 -u RDS账号 -p /root/member_db.sqlXstorebrowser 工具用 AK/SK endpoint 登录把本地文件迁到 OSS验证业务系统首页门店照片显示正常要开放的端口数据库、redis2. 外网安全组出方向不限入方向只开业务端口大模型API要开放的端口大模型、SSHOSS 桶策略放通NAT 网关配置正确— 1.1 装 Docker没装的情况下—yum install -y dockersystemctl start docker— 1.2 docker 换国内镜像源 —mkdir -p /etc/dockercat /etc/docker/daemon.json ‘EOF’{“registry-mirrors”: [“https://docker.xuanyuan.me”,“https://docker.1ms.run”,“https://docker.m.daocloud.io”]}EOFsystemctl daemon-reload systemctl restart dockerdocker info | grep -A3 “Registry Mirrors”出问题看 docker 日志journalctl -u docker -n 15 --no-pager | grep -iE “unable|invalid|unknown|error”— 1.3 下载 vLLM 镜像 —docker pull vllm/vllm-openai:v0.9.2— 1.4 下载权重文件CT云 python 是 3.7需先装 miniconda 用 3.9—cd /rootwget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh -b -p /data/miniconda3/data/miniconda3/bin/pip install -U modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple后台下载权重30GB 要跑一阵nohup /data/miniconda3/bin/modelscope download --model TeleAI/TeleChat2-7B-32K–local_dir /root/models/TeleChat2-7B-32K /root/ms.log 21 tail -f /root/ms.log— 1.5 下载完校验 —目录里必须有config.json、tokenizer 系列文件、多个 *.safetensorsls -lh /root/models/TeleChat2-7B-32K确认架构是 TeleChat2ForCausalLMvLLM 能加载的关键证据grep -A1 ‘“architectures”’ /root/models/TeleChat2-7B-32K/config.json期望输出“architectures”: [“TeleChat2ForCausalLM”],确认自带 chat_templategrep -m1 chat_template /root/models/TeleChat2-7B-32K/tokenizer_config.json— 1.6 安装 nvidia-container-toolkit —先检查装了没rpm -qa | grep -i nvidia-container① 写 USTC 源先清掉旧 reporm -f /etc/yum.repos.d/nvidia-container-toolkit.repocat /etc/yum.repos.d/nvidia-container-toolkit.repo ‘EOF’[nvidia-container-toolkit]namenvidia-container-toolkitbaseurlhttps://mirrors.ustc.edu.cn/libnvidia-container/stable/rpm/x86_64repo_gpgcheck0gpgcheck0enabled1EOF② 缓存yum makecache --disablerepo‘*’ --enablerepo‘nvidia-container-toolkit’③ 安装yum install -y nvidia-container-toolkit --disablerepo‘*’ --enablerepo‘nvidia-container-toolkit’④ 注册 runtime 检查nvidia-ctk runtime configure --runtimedockercat /etc/docker/daemon.json # mirrors 必须还在多了 runtimes 段⑤ 重启 dockersystemctl restart docker⑥ 终极验证docker run --rm --gpus all vllm/vllm-openai:v0.9.2 nvidia-smi— 1.7 启动 vLLM 推理服务端口18000密钥entrant02—docker run -d–name telechat-vllm–restartalways–gpus all–shm-size16g-p 18000:18000-v /root/models/TeleChat2-7B-32K:/models/TeleChat2-7B-32Kvllm/vllm-openai:v0.9.2–model /models/TeleChat2-7B-32K–served-model-name TeleChat-7B–trust-remote-code–dtype float16–gpu-memory-utilization 0.90–max-model-len 32768–enable-auto-tool-choice–tool-call-parser hermes–api-key entrant02–host 0.0.0.0–port 18000— 1.8 三次 curl 验证 —验证① web服务响应状态正常HTTP 200 OKcurl -i -H “Authorization: Bearer entrant02” http://192.168.0.35:18000/v1/models验证② 模型名称 推理结果返回正常10Token以上curl -s -H “Authorization: Bearer entrant02” -H “Content-Type: application/json”http://125.122.96.222:18000/v1/chat/completions-d ‘{“model”:“TeleChat-7B”,“messages”:[{“role”:“user”,“content”:“请用三句话介绍你自己并说明你能为企业提供哪些帮助。”}],“max_tokens”:256}’验证③ 云专网调用换专网地址28000端口curl -X POST http://192.168.0.35:28000/v1/chat/completions-H “Content-Type: application/json”-d ‘{“model”: “TeleChat-7B”, “messages”: [{“role”: “user”, “content”: “请介绍一下你自己”}], “max_tokens”: 256}’— 1.9 配置网络策略 —要点无命令纯客户端操作电脑终端下载安装 TeleAgent能正常启动并对话TeleAgent 里配置 GPU 云主机上的 TeleChat-7B API 服务地址 http://GPU机IP:18000/v1密钥 entrant02用该模型完成一次基础对话交互返回正常即可要点部署 queue_mcp → TeleAgent 注册 MCP → 新建技能对话 → 告警发微信 计划任务— 3.1 启动/关闭 MCP 程序 —启动nohup python3 queue_mcp.py mcp.log 21 sleep 2; tail -20 mcp.log关闭pkill -f queue_mcp.py 2/dev/null; sleep 1— 3.2 TeleAgent 工具里注册 MCP 的 JSON 配置 —{“mcpServers”: {“store-queue-mcp”: {“url”: “http://125.122.32.3:9100/mcp”,“headers”: {“Authorization”: “Bearer queue-mcp-2026”}}}}— 3.3 技能提示词新建任务里发—要点两种方式MCP / 裸REST接口出两个Sheet的Excel日报— 4.1 启动并测试报表 MCP —nohup python3 report_mcp.py report_mcp.log 21 配置{“mcpServers”: {“report-queue-mcp”: {“url”: “http://125.122.32.3:9200/mcp”,“headers”: {“Authorization”: “Bearer report-token-2026”}}}}测试 tools/listcurl -X POST http://127.0.0.1:9200/mcp -H “Content-Type: application/json” -d ‘{“jsonrpc”:“2.0”,“id”:1,“method”:“tools/list”,“params”:{}}’测试 tools/call 取 2026-10-29 日报curl -X POST http://127.0.0.1:9200/mcp -H “Content-Type: application/json” -d ‘{“jsonrpc”:“2.0”,“id”:2,“method”:“tools/call”,“params”:{“name”:“get_daily_report”,“arguments”:{“date”:“2026-10-29”}}}’— 4.2 方式一MCP 提示词 —你是企业经营数据日报技能。执行步骤调用 MCP 工具 get_daily_report 获取企业当日经营数据不传参数默认今天若当日无数据传 date2026-10-29 取有数据的日期。将数据绘制成 Excel 报表.xlsx包含两个工作表Sheet1「门店营收明细」门店编号、门店名称、订单数、当日营收元按营收降序排列末行加合计行。Sheet2「企业营收汇总」报告日期、总订单数、企业当日总营收元。报表工整美观表头加粗填色、金额列保留两位小数、合计行醒目。完成后报告输出文件路径并简要汇报各门店营收与企业当日总营收。— 4.3 方式二裸 REST 接口提示词 —你是企业经营数据日报技能。执行步骤访问云上业务系统报表接口 http://125.122.96.222:28080/api/report/daily 获取企业当日经营数据。将数据绘制成 Excel 报表.xlsx包含两个工作表Sheet1「门店营收明细」门店编号、门店名称、订单数、当日营收元按营收降序排列末行加合计行。Sheet2「企业营收汇总」报告日期、总订单数、企业当日总营收元。报表工整美观表头加粗填色、金额列保留两位小数、合计行醒目。完成后报告输出文件路径并简要汇报各门店营收与企业当日总营收。任务二查资源→绑EIP→装环境→改配置→build镜像→迁移数据→配安全组NAT任务三装docker→换源→pull vllm→miniconda→modelscope下载权重→校验→nvidia-toolkit→docker run起服务→3次curl验证→→补充vllm和多种部署情况下配置一、到场第一步形态盘点脚本echo “ 2. docker 侧有什么 ”docker images 2/dev/null | grep -iE “vllm|telechat” || echo “无 docker 镜像”docker ps -a 2/dev/null | grep -iE “vllm|telechat” || echo “无运行中容器”echo “ 3. 裸装侧有什么 ”which vllm 2/dev/null; pip3 show vllm 2/dev/null | head -2 || echo “pip 无 vllm”python3 -c “import vllm; print(‘vllm版本:’, vllm.version)” 2/dev/null || echo “python 环境无 vllm”echo “ 4. conda 环境 ”conda env list 2/dev/null || echo “无 conda”echo “ 5. 权重在哪 ”find / -maxdepth 5 -name “config.json” -path “TeleChat” 2/dev/null | head -5echo “ 6. GPU ”nvidia-smi --query-gpuname,memory.total,memory.used --formatcsv盘点结果与形态对应盘点现象 该走哪个形态有 vllm 镜像 找到权重目录 docker run 启动有 vllm 镜像、无权重 先下载或解压权重无镜像、只有 tar 包 形态 docker load 离线导入无 dockerpip/conda 里有 vllm 形态 裸装启动二、权重五种到手方式权重本质只有一种形态——一个文件夹里面必须有 config.json、tokenizer 系列文件。差别只在怎么拿到拿到之后处理完全一致。情况一 已预置在磁盘 直接能找到目录 不用动记下绝对路径 常见位置 /root/models、/data、/models用 find 找情况二 tar 压缩包 存在 .tar.gz 或 .tar tar zxvf xxx.tar.gz -C /root/models/ 解压后可能多一层嵌套目录挂载路径必须指到含 config.json 那一层情况三 zip 压缩包 存在 *.zip unzip xxx.zip -d /root/models/ 中文文件名易乱码未装 unzip 先 yum install -y unzip情况四 git 仓库 目录里有 .git git lfs pull 只拉了指针文件时 safetensors 只有几百字节必须补拉情况五 命令行下载 以上都没有 modelscope download --model TeleAI/TeleChat2-7B-32K --local_dir /root/models/TeleChat2-7B-32K 系统 python 若是 2.7必须先装 miniconda 用 3.9权重到手后的统一校验任何形式都要跑ls -lh 权重目录 | grep -E “config.json|safetensors|tokenizer”du -sh 权重目录grep -A1 ‘“architectures”’ 权重目录/config.jsongrep -m1 chat_template 权重目录/tokenizer_config.json•第一条关键文件是否齐全。•第二条期望输出 [“TeleChat2ForCausalLM”]这是 vLLM 能加载的决定性证据。•第三条确认自带 chat_template否则对话格式会乱。W5 下载权重的完整命令cd /rootwget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh -b -p /data/miniconda3/data/miniconda3/bin/pip install -U modelscope huggingface_hub -i https://pypi.tuna.tsinghua.edu.cn/simplenohup /data/miniconda3/bin/modelscope download --model TeleAI/TeleChat2-7B-32K–local_dir /root/models/TeleChat2-7B-32K /root/ms.log 21 tail -f /root/ms.log三、vLLM五种安装形式一官方 docker 镜像 docker images 里有 vllm/vllm-openai: docker run 全套参数 题面标准形态二离线 tar 镜像包 目录里存在几 GB 的 *.tar docker load -i 后按 V1 启动 内网无外网比赛方给离线包三 私有仓库镜像 现场给了仓库地址与账号 docker login 后 docker pull 比赛方自建 harbor四 pip 裸装 pip3 show vllm 有版本号 vllm serve 或 python3 -m 方式 无 docker 或已预装 python 环境五 预装 conda 环境 conda env list 有环境激活后 import vllm 不报错 conda activate 后同 V4 比赛方把环境都备好了一 / 二 / 三docker 系列启动三种到手方式启动完全一样docker run -d --name telechat-vllm --restartalways --gpus all --shm-size16g-p 18000:18000-v 权重绝对路径:/models/TeleChat2-7B-32Kvllm/vllm-openai:现场tag–model /models/TeleChat2-7B-32K–served-model-name TeleChat-7B–trust-remote-code --dtype float16–gpu-memory-utilization 0.90 \–max-model-len 32768–enable-auto-tool-choice 、–tool-call-parser hermes–api-key entrant02–host 0.0.0.0–port 18000二 离线包先 docker load -i vllm-openai-v0.9.2.tar再 docker images 确认实际 tag 名可能是 latest。•若控制台出现 “Emulate Docker CLI using podman”说明系统用 podman 冒充 docker命令照常可用不影响。四 / 五裸装启动无 docker 时的主力打法先确认环境python3 --versionpython3 -c “import vllm; print(vllm.version)”python3 -c “import torch; print(torch.version, torch.cuda.is_available())”•python 必须 3.9 以上2.7 直接放弃改用 conda 环境。•torch.cuda.is_available() 必须为 True否则环境里看不到显卡。启动方式二选一效果等价vllm serve /root/models/TeleChat2-7B-32K–served-model-name TeleChat-7B–trust-remote-code–dtype float16–gpu-memory-utilization 0.90–max-model-len 32768–api-key entrant02–host 0.0.0.0–port 18000 vllm.log 21 备用写法老版本用 python3 -m 方式效果完全等价 ----python3 -m vllm.entrypoints.openai.api_server–model /root/models/TeleChat2-7B-32K–served-model-name TeleChat-7B–trust-remote-code–dtype float16–api-key entrant02–host 0.0.0.0–port 18000 vllm.log 21 •第一种是 vLLM 新版命令简洁第二种是老版本写法兼容性更好。•启动后 tail -f vllm.log看到 Uvicorn running on http://0.0.0.0:18000 即成功。•五 用 conda 环境时先 conda activate 环境名 再执行上面的启动命令。自装 vLLM 的命令 需要时pip3 install vllm -i https://pypi.tuna.tsinghua.edu.cn/simplepip 安装会连带拉 torch体积数 GB且要求 CUDA 驱动版本匹配装完务必用上面的 torch.cuda.is_available() 验证。四、三次 curl 验证所有形态通用curl -i -H “Authorization: Bearer entrant02” http://GPU机IP:18000/v1/modelscurl -s -H “Authorization: Bearer entrant02” -H “Content-Type: application/json”http://GPU机IP:18000/v1/chat/completions-d “{“model”:“TeleChat-7B”,“messages”:[{“role”:“user”,“content”:“请用三句话介绍你自己并说明你能为企业提供哪些帮助。”}],“max_tokens”:256}”curl -X POST http://专网IP:专网端口/v1/chat/completions-H “Content-Type: application/json”-d “{“model”:“TeleChat-7B”,“messages”:[{“role”:“user”,“content”:“请介绍一下你自己”}],“max_tokens”:256}”五、报错预案速查报错现象 成因 处置方法Architecture TeleChat2ForCausalLM not found vLLM 版本低于 0.6.5不识别该架构 更换更高版本镜像确认已加 --trust-remote-codeno config.json / Invalid repository ID 权重路径不对 find / -maxdepth 5 -name config.json 找真实目录docker -v 挂不存在的路径会自动建空目录不报错但必然启动失败CUDA out of memory 显存不足 --gpu-memory-utilization 从 0.90 降到 0.85–max-model-len 从 32768 降到 8192启动后 curl 一直超时 模型仍在加载24G 卡加载 7B 约需数分钟 docker logs -f telechat-vllm看到 Application startup complete 再验证对话格式异常或乱码 缺 chat_template grep chat_template 确认缺失则用 --chat-template 指定官方模板port is already allocated 端口被上次失败的容器占用 docker rm -f telechat-vllm 后重起或换端口并同步改 curlvllm: command not found 未装成功或不在 PATH 改用 python3 -m vllm.entrypoints.openai.api_server 兜底ImportError: libcudart.so torch 与 CUDA 驱动版本不匹配 装对应 cu 版本 torch判断不清则改用 docker 形态pip 安装卡死或极慢 python 2.7 或网络问题 先确认 python3 --versionpip 走清华源Emulate Docker CLI using podman 系统用 podman 代替 docker 命令照常使用不影响功能
阅读完成 · 觉得有帮助?
咨询建站