飞牛 NAS 部署 AI 闲鱼监控机器人完整教程

本文基于原部署教程优化，核心新增 AI 模型参数一键配置功能，默认适配七牛云 OpenAI 兼容接口与 Gemini-2.5-Pro 模型，无需后续手动在 Web 界面补充 AI 配置，进一步简化部署流程。 1. 项目介绍 ai-goofish-monitor 是一套闲鱼二手平台自动化监控工具，支持：多关键词实时监控 AI 智能筛选（支持图文多模态，默认适配 Gemini-2.5-Pro）多渠道推送（Bark、企业微信、ntfy.sh 等） Web 可视化管理界面通过 Docker 一键部署，可在飞牛 NAS 上 24 小时运行，自动发现符合条件的商品并实时通知。工具默认集成七牛云 OpenAI 兼容接口，配置时仅需输入七牛云 API Key 即可启用 AI 筛选功能（未注册七牛云账号可先通过七牛云注册链接完成注册）。 2. 准备工作 1. 安装 Docker 进入飞牛 NAS 后台 → 应用商店 → 搜索 Docker → 安装安装完成后，在「服务」中确认 Docker 服务已启动 2. 下载源码与部署脚本提供两种获取方式，任选其一（网盘含全套文件，无需手动整理脚本）：方式 1：从 GitHub 下载项目地址：https://github.com/dingyufei615/ai-goofish-monitor 点击 Code → Download ZIP 将 ZIP 文件上传到 NAS 部署目录（例如 /vol1/1000/docker/ai-goofish）方式 2：从夸克网盘获取（含源码+优化脚本）已将「ai-goofish-monitor」全套文件（源码压缩包+优化后的一键部署脚本）上传至夸克网盘：打开「夸克APP」，复制下方内容或链接获取：提取码直达：/~d60d38WAT9~:/网盘链接：https://pan.quark.cn/s/c7711ad32186 将网盘中的文件下载后，上传到 NAS 部署目录（例如 /vol1/1000/docker/ai-goofish） 3. 优化版一键部署脚本（支持 AI 参数一键配置）若从 GitHub 下载，需将下方脚本保存为 deploy.sh 并上传到与 ZIP 文件相同的目录；若从网盘获取，网盘中已包含该优化脚本，可直接使用。核心优化点：新增 AI 模型参数配置步骤（OPENAI_API_KEY、OPENAI_BASE_URL、OPENAI_MODEL_NAME）默认 AI 接口：七牛云 OpenAI 兼容接口（https://openai.qiniu.com/v1）默认 AI 模型：gemini-2.5-pro（需与七牛云支持的模型匹配）七牛云平台获取 API Key（未注册可通过七牛云注册链接注册） #!/bin/bash set +H # 关闭 history 扩展，防止 ! 号报错 # 颜色定义（增强可读性） RED="\033[0;31m" GREEN="\033[0;32m" YELLOW="\033[1;33m" BLUE="\033[0;34m" NC="\033[0m" # 重置颜色 # 全局变量（统一配置） PROJECT_NAME="ai-goofish-monitor" DEFAULT_PORT="8000" DEFAULT_USER="admin" DEFAULT_PWD="admin123" # AI 核心配置（默认七牛云接口+Gemini模型） DEFAULT_OPENAI_BASE_URL="https://openai.qiniu.com/v1" # 七牛云 OpenAI 兼容接口 DEFAULT_OPENAI_MODEL_NAME="gemini-2.5-pro" COMPOSE_CMD="" # 存储最终使用的 compose 命令（docker compose 或 docker-compose） # 1. 检查并切换 root 用户（确保权限足够） check_root() { if [ "$(id -u)" -ne 0 ]; then echo -e "\n${YELLOW}⚠️ 当前用户不是 root，部分操作（如安装依赖）可能失败${NC}" read -p "是否切换到 root 用户继续？(y/n，默认y): " switch_root switch_root=${switch_root:-y} # 默认为y，减少用户输入 if [ "$switch_root" = "y" ]; then echo -e "${BLUE}🔑 正在切换到 root 用户...${NC}" # 传递所有参数给 root 权限下的脚本 exec sudo su -c "$0 $*" else echo -e "${YELLOW}⚠️ 警告：非 root 权限可能导致部署失败，后续问题请优先检查权限${NC}" sleep 2 fi fi } # 2. 检查基础依赖（unzip、docker） check_basic_deps() { echo -e "\n${BLUE}=== 开始检查基础依赖 ===${NC}" # 检查 unzip（解压源码用） if ! command -v unzip &> /dev/null; then echo -e "${RED}❌ 未找到 unzip 工具${NC}" read -p "是否自动安装 unzip？(y/n，默认y): " install_unzip install_unzip=${install_unzip:-y} if [ "$install_unzip" = "y" ]; then echo -e "${YELLOW}📦 正在安装 unzip...${NC}" apt-get update > /dev/null 2>&1 # 静默更新源 apt-get install -y unzip > /dev/null 2>&1 if command -v unzip &> /dev/null; then echo -e "${GREEN}✅ unzip 安装成功${NC}" else echo -e "${RED}❌ unzip 安装失败，请手动执行：sudo apt-get install -y unzip${NC}" exit 1 fi else echo -e "${RED}❌ 缺少 unzip 无法解压源码，部署终止${NC}" exit 1 fi else echo -e "${GREEN}✅ 已找到 unzip${NC}" fi # 检查 Docker（核心依赖，必须提前安装） if ! command -v docker &> /dev/null; then echo -e "${RED}❌ 未找到 Docker！请先在 NAS 应用商店安装 Docker 并启动服务${NC}" echo -e "${BLUE}💡 提示：飞牛 NAS 安装路径：应用商店 → 搜索 Docker → 安装并启动${NC}" exit 1 else echo -e "${GREEN}✅ 已找到 Docker${NC}" # 检查 Docker 服务是否运行 if ! systemctl is-active --quiet docker; then echo -e "${YELLOW}⚠️ Docker 服务未启动，正在尝试启动...${NC}" systemctl start docker sleep 3 if systemctl is-active --quiet docker; then echo -e "${GREEN}✅ Docker 服务启动成功${NC}" else echo -e "${RED}❌ Docker 服务启动失败，请手动在 NAS 后台启动${NC}" exit 1 fi fi fi } # 3. 检测并安装 Docker Compose（核心优化：适配新旧版） check_docker_compose() { echo -e "\n${BLUE}=== 开始检测 Docker Compose ===${NC}" # 步骤1：先检测新版 Docker Compose（插件形式：docker compose） if docker compose version &> /dev/null; then COMPOSE_CMD="docker compose" echo -e "${GREEN}✅ 检测到新版 Docker Compose（插件形式），使用命令：$COMPOSE_CMD${NC}" return # 检测到则直接返回，无需后续检查 fi # 步骤2：再检测旧版 Docker Compose（独立工具：docker-compose） if command -v docker-compose &> /dev/null; then COMPOSE_CMD="docker-compose" echo -e "${GREEN}✅ 检测到旧版 Docker Compose（独立工具），使用命令：$COMPOSE_CMD${NC}" return fi # 步骤3：若均未检测到，提供安装选项 echo -e "${RED}❌ 未找到 Docker Compose（无论是新版插件还是旧版工具）${NC}" echo -e "${BLUE}📌 请选择安装方式（根据你的 Docker 版本）：${NC}" echo -e " 1. 新版插件（推荐，适用于 Docker 20.10+，命令：docker compose）" echo -e " 2. 旧版工具（适用于 Docker 20.10 以下，命令：docker-compose）" read -p "输入安装方式编号（1/2，默认1）: " install_choice install_choice=${install_choice:-1} # 根据选择安装对应的 Compose if [ "$install_choice" = "1" ]; then echo -e "${YELLOW}📦 正在安装新版 Docker Compose 插件...${NC}" apt-get update > /dev/null 2>&1 apt-get install -y docker-compose-plugin > /dev/null 2>&1 # 验证安装 if docker compose version &> /dev/null; then COMPOSE_CMD="docker compose" echo -e "${GREEN}✅ 新版 Docker Compose 插件安装成功${NC}" else echo -e "${RED}❌ 安装失败，请手动执行：sudo apt-get install -y docker-compose-plugin${NC}" exit 1 fi else echo -e "${YELLOW}📦 正在安装旧版 Docker Compose 工具...${NC}" apt-get update > /dev/null 2>&1 apt-get install -y docker-compose > /dev/null 2>&1 # 验证安装 if command -v docker-compose &> /dev/null; then COMPOSE_CMD="docker-compose" echo -e "${GREEN}✅ 旧版 Docker Compose 工具安装成功${NC}" else echo -e "${RED}❌ 安装失败，请手动执行：sudo apt-get install -y docker-compose${NC}" exit 1 fi fi } # 4. 解压源码并进入目录 unzip_source() { echo -e "\n${BLUE}=== 开始处理源码文件 ===${NC}" # 查找当前目录下的 ZIP 源码包（仅取第一个） ZIP_FILE=$(find . -maxdepth 1 -type f -iname "*.zip" | head -n 1) if [ -z "$ZIP_FILE" ]; then echo -e "${RED}❌ 未在当前目录找到 ZIP 源码包${NC}" echo -e "${BLUE}💡 提示：请将 ai-goofish-monitor 的 ZIP 包与脚本放在同一目录${NC}" exit 1 fi echo -e "${GREEN}✅ 找到源码包：$ZIP_FILE${NC}" # 解压（-o 覆盖现有文件，-q 静默解压） echo -e "${YELLOW}📦 正在解压源码包...${NC}" unzip -o -q "$ZIP_FILE" if [ $? -ne 0 ]; then echo -e "${RED}❌ 源码包解压失败（可能是文件损坏）${NC}" exit 1 fi # 查找解压后的源码目录（匹配 ai-goofish-monitor-* 格式） SRC_DIR=$(find . -maxdepth 1 -type d -iname "$PROJECT_NAME-*" | head -n 1) if [ -z "$SRC_DIR" ]; then echo -e "${RED}❌ 未找到解压后的源码目录${NC}" exit 1 fi echo -e "${GREEN}✅ 找到源码目录：$SRC_DIR${NC}" # 进入源码目录（后续操作均在此目录执行） cd "$SRC_DIR" || { echo -e "${RED}❌ 无法进入源码目录：$SRC_DIR${NC}" exit 1 } echo -e "${BLUE}📂 已进入源码目录：$(pwd)${NC}" } # 5. 配置环境变量（.env 文件，含 AI 参数） config_env() { echo -e "\n${BLUE}=== 开始配置环境变量 ===${NC}" # 复制示例配置文件（若不存在则创建） if [ -f ".env.example" ]; then cp -n .env.example .env # -n 避免覆盖已存在的 .env echo -e "${GREEN}✅ 已生成 .env 配置文件（基于 .env.example）${NC}" else echo -e "${YELLOW}⚠️ 未找到 .env.example，将创建空的 .env 文件${NC}" touch .env fi # 配置 Web 登录账号密码 read -p "是否修改 Web 管理界面的账号密码？(y/n，默认n): " modify_auth modify_auth=${modify_auth:-n} if [ "$modify_auth" = "y" ]; then read -p "输入新用户名（默认：$DEFAULT_USER）: " new_user read -p "输入新密码（默认：$DEFAULT_PWD）: " new_pwd # 替换 .env 中的账号密码（若无则追加） new_user=${new_user:-$DEFAULT_USER} new_pwd=${new_pwd:-$DEFAULT_PWD} sed -i "/^WEB_USERNAME=/d" .env # 删除原有配置 sed -i "/^WEB_PASSWORD=/d" .env echo "WEB_USERNAME=$new_user" >> .env echo "WEB_PASSWORD=$new_pwd" >> .env echo -e "${GREEN}✅ 账号密码已更新：用户名=$new_user，密码=$new_pwd${NC}" else echo -e "${YELLOW}ℹ️ 保持默认账号密码：用户名=$DEFAULT_USER，密码=$DEFAULT_PWD（建议首次登录后修改）${NC}" fi # 配置 AI 相关环境变量（默认使用七牛云接口） echo -e "\n${BLUE}=== 开始配置 AI 模型参数（支持多模态） ===${NC}" echo -e "${YELLOW}💡 提示：默认使用七牛云 OpenAI 兼容接口（支持 Gemini 等模型），未注册可先通过[七牛云注册链接](https://s.qiniu.com/Z7V73a)完成注册${NC}" read -p "是否配置 AI 模型参数？(y/n，默认y): " config_ai config_ai=${config_ai:-y} # 默认为y，确保AI功能可正常使用 if [ "$config_ai" = "y" ]; then # 1. 配置 OPENAI_API_KEY（必填，需七牛云平台的 API Key） while true; do read -p "输入 AI 模型 API Key（七牛云平台获取，未注册可先通过链接注册：https://s.qiniu.com/Z7V73a）: " ai_api_key if [ -n "$ai_api_key" ]; then break # 输入非空则退出循环 else echo -e "${RED}❌ API Key 不能为空，请重新输入${NC}" fi done # 2. 配置 OPENAI_BASE_URL（默认七牛云地址，可自定义兼容接口） read -p "输入 AI 模型 API 接口地址（默认：$DEFAULT_OPENAI_BASE_URL）: " ai_base_url ai_base_url=${ai_base_url:-$DEFAULT_OPENAI_BASE_URL} # 为空则使用七牛云默认地址 # 3. 配置 OPENAI_MODEL_NAME（默认 gemini-2.5-pro，需与七牛云支持的模型匹配） read -p "输入 AI 模型名称（七牛云支持的多模态模型，默认：$DEFAULT_OPENAI_MODEL_NAME）: " ai_model_name ai_model_name=${ai_model_name:-$DEFAULT_OPENAI_MODEL_NAME} # 为空则使用默认模型 # 将 AI 参数写入 .env 文件（先删后加，避免重复） sed -i "/^OPENAI_API_KEY=/d" .env sed -i "/^OPENAI_BASE_URL=/d" .env sed -i "/^OPENAI_MODEL_NAME=/d" .env echo "OPENAI_API_KEY=$ai_api_key" >> .env echo "OPENAI_BASE_URL=$ai_base_url" >> .env echo "OPENAI_MODEL_NAME=$ai_model_name" >> .env echo -e "\n${GREEN}✅ AI 模型参数配置完成：${NC}" echo -e " - API Key：$ai_api_key（已脱敏存储）" echo -e " - API 地址：$ai_base_url（七牛云兼容接口）" echo -e " - 模型名称：$ai_model_name" else echo -e "${YELLOW}ℹ️ 未配置 AI 模型参数，后续需手动在 Web 界面「系统设置」→「AI 设置」中补充（七牛云 API Key 需从[七牛云注册链接](https://s.qiniu.com/Z7V73a)注册后获取）${NC}" fi } # 6. 配置端口（避免冲突） config_port() { echo -e "\n${BLUE}=== 开始配置服务端口 ===${NC}" # 询问是否修改端口 read -p "是否修改 Web 服务端口（默认：$DEFAULT_PORT）？(y/n，默认n): " change_port change_port=${change_port:-n} if [ "$change_port" = "y" ]; then # 循环验证端口有效性（1-65535，且为数字） while true; do read -p "输入新端口（1-65535）: " new_port if [[ "$new_port" =~ ^[0-9]+$ && "$new_port" -ge 1 && "$new_port" -le 65535 ]]; then DEFAULT_PORT="$new_port" break else echo -e "${RED}❌ 无效端口！请输入 1-65535 之间的数字${NC}" fi done echo -e "${GREEN}✅ 端口已设置为：$DEFAULT_PORT${NC}" else echo -e "${YELLOW}ℹ️ 保持默认端口：$DEFAULT_PORT（若端口冲突请重新运行脚本修改）${NC}" fi # 查找 docker-compose 文件（支持 yml/yaml 后缀） COMPOSE_FILE=$(find . -maxdepth 1 -type f \( -iname "docker-compose.yml" -o -iname "docker-compose.yaml" \) | head -n 1) if [ -z "$COMPOSE_FILE" ]; then echo -e "${RED}❌ 未找到 docker-compose.yml/yaml 文件${NC}" exit 1 fi echo -e "${GREEN}✅ 找到 Compose 配置文件：$COMPOSE_FILE${NC}" # 修改端口映射（替换 8000:8000 为 新端口:8000，保留备份 .bak） echo -e "${YELLOW}🔧 正在修改端口映射...${NC}" sed -i.bak "s/- \"8000:8000\"/- \"$DEFAULT_PORT:8000\"/" "$COMPOSE_FILE" if [ $? -eq 0 ]; then echo -e "${GREEN}✅ 端口映射已更新：$DEFAULT_PORT:8000${NC}" rm -f "${COMPOSE_FILE}.bak" # 删除备份文件（避免冗余） else echo -e "${RED}❌ 端口修改失败，请手动编辑 $COMPOSE_FILE 中的端口映射${NC}" exit 1 fi } # 7. 启动服务并输出结果 start_service() { echo -e "\n${BLUE}=== 开始启动服务 ===${NC}" # 启动 Docker 容器（-d 后台运行） echo -e "${YELLOW}🚀 正在启动 $PROJECT_NAME 服务...（可能需要 1-2 分钟）${NC}" $COMPOSE_CMD -f "$COMPOSE_FILE" up -d if [ $? -ne 0 ]; then echo -e "${RED}❌ 服务启动失败！请执行以下命令查看错误日志：${NC}" echo -e " cd $(pwd) && $COMPOSE_CMD -f $COMPOSE_FILE logs -f" exit 1 fi # 获取关键信息（NAS IP、登录账号、AI 配置） NAS_IP=$(hostname -I | awk '{print $1}') # 取第一个网卡的 IP WEB_USER=$(grep ^WEB_USERNAME= .env | cut -d= -f2) WEB_PASS=$(grep ^WEB_PASSWORD= .env | cut -d= -f2) AI_MODEL=$(grep ^OPENAI_MODEL_NAME= .env | cut -d= -f2) AI_BASE_URL=$(grep ^OPENAI_BASE_URL= .env | cut -d= -f2) # 输出最终结果（高亮关键信息） echo -e "\n${GREEN}=======================================${NC}" echo -e "${GREEN}✅ $PROJECT_NAME 部署完成！${NC}" echo -e "${GREEN}=======================================${NC}" echo -e "${BLUE}🌐 Web 管理界面：${NC} http://$NAS_IP:$DEFAULT_PORT" echo -e "${BLUE}👤 登录用户名：${NC} $WEB_USER" echo -e "${BLUE}🔑 登录密码：${NC} $WEB_PASS" echo -e "${BLUE}🤖 AI 配置：${NC} 模型=$AI_MODEL，接口=$AI_BASE_URL（API Key 从七牛云获取，未注册可通过[七牛云注册链接](https://s.qiniu.com/Z7V73a)注册）" echo -e "${YELLOW}💡 后续操作提示：${NC}" echo -e " 1. 访问 Web 界面后，先完成「闲鱼登录配置」（需扫码）" echo -e " 2. 若 AI 功能异常，检查七牛云 API Key 有效性及模型兼容性（未注册七牛云可先通过链接注册）" echo -e " 3. 创建监控任务时，用自然语言描述需求（如：95新索尼A7M4，预算1万-1.3万）" echo -e "${GREEN}=======================================${NC}" } # 主流程：按顺序执行所有步骤 main() { echo -e "${YELLOW}=== 欢迎使用 $PROJECT_NAME 一键部署脚本 ===${NC}" check_root "$@" # 1. 权限检查 check_basic_deps # 2. 基础依赖（unzip、docker） check_docker_compose # 3. Compose 检测与安装（核心优化） unzip_source # 4. 解压源码 config_env # 5. 配置账号密码 + AI 参数 config_port # 6. 配置端口 start_service # 7. 启动服务 } # 启动主流程 main "$@" 4. 执行部署 1. 进入部署目录通过 SSH 工具（如 PuTTY、FinalShell）连接飞牛 NAS，进入脚本所在的部署目录（例如）： cd /vol1/1000/docker/ai-goofish 2. 赋予脚本执行权限 chmod +x deploy.sh 3. 运行部署脚本 ./deploy.sh 4. 按提示完成配置脚本运行后，将按以下顺序引导配置，全程无需手动编辑文件：权限检查：询问是否切换到 root 用户（建议选“y”，避免权限问题）。依赖检查：自动检测并安装 unzip、Docker Compose（若缺失）。源码处理：自动解压 ZIP 包并进入源码目录。 Web 账号配置：询问是否修改默认账号密码（默认 admin/admin123，建议修改）。 AI 参数配置：提示默认使用七牛云接口，未注册七牛云可先通过七牛云注册链接完成注册。需输入从七牛云获取的 API Key（必填）。 API 接口地址默认 https://openai.qiniu.com/v1，直接回车保留默认。模型名称默认 gemini-2.5-pro，直接回车保留默认（需确保七牛云支持该模型）。端口配置：询问是否修改 Web 服务端口（默认 8000，若冲突可更换）。 5. 等待部署完成脚本自动启动 Docker 容器，约 1-2 分钟后，终端将输出 Web 界面访问地址、登录账号及 AI 配置信息，例如： ======================================= ✅ ai-goofish-monitor 部署完成！ ======================================= 🌐 Web 管理界面：http://192.168.1.100:8000 👤 登录用户名：admin 🔑 登录密码：admin123 🤖 AI 配置：模型=gemini-2.5-pro，接口=https://openai.qiniu.com/v1（API Key 从七牛云获取，未注册可通过[七牛云注册链接](https://s.qiniu.com/Z7V73a)注册） ======================================= 5. 访问与配置 1. 登录 Web 管理界面打开浏览器，输入终端输出的访问地址（如 http://192.168.1.100:8000）。输入配置的用户名和密码登录（默认 admin/admin123）。 2. 配置闲鱼登录（关键步骤）点击右上角「登录闲鱼账号」。按提示安装浏览器插件 Xianyu Login State Extractor。打开闲鱼官网（https://2.taobao.com），用手机闲鱼 APP 扫码登录。登录后点击插件图标，提取登录信息并复制，粘贴到 Web 界面保存。 3. 验证 AI 配置（可选）若在部署脚本中已配置 AI 参数，可进入「系统设置」→「AI 设置」，确认 API Key、接口地址、模型名称与脚本配置一致（API Key 需从七牛云获取，未注册可通过七牛云注册链接注册），点击「测试 AI 配置」验证连通性。 4. 创建监控任务点击「任务管理」→「创建新任务」。用自然语言描述需求（例如“95新索尼A7M4，预算1万-1.3万，快门数<5000”）。补充关键词、价格范围等参数（AI 会自动生成筛选标准），点击「创建」。回到任务列表，点击「启动」，工具开始 24 小时监控。 6. 常见问题排查 1. 端口冲突现象：部署后无法访问 Web 界面，或脚本提示“端口已被占用”。解决：重新运行脚本，在「端口配置」步骤修改为未占用的端口（如 8001），并在飞牛 NAS 防火墙设置中开放新端口。 2. AI 配置失败现象：测试 AI 配置时提示“连接失败”或“API Key 无效”。解决：检查是否已注册七牛云账号（未注册可通过七牛云注册链接完成注册）。确认七牛云 API Key 正确（需从七牛云控制台「AI 服务」→「OpenAI 兼容接口」中获取）。确认模型名称与七牛云支持的型号一致（可在七牛云官网查询支持的多模态模型列表）。检查 NAS 网络是否能访问七牛云接口（可通过 ping openai.qiniu.com 测试连通性）。 3. 容器启动失败现象：脚本提示“服务启动失败”，或执行 docker ps 看不到 ai-goofish-monitor 容器。解决：进入源码目录，执行以下命令查看错误日志： cd /vol1/1000/docker/ai-goofish/ai-goofish-monitor-xxx # 替换为实际源码目录 docker compose logs -f 根据日志提示修复问题（如依赖缺失、配置文件错误）。 4. 权限不足现象：执行脚本时提示“Permission denied”，或解压/启动容器失败。解决：运行脚本时选择切换到 root 用户，或在命令前加 sudo（如 sudo ./deploy.sh）。飞牛 NAS 切换 root 用户命令：sudo -i，输入当前用户密码后再执行脚本。 5. 更新项目步骤：从 GitHub 或夸克网盘获取最新源码包和部署脚本，上传到原部署目录，重复「执行部署」步骤（脚本会自动覆盖旧配置，保留 .env 文件中的账号和 AI 参数）。 7. 总结通过优化后的部署脚本，可在飞牛 NAS 上快速搭建 AI 闲鱼监控工具，核心优势包括：一键配置：无需手动编辑 .env 文件，脚本引导完成 Web 账号、AI 参数、端口的全部配置。默认适配：预置七牛云 OpenAI 兼容接口与 Gemini-2.5-Pro 模型，减少用户选型成本，未注册七牛云可通过七牛云注册链接快速注册。无人值守：部署后自动 24 小时运行，新商品符合条件时通过 Bark/企业微信实时通知，抢占“捡漏”先机。若从夸克网盘获取文件，可跳过“手动保存脚本”步骤，直接上传全套文件执行部署，进一步简化操作。