--- front: hard: 入门 time: 60分钟 --- # 部署服务器 ## 准备阶段 在进行Java版网络游戏搭建和部署流程前,首先需要注册成为我的世界开发者,并完成入驻申请,申请开发阶段服务器。具体步骤,请详细阅读如下文档: 1. [开发准备阶段概述](../课程1:成为Apollo服主及相关准备/第2节:开发准备阶段概述.md) 2. [入驻申请](../课程1:成为Apollo服主及相关准备/第3节:入驻申请.md) 3. [申请开发阶段服务器](../课程1:成为Apollo服主及相关准备/第4节:申请开发阶段服务器.md) 4. [使用数据库前端连接数据库](../课程1:成为Apollo服主及相关准备/第5节(拓展):使用数据库前端连接数据库.md) 5. [连接开发机](../课程1:成为Apollo服主及相关准备/第5节:连接开发机.md) ## 特别提示 1. 拿到机器后,要先访问添加白名单,之后才可以正常登入 2. spigot机器的java环境对应的操作命令,分别是**java8**和**java18**,其中运行Spigot请使用java8(具体原因详见[常见问题合集](./90-常见问题合集.md)) ## JAVA服部署流程 - 在准备好开发机后,连接上开发机 - 通过服主各自的Java服框架,部署各自的Java服(必须存在BC服) - 经过初步的调研,确定目前使用的Spigot版本为1.12.2,因此为了兼容基岩版1.18客户端,需要在**Spigot服**使用**ViaVersion**插件 - 下载[**ViaVersion插件**](https://www.spigotmc.org/resources/viaversion.19254/),并放置于 **Spigot服目录/plugins/** 目录下。 **注:由于Viaversion转换1.20.5版本头颅(模型)会过滤掉非法昵称的信息,导致自定义方块和中文昵称的头颅(模型)出错,因此无法直接使用官网版本。可选择MCS内容库中的“ViaVersion-4.10.2”资源或自行修改。** - 下载[**SpigotMaster插件**](./99-下载内容.md#SpigotMaster插件),并放置于 **Spigot服目录/plugins/** 目录下。 - 下载[**BungeeMaster插件**](./99-下载内容.md#bungeemaster插件),并放置于 **BC服目录/plugins/** 目录下。 - 在 **BC服目录/plugins/** 下,新建文件夹 **BungeeMaster**,并在 **BungeeMaster** 文件夹下新建文件 **config.yml**(此为BungeeMaster插件配置) ![目录结构1](./res/bc01.png) ![目录结构2](./res/bc02.png) ![目录结构3](./res/bc03.png) - 然后填入如下内容,其中 - server_id 取值区间在[12000, 14000)内,并且保持单次部署唯一即可 - master_port端口范围要求[29000,31000) - **master_port**是指BC服监听Master服连接所用端口,请注意与下述用于原生游戏的**query_port**区分,以免造成端口冲突 - 填写完毕后,请记下相关参数,后面需要在studio中填写 ![config.yml](./res/bc04.png) - 打开**BC服目录/config.yml**文件(此为bc服配置),配置bc服监听的端口,端口范围要求[29000,31000) - 记下端口参数,后面需要在studio中填写 - 注意,此处的**query_port**和**host中冒号后面的端口值**,请保持一致 - 该处的端口,均为**BC服**用于监听来自**Geyser**服相关连接的端口 ![config.yml](./res/bc05.png) ## 负载/协议转换部分部署流程 - 打开MCStudio,选择基岩版服务器,并选择右上角新建选项,打开后,选择空白Spigot服 ![Studio部署流程](./res/studio1.png) - 选择更多后,点击服务器配置,开始配置 ![Studio部署配置](./res/studio2.png) - 其中,控制服的配置不再赘述,和基岩版网络服务器相似 - 代理服和协议服实际上是同一个进程,所以配置合在一起说明: - 每个proxy内部会启动一个geyser,因此只需要调整proxy的数量,不需要配置geyser的数量。 - proxy单进程内存:暂时未被使用 - geyser单服最大人数:建议为200~300人,正式上线后根据proxy与geyser进程的负载情况再进行调整。0表示无上限,但正式服强烈建议设置最大人数,避免整服卡死。 - geyser单进程内存:指geyser的java部分的最大可用堆内存。0表示使用默认值,开发与审核阶段默认为1G,正式阶段默认为6G。一般来说6G内存至少可以承载500人。 ![框架上半部分部署](./res/studio3.png) - BC服的配置则根据Java服部署中,BC服的数量和配置来决定。如,根据上个步骤截图数据,则最终配置为: ![框架上半部分部署](./res/studio4.png) - 如图所示,BC服端口即为**query_port** - 控制服端口即为**master_port** - 配置完成后,点击部署 - 查看日志,若部署成功,则可以通过工具箱打开ModPC开发包,进入游戏开始测试 ![框架上半部分部署](./res/studio5.png) ## 部署多个代理服与BC - 在代理服的配置界面填写数量即可部署多个代理服(协议服与代理服为一对一的关系,所以这个数量也是协议服的数量),点击增加代理服则可以在不同机器上部署代理服。 - 如果需要部署多个BC: 1. 在机器上部署好多个BC(可以分布在不同机器上),按上面的指引分别配置好server_id,master_port,query_port。注意这三个字段,不同bc之间不能有重复。 2. 在studio的BC服配置界面,点击增加BC服,然后填写每个BC的ip,server_id,master_port,query_port。 3. 重新部署,即可与多个BC组网,master会平均分配玩家到各个BC。 ## Proxy与Geyser服的性能参数 一个proxy可以支撑300个玩家的跑图及连续登录,并且维持流畅运行,此时geyser建议分配4G的内存上限,整个进程最多会占用5G内存,以及5个核心的cpu。 ## 常见部署问题合集 [常见部署问题合集](./90-常见问题合集.md)