批量发布部署工具——一键将应用部署到多台Linux服务器

前言

在日常开发中,我们经常需要将本地编译好的应用程序部署到多台远程Linux服务器上。手动逐台上传文件、执行重启命令不仅繁琐,还容易出错。今天分享一款批量发布工具,通过 SFTP 上传文件 + SSH 执行远程命令,实现一键将应用批量部署到多台服务器。

无论是 .NET API 后端服务Web 前端网页,还是 Docker 容器化应用,都可以通过配置不同的 PreCmd 和 Cmd 命令,轻松实现一键部署。

在这里插入图片描述


功能概述

  • JSON 配置驱动:通过 JSON 配置文件管理多台服务器信息,支持按项目独立配置
  • SFTP 文件上传:递归上传本地发布目录下的所有文件和子目录到远程服务器
  • SSH 远程命令:支持部署前(PreCmd)和部署后(Cmd)执行远程命令,如停止/启动服务
  • 多指令顺序执行:PreCmd 和 Cmd 支持英文分号 ; 分隔多条指令,按顺序执行,间隔3秒
  • 服务器启用/禁用:可在界面中勾选需要部署的服务器,支持全选/全取消
  • 实时日志输出:部署过程日志实时显示,便于排查问题
  • 路径记忆:自动记住上次使用的配置文件路径和程序目录路径

支持的部署场景

场景一:部署 .NET API 程序

将 .NET WebAPI 后端服务部署到Linux服务器,通过 systemctl 管理服务启停。

配置示例:

{
  "Name": "IOT物联网平台",
  "PulishFolder": "C:\\projects\\iot-api\\bin\\Release\\net8.0\\publish",
  "ServerInfos": [
    {
      "Name": "生产服务器A",
      "Enable": true,
      "Host": "10.0.0.101",
      "Port": 22,
      "Username": "deploy",
      "Password": "******",
      "RemotePath": "/opt/apps/iot-api/",
      "PreCmd": "systemctl stop iot-api",
      "Cmd": "systemctl start iot-api"
    }
  ]
}

部署流程:

  1. PreCmd 执行 systemctl stop iot-api,先停止正在运行的服务
  2. SFTP 将本地 publish 目录下的所有文件上传到远程服务器
  3. Cmd 执行 systemctl start iot-api,启动新版本服务

适用场景:所有通过 systemd 管理的 .NET API 服务,如物联网平台、用户中心、财务系统等后端接口服务。


场景二:部署 Web 前端网页

将 Vue/React 等前端项目打包后的静态文件部署到Nginx服务器。

配置示例:

{
  "Name": "管理平台前端",
  "PulishFolder": "D:\\projects\\admin-web\\dist",
  "ServerInfos": [
    {
      "Name": "前端服务器",
      "Enable": true,
      "Host": "10.0.0.102",
      "Port": 22,
      "Username": "deploy",
      "Password": "******",
      "RemotePath": "/var/www/admin-web/",
      "PreCmd": "",
      "Cmd": "nginx -s reload"
    }
  ]
}

部署流程:

  1. 无需 PreCmd,前端静态文件无需停止服务
  2. SFTP 将 dist 目录下的 HTML/CSS/JS 等文件上传到 Nginx 站点目录
  3. Cmd 执行 nginx -s reload,让 Nginx 重新加载最新文件

适用场景:Vue、React、Angular 等前端项目的打包部署,以及静态网站、H5活动页面等。


场景三:Docker 打包并运行

将应用打包为Docker镜像并运行容器,适合容器化部署场景。

配置示例:

{
  "Name": "消息队列服务",
  "PulishFolder": "C:\\projects\\mq-service\\bin\\Release\\net8.0\\publish",
  "ServerInfos": [
    {
      "Name": "容器服务器",
      "Enable": true,
      "Host": "10.0.0.103",
      "Port": 22,
      "Username": "deploy",
      "Password": "******",
      "RemotePath": "/opt/apps/mq-service/",
      "PreCmd": "docker stop mq-service; docker rm mq-service",
      "Cmd": "docker build -t mq-service .; docker run -d --name mq-service -p 5672:5672 mq-service"
    }
  ]
}

部署流程:

  1. PreCmd 依次执行:docker stop mq-service 停止容器 → docker rm mq-service 删除容器(分号分隔,间隔3秒)
  2. SFTP 将发布文件和 Dockerfile 上传到远程服务器
  3. Cmd 依次执行:docker build -t mq-service . 构建新镜像 → docker run -d --name mq-service -p 5672:5672 mq-service 启动新容器

适用场景:所有基于 Docker 容器化部署的应用,包括 .NET API、Java 服务、Node.js 应用等,只需在项目目录中放置 Dockerfile 即可。


使用流程

  1. 选择配置文件:点击"配置"输入框,选择对应项目的 JSON 配置文件
  2. 选择程序目录:点击"程序"输入框,选择本地发布目录(如 bin\Release\net8.0\publish 或前端 dist 目录)
  3. 加载配置:点击"加载"按钮,读取配置文件并在表格中显示服务器列表
  4. 勾选服务器:在表格中勾选需要部署的服务器(右键菜单支持全选/全取消)
  5. 一键发布:点击"发布"按钮,自动依次对每台服务器执行:PreCmd → SFTP上传 → Cmd
  6. 查看日志:切换到"日志"选项卡查看实时部署日志

完整发布流程

工具的完整发布流程如下:

遍历每台启用的服务器
  │
  ├─ 1. 执行 PreCmd(部署前命令)
  │     ├─ .NET API:systemctl stop xxx
  │     ├─ Web前端:无需操作
  │     └─ Docker:docker stop xxx; docker rm xxx
  │
  ├─ 2. SFTP 上传文件
  │     ├─ 递归遍历本地发布目录
  │     ├─ 自动创建远程目录结构
  │     └─ 逐文件上传到远程服务器
  │
  ├─ 3. 执行 Cmd(部署后命令)
  │     ├─ .NET API:systemctl start xxx
  │     ├─ Web前端:nginx -s reload
  │     └─ Docker:docker build ...; docker run ...
  │
  └─ 4. 记录耗时,继续下一台服务器

配置文件说明

每个项目对应一个 JSON 配置文件,核心字段说明:

字段 说明
Name 配置名称,用于标识项目
PulishFolder 本地发布目录路径
ServerInfos 服务器列表
└ Name 服务器名称
└ Enable 是否启用该服务器
└ Host / Port 服务器地址和SSH端口
└ Username / Password SSH登录凭据
└ RemotePath 远程部署路径
└ PreCmd 部署前命令,多条用 ; 分隔
└ Cmd 部署后命令,多条用 ; 分隔

PreCmd 在文件上传前执行(如停止服务/容器),Cmd 在文件上传后执行(如启动服务/构建镜像)。多条命令用英文分号 ; 分隔,会按顺序依次执行,间隔3秒,某条命令失败则终止后续执行。


总结

这个批量发布工具虽然轻量,但覆盖了日常开发中最常见的部署场景:

  • .NET API 服务:systemctl 管理启停,上传即部署
  • Web 前端项目:上传静态文件,reload Nginx 即生效
  • Docker 容器应用:停止旧容器 → 上传文件 → 构建镜像 → 启动新容器

通过灵活配置 PreCmd 和 Cmd,几乎可以适配任何部署方式。一个工具,覆盖多种场景,告别重复的手动部署操作。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐