Minecraft 服务器的多个 Java 版本

Minecraft 服务器的多个 Java 版本

我计划运行 2 个 Minecraft 服务器:

  1. 1.15.2 Vanilla(与 Java 11 运行良好)

  2. 1.10.2 修改版(无法向终端提供正确的版本)我已经安装了 Java8 和 Java11,但我不确定是否需要为 1.10.2 服务器运行 Java8 的命令。

(即“java -version“8” 无法像在旧版 Archlinux 上那样工作,不确定 Ubuntu 版本。)

答案1

这里有一种方法,使用 LXD 容器(这是我的做法)。这不是唯一的方法,对你最有效的方法可能与对我最有效的方法不同。我在这方面有一定的技能;如果要接触容器、网络、包管理和 systemd 的话,需要花几天时间学习。

容器使用内核功能,其行为与虚拟机 (VM) 非常相似 - 容器感觉就像一台单独的机器,但资源开销成本却出奇地低。您可以使用容器隔离不同版本的应用程序(如 Java),而不会影响主机系统,并托管不同的网络服务。容器不是真正的虚拟机,容器也不完美……但它们非常方便。

  1. 规划。您将需要大约 15GB (总计) 的空间用于容器。

  2. 安装并设置lxdsnap。非常好的教程和示例

  3. 创建一个测试容器。花几分钟练习启动和停止它、创建和销毁它、找出它的 IP 地址以及如何在容器内获取 shell 访问权限。还要弄清楚如何在主机启动时自动启动容器。

  4. 创建两个容器。获取每个容器内的 shell 访问权限。在每个容器中安装适当的 Java 和 Minecraft 服务器。根据您所需的 Java 版本,您的容器可能使用两个不同的Ubuntu 版本!安装包含您所需的正确 Java 版本的 Ubuntu 版本。不要安装最新的 Ubuntu,然后试图破坏系统以适应不同的 Java。不要从非 Ubuntu 源安装 Java。

  5. [可选] 编辑 LXD 网络配置文件以从路由器获取 IP 地址而不是主机内部 NAT。这意味着您只需进行一次端口转发(在路由器上),并使您的网络更简单。每个容器将有一个单独的 IP 地址。在路由器上为两个容器设置端口转发。

  6. 设置每个容器内的 systemd 服务启动和停止 minecraft 服务器。这将在容器启动(启动)时启动 minecraft 服务器,并在容器停止(关闭)时正常停止服务器。我更喜欢这种方式,而不是典型的screen黑客攻击。无论如何,所有 Minecraft 服务器输出都会被记录下来,因此您可以随时阅读。

  7. 最后,弄清楚你想如何备份你的 Minecraft 世界。你可以简单地将整个容器的副本导出到你的备份方案中(警告:这是大的)。或者你也可以使用lxc pull命令来获取所有数据所在的 /home/minecraft 目录。

笔记:很多人在第一次使用容器时都会犯错误。没关系。记下你做了什么以及为什么这样做,这样你就可以维护它、改进它,并在下次重新制作它。

这看起来似乎需要很多设置。但是,这样做有很多好处:每个 Minecraft 服务器都与主机系统和其他服务器完全隔离。不同的 IP 地址,不同的一切……但您可以轻松控制、监控和排除故障。此设置使用 Ubuntu 的内置功能:包管理、自动安全升级、systemd 控制和监控。

相关内容