16 KiB
Server Manager
一个跨平台的服务器管理工具,支持 Windows 和 Linux 系统。
- Windows: 提供 PyQt6 可视化 GUI 界面
- Linux: 提供命令行工具,支持 screen/tmux 后台运行
功能特性
控制台
- 编译代码: 编译游戏服务器代码 (
rebar3 as game_server_dev compile) - 编译协议: 生成协议文件 (
rebar3 protobuf compile) - 编译Table: 生成数据表 (
rebar3 cache compile) - 编译Tbllog: 生成日志表 (
rebar3 tbllog compile) - 清理编译: 清理编译产物
- 运行服务器: 选择并运行服务器
- 快速启动: 快速启动服务器
- 连接节点: 远程连接服务器节点
- Windows 启动窗口: Windows 下可在工具设置中选择自动、
cmd、PowerShell或其他运行 EXE。
创建服务器
- 创建游戏服务器 (GameServer)
- 创建登录服务器 (LoginServer)
- 创建客户端服务器 (ClientServer)
- 创建中心服务器 (CenterServer)
- 创建跨服服务器 (CrossServer)
- 支持自定义数据库配置
- 支持自定义登录服务器配置
服务器管理
- 查看所有已创建的服务器列表
- 启动/快速启动服务器
- 停止服务器
- 远程连接服务器
- 删除服务器
打包与发版(维护者)
推荐流程:先打本地测试包验证,再正式发版。
scripts\package\pack_local_test.bat或python scripts/package/pack_local_test.py→ 产出build\output_local\ServerManager_Setup_LOCAL.exe(不覆盖正式build\output\)。- 本地安装测试通过后,再按 RELEASE.md 执行版本号与
scripts\package\pack_all.bat/scripts\package\release.bat发版。
rg.exe(可选但推荐):将 ripgrep 的 rg.exe 放在 resources\bin\rg.exe,执行 scripts\package\build.bat 时会自动复制进 src\dist\main\,安装后与 main.exe 同目录,日志检索与文件搜索可直接调用。
软件安装说明
Windows 安装包安装(推荐)
- 从
build\output目录获取安装包:ServerManager_Setup.exe - 双击运行安装程序,按向导完成安装
- 安装完成后可从开始菜单或桌面快捷方式启动 Server Manager
从源码运行(开发/便携使用)
Windows:
- 确保已安装 Python 3.8+ 和 Erlang/OTP
- 在
server_manager根目录安装依赖后直接运行:pip install -r requirements.txt scripts\run\run.bat gui
Linux:
- 确保已安装 Python 3.8+ 和 Erlang/OTP
- 在
server_manager根目录安装依赖后运行:pip install -r requirements.txt chmod +x scripts/run/run.sh ./scripts/run/run.sh list # 命令行 ./scripts/run/run.sh gui # 若有桌面环境可启动 GUI
说明:config 配置是各个项目的配置文件,放在各个项目的目录下。工具本身的配置见下方「配置说明」。
快速上手(Windows GUI)
Windows 下推荐直接使用图形界面,第一次使用按下面流程即可:
- 启动工具:
- 安装版:从开始菜单、桌面快捷方式,或安装目录下的
main.exe启动。 - 源码版:在项目根目录执行
scripts\run\run.bat gui,或设置PYTHONPATH=src后执行python -m entrypoints。
- 安装版:从开始菜单、桌面快捷方式,或安装目录下的
- 打开项目:
- 在欢迎页点击“打开项目”,或在菜单
文件 -> 打开项目中选择目录。 - 这里选择的是服务器项目根目录,例如
E:\game\server_root。 - 不要选择
run目录、config目录、.server_manager\config目录。
- 在欢迎页点击“打开项目”,或在菜单
- 首次打开项目时,工具会自动把安装目录(源码运行时为仓库
resources/config)里的模板复制到:<项目根目录>\.server_manager\config\
- 打开
工具设置页后,重点确认这 3 个路径:服务器根目录:项目根目录本身,例如E:\game\server_root运行目录:服务器实例目录,通常为<项目根目录>\runErlang 路径:Erlang/OTP 安装根目录,例如E:\app\erlang\Erlang_OTP_25
- 配置保存后即可开始使用各功能页:
控制台:编译代码、快速启动、连接节点、执行常用命令创建服务器:按模板创建 game/login/center/cross/client 等服务器服务器管理:查看本地/远程服务器、启动、停止、连接日志查看:检索和查看日志工具设置:维护路径、数据库、节点、Cookie、Erlang 等配置
Windows 启动窗口说明:可在
工具设置 -> 启动窗口配置选择自动、cmd、PowerShell或其他。自动模式仍会优先使用 Windows Terminal(wt.exe),未安装时回退到cmd。选择“其他”时只需要配置运行 EXE,工具会为每次启动生成具体的临时启动脚本;MobaXterm 会自动使用-newtab "sh <临时脚本>",脚本内切换到项目目录并启动 Windows PowerShell 执行真实服务器/连接命令。底层使用环境变量SERVER_MANAGER_TERMINAL与SERVER_MANAGER_TERMINAL_EXE。
选择项目目录的判断方法
如果你不确定“打开项目”该选哪一级目录,可以按下面规则判断:
- 正确的项目根目录通常是
run、config、rebar3等目录/文件所在的上一级目录。 - 工具打开成功后,会在该目录下生成或读取
.server_manager\config。 - 如果你选成了
run目录,后续“运行目录”会变成run\run,这是错误的。
安装依赖
Linux(命令行版本,无需 GUI 依赖)
命令行版本不需要额外依赖,只需 Python 3.8+
# 可选:如果需要 GUI
pip install PyQt6
Windows
pip install -r requirements.txt
或者直接安装:
pip install PyQt6
运行方式
打包后主程序直接命令行(Windows / Linux,推荐)
安装或本地打包后的 main.exe(Windows)、main(Linux) 与源码里的 entrypoints 统一入口一致:无参数启动 GUI;带任意参数则走命令行(list、create、start、--help 等)。
| 场景 | Windows | Linux |
|---|---|---|
| 图形界面 | main.exe |
./main |
| 命令行 | main.exe list |
./main list |
| 帮助 | main.exe --help |
./main --help |
- Windows:安装目录下的
main.exe,或执行scripts\package\build.bat后使用src\dist\main\main.exe。 - Linux:执行
scripts/package/build_linux.sh后使用src/dist/main/main;可将该路径加入PATH,或设置环境变量SERVER_MANAGER_MAIN指向该可执行文件。 scripts\run\run.bat/scripts/run/run.sh:若检测到同目录或src/dist/main/下的打包主程序,会自动用它执行(并附带脚本中的--root服务器根目录),与上面「直接调用」等价、只是多了根目录约定。
Linux 命令行(推荐)
# 赋予执行权限
chmod +x scripts/run/run.sh
# 显示帮助
./scripts/run/run.sh
# 列出所有服务器
./scripts/run/run.sh list
# 创建游戏服务器
./scripts/run/run.sh create --type game --id 1
# 启动服务器(当前窗口,默认)
./scripts/run/run.sh start --server ddxq_game_s1
# 启动服务器(后台运行,使用 screen/tmux)
./scripts/run/run.sh start --server ddxq_game_s1 --background
# 停止服务器
./scripts/run/run.sh stop --server ddxq_game_s1
# 连接到服务器
./scripts/run/run.sh connect --server ddxq_game_s1
# 编译代码
./scripts/run/run.sh compile
./scripts/run/run.sh compile --target proto
# 自动化/诊断命令
./scripts/run/run.sh info --json
./scripts/run/run.sh status --json
./scripts/run/run.sh config show --server ddxq_game_s1
./scripts/run/run.sh logs search ddxq_game_s1 error
./scripts/run/run.sh command start ddxq_game_s1
./scripts/run/run.sh doctor
或者直接使用新的 Python 模块入口:
PYTHONPATH=src python3 -m entrypoints.cli list
PYTHONPATH=src python3 -m entrypoints.cli create --type game --id 1
PYTHONPATH=src python3 -m entrypoints.cli start --server ddxq_game_s1
Linux GUI(需要桌面环境)
./scripts/run/run.sh gui
# 或
PYTHONPATH=src python3 -m entrypoints
Windows 命令行
:: 显示帮助
scripts\run\run.bat
:: 列出所有服务器
scripts\run\run.bat list
:: 创建游戏服务器
scripts\run\run.bat create --type game --id 1
:: 启动服务器(当前窗口,默认)
scripts\run\run.bat start --server ddxq_game_s1
:: 启动服务器(后台新窗口)
scripts\run\run.bat start --server ddxq_game_s1 --background
:: 启动 GUI 界面
scripts\run\run.bat gui
:: 自动化/诊断命令
scripts\run\run.bat info --json
scripts\run\run.bat status --json
scripts\run\run.bat config show --server ddxq_game_s1
scripts\run\run.bat logs search ddxq_game_s1 error
scripts\run\run.bat command start ddxq_game_s1
scripts\run\run.bat doctor
Windows GUI
在项目根目录运行 scripts\run\run.bat gui 或直接:
set PYTHONPATH=src
python -m entrypoints
MCP 服务
本项目内置 MCP stdio 服务,供支持 MCP 的大模型客户端直接调用服务器管理能力:
set PYTHONPATH=src
python -m entrypoints.cli --root E:\game\server_root mcp
客户端配置示例见 MCP.md。服务会暴露 server_manager_* 工具,包括服务器列表、状态检查、读取配置、创建服务器、启动/停止、重新生成配置、编译、搜索/读取日志。
打包成可执行文件
Windows:
scripts\package\build.bat # 标准打包,产出 src\dist\main\main.exe
scripts\package\build_portable.bat # 便携版打包
Linux:
chmod +x scripts/package/build_linux.sh
./scripts/package/build_linux.sh # 产出 src/dist/main/main
命令行工具参数
用法: python -m entrypoints.cli <命令> [参数]
命令:
list 列出所有服务器
create 创建服务器
start 启动服务器
stop 停止服务器
connect 连接到服务器
compile 编译代码
regen 重新生成 sys.config
info 显示项目路径、版本和工具信息
status 检查服务器节点在线状态
config 查看/修改项目或服务器配置
logs 列出、读取或检索服务器日志
command 只生成并打印启动/停止/连接命令
ids 查看已有服务器 ID 和下一个可用 ID
doctor 检查目录、配置模板和外部工具可用性
migrate 手动执行项目配置迁移
mcp 启动 MCP stdio 服务
create 参数:
--type, -t 服务器类型 (game/login/center/cross/client)
--id, -i 服务器ID
--prefix, -p 服务器前缀 (默认: ddxq)
--db-host 数据库地址
--db-port 数据库端口
--db-user 数据库用户
--db-pass 数据库密码
--tcp-port TCP端口
--http-port HTTP端口
--login-node 登录节点
--center-node 中心节点
--overwrite 覆盖已存在的服务器
start 参数:
--server, -s 服务器目录名
--quick, -q 快速启动(不使用 rebar3)
--background, -b 后台运行(打开新窗口)
stop 参数:
--server, -s 服务器名称
connect 参数:
--server, -s 服务器名称
--ip 目标IP
compile 参数:
--target, -t 编译目标 (all/code/proto/table/tbllog)
自动化输出:
--json 支持 list/info/status/config/logs/command/ids/doctor/migrate/regen --all
常用新增命令:
status [server ...] [--ip IP] [--strict]
config path|files|init|show|get|set|unset
logs list|read|search
command start|stop|connect
ids --type game|login|center|cross|client
regen --all
版本与自动更新(version.json)
用于自动更新检测的 version.json 需包含以下字段(客户端更新服务读取 download_url 作为安装包下载地址):
| 字段 | 说明 |
|---|---|
version |
当前发布版本号,如 "1.0.1" |
download_url |
安装包下载地址(见下方格式) |
full_installer_url |
完整安装包下载地址,建议与 download_url 保持一致 |
release_notes |
更新说明,支持 \n 换行 |
download_url 填写规则(走本项目后端下载接口):
- 格式:
http://<后端地址>:3000/api/download?path=server_manager/<路径>/<安装包文件名>.exe - 路径
path相对于本仓库的backend/storage目录。 - 安装包固定文件名为
ServerManager_Setup.exe(不带版本号),path 为:server_manager/build/output/ServerManager_Setup.exe。
示例:
- 本机/内网测试:
http://127.0.0.1:3000/api/download?path=server_manager/build/output/ServerManager_Setup.exe - 内网其他机器访问:
http://172.18.180.94:3000/api/download?path=server_manager/build/output/ServerManager_Setup.exe - 使用域名:
http://your-domain.com:3000/api/download?path=server_manager/build/output/ServerManager_Setup.exe
发布新版本时:打包会覆盖生成 ServerManager_Setup.exe → 修改 version.json 的 version、release_notes 即可;download_url / full_installer_url 始终指向 ServerManager_Setup.exe。
结构调整后的发布要求:
- 正式发布统一使用
server_manager/build/output/version.json和server_manager/build/output/ServerManager_Setup.exe。 - 本次目录结构和文件名变化较大,必须走完整安装包更新;不要给旧版本生成只替换
main.exe的增量补丁,否则旧安装目录里的依赖文件不会一起更新。 scripts\package\release.bat默认生成全量更新 manifest,产物只输出到build/output。
配置说明
- 打开项目时选择的目录:应当是服务器项目根目录,不是
run、config或.server_manager\config子目录。 - 项目级工具配置目录:
<项目根目录>\.server_manager\config\default.kv:默认配置模板,首次打开项目时自动复制到这里tool.config:工具保存的路径、数据库、节点、Erlang 等配置
- 运行目录:通常为
<项目根目录>\run,里面是各个服务器实例目录。 - 单服配置文件:通常位于
<运行目录>\<服务器目录>\config\kv.config。 - 模板来源:
- 安装版运行时:读取
main.exe同级的config\ - 源码运行时:读取仓库根目录的
resources\config\
- 安装版运行时:读取
首次运行时,程序会自动在当前项目下准备 .server_manager\config;如果自动创建失败,请先检查安装目录或仓库 resources\config 下是否存在完整模板,至少要包含 default.kv。
文件结构
tools/server_manager/
├── build/ # 打包产物:output、output_local
├── resources/ # version/config/icon/bin 等资源
├── scripts/ # 打包、更新、工具脚本
├── src/ # MVC 拆分后的源码
│ ├── controllers/
│ ├── entrypoints/
│ ├── mcp/
│ ├── models/
│ ├── services/
│ ├── util/
│ └── views/
├── requirements.txt
└── version.json
(README.md 位于仓库根目录。)
系统要求
Linux
- Python 3.8+
- Erlang/OTP
- (可选) screen 或 tmux(用于后台运行服务器)
Windows
- Windows 10/11
- Python 3.8+
- Erlang/OTP
- PyQt6(GUI 界面)
Linux 后台运行说明
在 Linux 下启动服务器时,工具会自动检测并使用以下方式:
-
screen(优先): 如果安装了 screen,会创建一个 screen 会话
# 查看会话 screen -ls # 连接会话 screen -r ddxq_game_s1 # 分离会话: Ctrl+A, D -
tmux: 如果没有 screen 但有 tmux
# 查看会话 tmux ls # 连接会话 tmux attach -t ddxq_game_s1 -
后台进程: 如果都没有,直接在后台启动
注意事项
- 首次使用请先确认配置文件中的目录路径正确
- 创建服务器前请确保数据库配置正确
- 远程连接需要服务器正在运行
- 删除服务器操作不可恢复,请谨慎操作
- Linux 下建议安装 screen 或 tmux 以便管理后台服务器
版本历史
- v1.1: 添加 Linux 命令行支持,跨平台兼容
- v1.0: 初始版本,Windows GUI 整合所有批处理脚本功能