Node服务器编排工具

一个用于跨多项目编排Node.js开发服务器的CLI工具,提供统一的界面来启动、停止和监控后端、前端、数据库等基于Node.js的开发服务器。

  • by ShingWong
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 ShingWong/node-server-orchestrator

使用说明

节点服务器协调器

一个用于跨多个项目协调Node.js开发服务器的命令行工具。通过统一的界面,启动、停止和监控后端、前端、数据库以及其他基于Node.js的开发服务器。

🚀 功能特性

  • 多项目支持 - 管理不同项目中的服务器

  • 健康监测 - 实时状态检查与运行时间追踪

  • 错误处理 - 启动失败检测及清晰错误信息显示

  • 可扩展的 - 轻松配置新项目和服务器类型

  • 跨平台 - 兼容Windows、macOS和Linux系统

📋 可用命令

  • start <server-id> - 启动特定的项目服务器
  • stop <server-id> - 停止正在运行的服务器
  • status <server-id> - 获取包含运行时间的详细服务器状态
  • list - 列出所有已配置的服务器
  • start-all - 同时启动所有服务器
  • stop-all - 停止所有正在运行的服务器

🛠️ 安装

npm install -g node-server-orchestrator

或者直接使用:

npx node-server-orchestrator

⚙️ 配置

在(指定位置)创建一个配置文件 ~/.config/node-server-orchestrator/config.json:

{
  "projects": {
    "my-backend": {
      "name": "My Backend API",
      "type": "backend",
      "command": ["npm", "run", "dev"],
      "cwd": "/path/to/my-project",
      "port": 3000,
      "healthPath": "/health",
      "startupTimeout": 10000,
      "description": "My project backend server"
    },
    "my-frontend": {
      "name": "My Frontend App",
      "type": "frontend", 
      "command": ["npm", "start"],
      "cwd": "/path/to/my-project/frontend",
      "port": 3001,
      "healthPath": "/",
      "startupTimeout": 15000,
      "description": "My project frontend development server"
    }
  }
}

🔧 使用方法

CLI 使用方法

# List all available servers
node-server-orchestrator list

# Start a specific server
node-server-orchestrator start example-backend

# Stop a specific server  
node-server-orchestrator stop example-backend

# Check server status
node-server-orchestrator status example-backend

# Start all servers
node-server-orchestrator start-all

# Stop all servers
node-server-orchestrator stop-all

# Show help
node-server-orchestrator --help

示例工作流程

  1. 列出可用服务器:

    📋 Available Servers:
    My Backend API (my-backend) - My project backend server
    My Frontend App (my-frontend) - My project frontend development server
    
  2. 启动服务器:

    ✅ My Backend API started successfully
    📊 PID: 12345
    🌐 Port: 3000
    ⏰ Started: 2:30:45 PM
    
  3. 检查状态:

    🟢 My Backend API is running
    📊 PID: 12345
    🌐 Port: 3000
    ⏰ Started: 2:30:45 PM
    ⏱️  Uptime: 5m 23s
    

🎯 应用场景

开发工作流程

  • 用一条命令启动所有项目服务器
  • 在开发过程中监控服务器健康状况
  • 在更改时自动重启服务器

CI/CD 集成

  • 通过编程启动测试环境
  • 在部署前验证服务器健康状况
  • 管理多个微服务

🔌 API 参考

服务器配置

每种服务器配置均支持:

  • name易于人类阅读的服务器名称
  • type服务器类型(后端、前端、数据库等)
  • command启动服务器的命令数组
  • cwd服务器的工作目录
  • port健康检查的端口号
  • healthPath用于健康检查的HTTP路径
  • startupTimeout最大启动等待时间(毫秒)
  • description服务器描述

健康检查协议

当服务器在指定端口和健康检查路径上返回HTTP 200/304响应时,即被视为处于健康状态。

🔒 安全特性

该命令行界面(CLI)工具包含全面的安全措施:

输入验证

  • 服务器ID验证只允许使用字母数字字符、连字符和下划线
  • 命令白名单仅限预先批准的命令(npm, node, yarn, pnpm, bun) 可以被执行
  • 端口验证端口号必须在1-65535之间
  • 路径验证工作目录必须是绝对路径
  • 超时限制启动超时限制为最多60秒

命令注入防护

  • 外壳执行所有命令均以 shell: false 防止命令注入
  • 命令数组命令必须以数组形式提供,而非字符串

路径遍历防护

  • 配置路径净化防止 ../ 在配置文件中进行目录遍历
  • 绝对路径所有工作目录必须为绝对路径

错误信息保护

  • **错误净化(或错误处理/错误清理)**错误消息中已对敏感路径和IP地址进行了隐去处理
  • 信息有限错误信息仅提供必要信息

🚨 错误处理

MCP服务器为以下情况提供清晰的错误信息:

  • 端口冲突 - 当服务器已经在运行时
  • 创业失败 - 当服务器在超时时间内未能启动时
  • 进程崩溃 - 当受管理的进程意外终止时
  • 配置错误 - 无效的服务器配置

🤝 贡献(或“参与贡献”)

欢迎贡献!请随时提交拉取请求或针对错误和功能需求打开问题。

开发环境设置

git clone https://github.com/swong-fcsllc/node-server-orchestrator.git
cd node-server-orchestrator
npm install
npm run build
npm test

📄 许可证

MIT 许可证 - 详见 LICENSE 文件。