Linux搭建 Minecraft 服务器[通俗易懂]

Linux搭建 Minecraft 服务器[通俗易懂]本篇文章介绍使用常规方式和docker容器方式在linux操作系统上搭建最新版本的minecraft服务器,并使用bungeecord配置为群组服务器模式。

大家好,欢迎来到IT知识分享网。

1、Minecraft简介

Minecraft《我的世界》是由 Mojang Studios 公司开发的一款生存沙盒游戏。

在这里插入图片描述

Minecraft 由瑞典视频游戏程序员和设计师 Markus Alexej Persson 使用Java编程语言创建。
在这里插入图片描述

Minecraft 于 2009 年 5 月首次公开,然后在 2011 年 11 月完全发布,Minecraft 此后已被移植到其他多个平台,并且成为有史以来最畅销的视频游戏。2014 年,Mojang 和 Minecraft 的知识产权被微软以25 亿美元的价格收购。

在《我的世界》中,玩家探索一个程序生成的块状 3D 世界,几乎无限的地形,并能够发现和开采原材料、制作工具和物品,并建造结构、土方工程和简单的机器。根据游戏模式,玩家可以与电脑控制的小怪战斗,以及与同一世界的其他玩家合作或竞争。

游戏模式包括玩家必须获取资源来建造世界并能够生存下去的生存模式,以及玩家拥有无限资源和飞行的创造模式。玩家可以修改游戏,以创造新的游戏机制、物品和资产。

游戏分为国际pe基岩版,以及官方正版pc版,常称java版,游戏的Java版以其强大的第三方拓展模组(Forge / Fabric / Liteloader mod)而知名,它们可以为游戏添加各种新的对象、角色和功能。

官方网站:https://minecraft.net

2、搭建环境选择

Minecraft 服务器端可以是 Windows 或 Linux,Windows 更适用于不熟悉Linux命令的服主,但自带图形窗口的windows对服务器cpu内存资源有一定消耗,因此对于资深的 linux 服务器玩家linux才是更好的选择。

下面准备一台linux服务器,配置2核CPU、8G内存,发行版本选择Ubuntu、Debain、CentOS等,推荐使用Ubuntu Server,如果需要通过互联网访问还需要购买1个公网IP地址,推荐按量付费宽带,可根据需要购买一个域名,绑定到公网IP。

关于云服务器,可选国内三大云厂商阿里云腾讯云华为云,不过价格过于昂贵,性能要求不高可以购买他们的轻量应用服务器类型,其他VPS云厂商也数不胜数,比如淘宝搜索Minecraft服务器,购买面板服,如果只是本地测试则更简单,可以使用 VMware WorkstationVirtualbox 创建虚拟机。

本篇文章介绍在Linux系统上搭建Minecraft服务端,以及如何使用bungeecord配置为群组模式,本文采用传统的应用部署方式,方便熟悉minecraft服务器端的部署原理和流程,但当前 docker 容器技术大行其道,更推荐使用 docker,能够仅用一条命令几分钟搭建起一个服务端。

docker容器方式搭建请移步:https://blog.csdn.net/networken/article/details/84945172

3、服务器基本配置

服务器准备就绪后,执行以下操作,做一些初始化配置,操作系统版本:Ubuntu Server 22.04 LTS

1、首先需要使用SSH工具连接到服务器,下载ssh连接工具 tabbyxshell ,以xshell为例,勾选两者,下载安装Xshell和Xftp。

在这里插入图片描述

新建ssh连接,输入服务器IP地址,点击连接输入用户名及密码,登录到命令行界面:

在这里插入图片描述

2、修改服务器主机名,执行exit命令退出重新连接使配置生效

root@ubuntu:~# hostnamectl set-hostname mcserver

IT知识分享网

在这里插入图片描述
3、minecraft服务端依赖java环境,安装java环境,以openjdk为例:

IT知识分享网sudo apt update -y
sudo apt install -y openjdk-17-jdk

确认安装成功

mc@mcserver:~$ java --version
openjdk 17.0.3 2022-04-19
OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1)
OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)

4、搭建单个服务端

1、创建服务端安装目录

IT知识分享网root@mcserver:~# mkdir -p /opt/minecraft/{jars,instances}

2、下载服务端jar包,下载地址:https://mcversions.net/,选择STABLE RELEASE稳定正式版本,以1.19为例:

在这里插入图片描述

下载后使用 xftp 或 winscp 工具上传到服务器/opt/minecraft/jars目录下。

root@mcserver:~# ls /opt/minecraft/jars/
server.jar

3、创建minecraft服务启动文件,复制粘贴以下内容到命令行

mkdir -p /opt/minecraft/instances/survival

cat >/lib/systemd/system/minecraft-survival.service<<'EOF' [Unit] Description=Minecraft Server Wants=network.target After=network.target [Service] Type=simple WorkingDirectory=/opt/minecraft/instances/survival ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar /opt/minecraft/jars/server.jar nogui RestartSec=30 Restart=on-failure KillMode=process KillSignal=SIGINT SuccessExitStatus=130 StandardInput=null [Install] WantedBy=default.target EOF

4、执行以下命令启动minecraft服务端

echo "eula=true" > /opt/minecraft/instances/survival/eula.txt

systemctl enable minecraft-survival.service

systemctl start minecraft-survival.service

查看服务运行状态,等待服务端完全启动

root@mcserver:~# systemctl status minecraft-survival.service 
● minecraft-survival.service - Minecraft Server
     Loaded: loaded (/lib/systemd/system/minecraft-survival.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-08-04 23:07:02 CST; 1min 33s ago
   Main PID: 4521 (java)
      Tasks: 31 (limit: 4538)
     Memory: 2.8G
        CPU: 2min 12.737s
     CGroup: /system.slice/minecraft-survival.service
             └─4521 /usr/bin/java -Xms2G -Xmx4G -jar /opt/minecraft/jars/server.jar nogui

Aug 04 23:08:28 mcserver java[4521]: [23:08:28] [Worker-Main-1/INFO]: Preparing spawn area: 42%
Aug 04 23:08:29 mcserver java[4521]: [23:08:29] [Worker-Main-1/INFO]: Preparing spawn area: 54%
Aug 04 23:08:29 mcserver java[4521]: [23:08:29] [Worker-Main-1/INFO]: Preparing spawn area: 54%
Aug 04 23:08:29 mcserver java[4521]: [23:08:29] [Worker-Main-1/INFO]: Preparing spawn area: 54%
Aug 04 23:08:30 mcserver java[4521]: [23:08:30] [Worker-Main-1/INFO]: Preparing spawn area: 68%
Aug 04 23:08:31 mcserver java[4521]: [23:08:31] [Worker-Main-1/INFO]: Preparing spawn area: 78%
Aug 04 23:08:31 mcserver java[4521]: [23:08:31] [Worker-Main-1/INFO]: Preparing spawn area: 78%
Aug 04 23:08:31 mcserver java[4521]: [23:08:31] [Worker-Main-1/INFO]: Preparing spawn area: 78%
Aug 04 23:08:34 mcserver java[4521]: [23:08:34] [Server thread/INFO]: Time elapsed: 61824 ms
Aug 04 23:08:34 mcserver java[4521]: [23:08:34] [Server thread/INFO]: Done (80.392s)! For help, type "help"

5、管理服务启停命令

# 启动服务端
systemctl start minecraft-survival

# 停止服务端
systemctl stop minecraft-survival

# 重启服务端
systemctl restart minecraft-survival

# 查看服务运行状态
systemctl status minecraft-survival

# 查看服务启动日志
journalctl -xe

5、客户端登录server端

官方客户端下载地址:https://minecraft.net/zh-hans/download/

这里选择使用第三方客户端HMCL,下载地址:https://hmcl.huangyuhui.net/

本地选择一个目录解压安装即可,安装完成以后需要执行两个操作:添加游戏账户、下载游戏版本。

在这里插入图片描述

1、点击添加账户,如果已购买游戏选择微软账户或Mojang账户,否则选择离线模式

在这里插入图片描述
这里采用离线模式,添加一个本地用户,用户名自定义,在高级设置中可以查看到默认生成的UUID:

在这里插入图片描述

注意,采用离线模式,需要修改服务端配置文件,关闭online-mode,找到以下选项改为false

root@mcserver:~# vim /opt/minecraft/instances/survival/server.properties 
...
online-mode=false
...

重启服务端使配置生效

systemctl restart minecraft-survival

2、返回客户端首页,点击下载,点击一个游戏版本进行安装,与服务端版本一致

在这里插入图片描述
3、账号和游戏版本准备好后,返回客户端首页,点击启动游戏

在这里插入图片描述
选择多人游戏

在这里插入图片描述
点击添加服务器

在这里插入图片描述
输入服务器名称和服务器地址,名称可自定义,服务器地址可以是公网IP地址或域名:
在这里插入图片描述
完成后可以看到已成功添加服务器
在这里插入图片描述

点击列表成功登入服务器,执行/list命令可以显示在线的玩家
在这里插入图片描述
查看服务器后端日志,有 steve 用户登录记录

root@mcserver:~# journalctl -f
Jun 09 21:19:44 mcserver java[5581]: [21:19:44] [Worker-Main-1/INFO]: Preparing spawn area: 4%
Jun 09 21:19:45 mcserver java[5581]: [21:19:45] [Server thread/INFO]: Time elapsed: 7130 ms
Jun 09 21:19:45 mcserver java[5581]: [21:19:45] [Server thread/INFO]: Done (20.208s)! For help, type "help"
Jun 09 21:20:45 mcserver java[5581]: [21:20:45] [Server thread/INFO]: steve[/192.168.93.229:10391] logged in with entity id 110 at (-28.5, 70.0, -29.5)
Jun 09 21:20:45 mcserver java[5581]: [21:20:45] [Server thread/INFO]: steve joined the game
Jun 09 21:20:51 mcserver java[5581]: [21:20:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2017ms or 40 ticks behind
Jun 09 21:21:54 mcserver java[5581]: [21:21:54] [Server thread/INFO]: steve lost connection: Disconnected
Jun 09 21:21:54 mcserver java[5581]: [21:21:54] [Server thread/INFO]: steve left the game
Jun 09 21:44:37 mcserver java[5581]: [21:44:37] [Server thread/INFO]: steve[/192.168.93.229:6745] logged in with entity id 410 at (-34.35809642546795, 63.0, -0.6483614176174147)
Jun 09 21:44:37 mcserver java[5581]: [21:44:37] [Server thread/INFO]: steve joined the game

6、配置ops权限

可以通过修改ops.json文件为用户添加ops权限,添加前需要获取用户名称及UUID,在线用户可以通过https://namemc.com/这个网站查看某个用户的UUID,离线模式可以在创建用户时高级模式中查看,或在服务端 usercache.json 文件中查看已登录到服务器的用户UUID

1、服务端查看离线用户的UUID

root@mcserver:~# cat /opt/minecraft/instances/survival/usercache.json 
[{ 
   "name":"steve","uuid":"53909932-f794-33c0-9329-948045a4c1ce","expiresOn":"2022-07-09 21:44:37 +0800"}]

2、配置 ops.json 文件,将用户steve设为op

root@mcserver:~# vim /opt/minecraft/instances/survival/ops.json 
[
  { 
   
    "uuid": "53909932-f794-33c0-9329-948045a4c1ce",
    "name": "steve",
    "level": 4
  }
]

重启服务端使配置生效

systemctl --user restart minecraft-survival

重新使用客户端登录,执行/op steve提示该steve用户已经是管理员,如果需要取消管理员权限执行/deop steve命令:
在这里插入图片描述

op具有很高权限,比如可以修改游戏模式为创造模式,可以使用任何方块和飞行等等:

/gamemode creative

双击空格我们的steve就可以起飞了:
在这里插入图片描述

7、搭建群组服务器

前置要求:单台服务器运行多个服务端,需要调整机器配置,建议至少2核CPU、8G内存,否则很可能因为资源不足导致服务器启动失败。

下面我们使用bungeecord代理软件搭建由多个服务端组成的群组服务器,这里仅仅进行测试,BC代理软件和所有子服全部运行在一台服务器上。

其架构原理如下图所示:
在这里插入图片描述

1、目前已经创建了生存服,在创建一个lobby登录服

创建服务启动文件

mkdir -p /opt/minecraft/instances/lobby

cat >/lib/systemd/system/minecraft-lobby.service<<'EOF' [Unit] Description=Minecraft Server Wants=network.target After=network.target [Service] Type=simple WorkingDirectory=/opt/minecraft/instances/lobby ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar /opt/minecraft/jars/server.jar nogui RestartSec=30 Restart=on-failure KillMode=process KillSignal=SIGINT SuccessExitStatus=130 StandardInput=null [Install] WantedBy=default.target EOF

尝试首次启动服务

echo "eula=true" > /opt/minecraft/instances/lobby/eula.txt
systemctl enable minecraft-lobby
systemctl start minecraft-lobby

由于在同一台服务器启动多个服务端,使用journalctl -xe命令查看日志,提示默认端口25565已被占用导致启动失败,需要修改lobby服务端端口号,修改以下两项:

root@mcserver:~# vim /opt/minecraft/instances/lobby/server.properties
...
online-mode=false
...
server-port=25566
...

重新启动lobby服务端

systemctl restart minecraft-lobby

等待服务端完全启动

root@mcserver:~# systemctl status minecraft-lobby.service 
● minecraft-lobby.service - Minecraft Server
     Loaded: loaded (/lib/systemd/system/minecraft-lobby.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-08-04 23:20:21 CST; 3min 45s ago
   Main PID: 5103 (java)
      Tasks: 31 (limit: 4538)
     Memory: 2.2G
        CPU: 2min 38.201s
     CGroup: /system.slice/minecraft-lobby.service
             └─5103 /usr/bin/java -Xms2G -Xmx4G -jar /opt/minecraft/jars/server.jar nogui

Aug 04 23:22:12 mcserver java[5103]: [23:22:12] [Worker-Main-6/INFO]: Preparing spawn area: 95%
Aug 04 23:22:13 mcserver java[5103]: [23:22:13] [Worker-Main-6/INFO]: Preparing spawn area: 95%
Aug 04 23:22:13 mcserver java[5103]: [23:22:13] [Worker-Main-6/INFO]: Preparing spawn area: 95%
Aug 04 23:22:14 mcserver java[5103]: [23:22:14] [Worker-Main-6/INFO]: Preparing spawn area: 96%
Aug 04 23:22:14 mcserver java[5103]: [23:22:14] [Worker-Main-6/INFO]: Preparing spawn area: 96%
Aug 04 23:22:15 mcserver java[5103]: [23:22:15] [Worker-Main-6/INFO]: Preparing spawn area: 96%
Aug 04 23:22:15 mcserver java[5103]: [23:22:15] [Worker-Main-6/INFO]: Preparing spawn area: 97%
Aug 04 23:22:16 mcserver java[5103]: [23:22:16] [Worker-Main-6/INFO]: Preparing spawn area: 98%
Aug 04 23:22:20 mcserver java[5103]: [23:22:20] [Server thread/INFO]: Time elapsed: 88438 ms
Aug 04 23:22:20 mcserver java[5103]: [23:22:20] [Server thread/INFO]: Done (107.973s)! For help, type "help"

客户端添加服务器登录验证,非默认端口时需要添加端口号
在这里插入图片描述

2、下载bungeecord jar包到本地,bungeecord代理端下载地址:https://ci.md-5.net/job/BungeeCord/

点击右侧BungeeCored.jar,下载并上传到服务器
在这里插入图片描述
上传到linux对应目录下:

root@mcserver:~# ls /opt/minecraft/jars/
BungeeCord.jar  server.jar

3、创建BungeeCord服务启动文件,复制粘贴以下内容到命令行

mkdir -p /opt/minecraft/instances/bungeecord

cat >/lib/systemd/system/minecraft-bungeecord.service<<'EOF' [Unit] Description=Minecraft Server Wants=network.target After=network.target [Service] Type=simple WorkingDirectory=/opt/minecraft/instances/bungeecord ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar /opt/minecraft/jars/BungeeCord.jar nogui RestartSec=30 Restart=on-failure KillMode=process KillSignal=SIGINT SuccessExitStatus=130 StandardInput=null [Install] WantedBy=default.target EOF

4、启动BungeeCord服务端

systemctl enable minecraft-bungeecord.service
systemctl start minecraft-bungeecord.service

查看服务运行状态,等待服务端完全启动

root@mcserver:~# systemctl status minecraft-bungeecord.service 
● minecraft-bungeecord.service - Minecraft Server
     Loaded: loaded (/lib/systemd/system/minecraft-bungeecord.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-08-04 23:34:23 CST; 11s ago
   Main PID: 5300 (java)
      Tasks: 26 (limit: 4538)
     Memory: 154.5M
        CPU: 3.643s
     CGroup: /system.slice/minecraft-bungeecord.service
             └─5300 /usr/bin/java -Xms2G -Xmx4G -jar /opt/minecraft/jars/BungeeCord.jar nogui

Aug 04 23:34:31 mcserver java[5300]: [104B blob data]
Aug 04 23:34:31 mcserver java[5300]: [104B blob data]
Aug 04 23:34:31 mcserver java[5300]: [57B blob data]
Aug 04 23:34:31 mcserver java[5300]: [117B blob data]
Aug 04 23:34:31 mcserver java[5300]: [105B blob data]
Aug 04 23:34:31 mcserver java[5300]: [109B blob data]
Aug 04 23:34:31 mcserver java[5300]: [107B blob data]
Aug 04 23:34:31 mcserver java[5300]: [105B blob data]
Aug 04 23:34:31 mcserver java[5300]: [105B blob data]
Aug 04 23:34:31 mcserver java[5300]: [44B blob data]

5、修改BungeeCord配置文件,改动配置项如下,其他默认即可:

root@mcserver:~# vim /opt/minecraft/instances/bungeecord/config.yml 
listeners:
......
online_mode: false
......
servers:
  lobby:
    motd: '&1Just another BungeeCord - Forced Host'
    address: localhost:25566
    restricted: false
  survival:
    motd: '&1Just another BungeeCord - Forced Host'
    address: localhost:25565
    restricted: false

重新启动服务

systemctl restart minecraft-bungeecord

6、客户端添加服务器验证
在这里插入图片描述

登录后执行/server命令,将提示你当前所在的服务器,执行/server survival将切换到survival服务器

在这里插入图片描述

查看此时的数据目录结构:

root@mcserver:~# sudo apt install -y tree

root@mcserver:~# tree -L 3 /opt/minecraft/
/opt/minecraft/
├── instances
│   ├── bungeecord
│   │   ├── config.yml
│   │   ├── locations.yml
│   │   ├── modules
│   │   ├── modules.yml
│   │   ├── plugins
│   │   ├── proxy.log.0
│   │   └── proxy.log.0.lck
│   ├── lobby
│   │   ├── banned-ips.json
│   │   ├── banned-players.json
│   │   ├── crash-reports
│   │   ├── eula.txt
│   │   ├── libraries
│   │   ├── logs
│   │   ├── ops.json
│   │   ├── server.properties
│   │   ├── usercache.json
│   │   ├── versions
│   │   ├── whitelist.json
│   │   └── world
│   └── survival
│       ├── banned-ips.json
│       ├── banned-players.json
│       ├── eula.txt
│       ├── libraries
│       ├── logs
│       ├── ops.json
│       ├── server.properties
│       ├── usercache.json
│       ├── versions
│       ├── whitelist.json
│       └── world
└── jars
    ├── BungeeCord.jar
    └── server.jar

16 directories, 21 files

查看当前服务器列表
在这里插入图片描述
以上就是单个服务器及群组服务器的基本搭建方法,在实际搭建时仍有很多参数和配置需要调整,以及不计其数的插件集成。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11287.html

(0)
上一篇 2023-02-24 17:00
下一篇 2023-02-27 20:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信