乐趣区

在Linux下搭建我的世界(Minecraft)服务器

最近薅了百度云双 12 的羊毛,1 核 2G 一年 150。突然想起以前大学整个宿舍通宵开黑挖泥土的岁月,所以刚好趁着这台服务器,打算自己搭建一个我的世界服务器,重温一下以前的感觉。
系统要求
google 到的 MC 系统要求:

1.CPU:双核
2. 内存:20-40 人 2GB,30-60 人 3GB,60+ 人 8GB

上面就是服务器端的需求,如果只是和小伙伴们一起玩,也并不需要多优秀的服务器。下面是我的配置:

1.CPU:单核
2. 内存:2G
3.Linux 系统:CentOS 7.3 x86_64

安装 Java
MC 是用 Java 写的(当然现在也有别的语言写的版本),由于服务器端的 MC 是一个 jar 包,我们在配置之后通过运行 jar 包来开启服务器端,同时我们在客户端上打开后通过 IP 地址即可搜索并进入服务器。所以我们首先要先安装 Java。通过下面的方法来安装:
yum install -y java-1.8.0-openjdk
下载 MC 服务器端
这里有一个要求,就是你和你的小伙伴要拥有同样版本的 MC。不同的版本对应着不同的服务器端,所以我们要下载正确的版本。如何看 MC 版本呢,一般进入游戏后,游戏左下角会有版本显示。知道了版本号,那么用命令就可以下载对应版本的服务器端了。需要根据版本号补全命令格式:
wget https://s3.amazonaws.com/Minecraft.Download/versions/< 你要下载的版本号 >/minecraft_server.< 你要下载的版本号 >.jar

例子:博主这边选择安装了比较稳定的 1.12 版本
wget https://s3.amazonaws.com/Minecraft.Download/versions/1.12/minecraft_server.1.12.jar
等下载提示结束后,minecraft_server.1.12.jar 就躺在当前目录了。
MC 服务器,启动!
我们就可以使用命令来运行 MC 服务器:
java -Xms[初始启动分配内存] -Xmx[最大分配内存] -jar [jar 包所在路径]/minecraft_server.[版本号].jar nogui
例子:
java -Xms256m -Xmx512m -jar /home/mc/minecraft_server.1.12.jar nogui
关于命令最后一个参数 nogui,是分开的单词 no gui,意思是不需要图形界面,这样会大大减小内存的使用,如果你的 Linux 是有图形界面的,就可以不打这个 nogui。
启动成功
上面的命令输入完成后,等待参数由 0% 一直到 100% 就启动完成啦!下面给出博主启动完成的后几行显示:
[05:58:08] [Server thread/INFO]: Loaded 488 advancements
[05:58:08] [Server thread/INFO]: Preparing start region for level 0
[05:58:09] [Server thread/INFO]: Preparing spawn area: 0%
[05:58:10] [Server thread/INFO]: Preparing spawn area: 41%
[05:58:11] [Server thread/INFO]: Preparing spawn area: 76%
[05:58:11] [Server thread/INFO]: Done (4.263s)! For help, type “help” or “?”
MC,Shell 脚本启动!
我们如果一直使用上面那一句启动的话是不是非常麻烦!每次都要复制粘贴,那么我们可以写一个简单的 Shell 脚本,放在 jar 包所在目录,每次启动的时候直接启动脚本就能进入游戏了。
vim start-game.sh
编辑内容如下:
#!/bin/sh

java -Xms256m -Xmx512m -jar /home/mc/minecraft_server.1.12.jar nogui
保存退出,每次启动游戏只需要运行下面命令即可:
bash start-game.sh
MC 服务器,关闭!
按 Ctrl + C 来停止当前服务器
MC 服务起最常见的启动失败
我们在第一次运行完 jar 包后,无论是否运行成功,都能发现当前目录下多出了一堆文件,运行失败的时候其实就是配置除了一点问题。我们在当前目录找一下文件:eula.txt
vim eula.txt
按 i 键进入编辑模式,找到如下一行把 false 改为 true
eula=false
保存退出

1. 按 esc

2. 输入 :wq

客户端连接 MC 服务器失败
上面都启动成功之后,就可以下载对应服务器版本的客户端。下载好后启动,点击多人游戏,添加服务器,服务器地址输入我们云服务器的公网 IP,就可连接上去愉快的玩耍了。但是这时候可能会发现就是怎么连接都失败,如果遇到这个情况,我们需要检查下服务器配置文件,先在 jar 包目录下找到文件 server.propertices 并编辑:
vim server.propertices
找到这一行
online-mode:true
将 true 改为 false,这是正版验证服务的设置关于 server.propertices 文件,这边就不多做介绍了,可通过下面的链接了解详情

服务器配置文件详细设置
我的世界 WiKi

保持服务会话
因为博主用的是云服务器,需要通过使用 ssh 工具来连接到服务器启动游戏服务,但是一般服务器和 ssh 工具都会有连接会话的超时设置,在一段时间没有在服务器上操作后,会自动断开 ssh 会话,这时这个会话中的任务就会被杀掉,那小伙伴们游戏玩着玩着就与服务器断开连接了。这个时候我们可以使用 Linux 上这个 GNU Screen 工具来解决上述问题
GNU Screen 是一款由 GNU 计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen 可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
安装 screen
yum install -y screen
语法:
screen -AmRvx -ls -wipe-h < 行数 >-s
参数说明

-A 将所有的视窗都调整为目前终端机的大小。
-d < 作业名称 > 将指定的 screen 作业离线。
-h < 行数 > 指定视窗的缓冲区行数。
-m 即使目前已在作业中的 screen 作业,仍强制建立新的 screen 作业。
-r < 作业名称 > 恢复离线的 screen 作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的 screen 作业。
-s 指定建立新视窗时,所要执行的 shell。
-S < 作业名称 > 指定 screen 作业的名称。
-v 显示版本信息。
-x 恢复之前离线的 screen 作业。
-ls 或 –list 显示目前所有的 screen 作业。
-wipe 检查目前所有的 screen 作业,并删除已经无法使用的 screen 作业。

常用 screen 参数

screen -S yourname -> 新建一个叫 yourname 的 session
screen -ls -> 列出当前所有的 session
screen -r yourname -> 回到 yourname 这个 session
screen -d yourname -> 远程 detach 某个 session
screen -d -r yourname -> 结束当前 session 并回到 yourname 这个 session

保持我们的 MC 服务会话
新建一个 screen 会话
screen -S mcs
当输入这个命令后,就会进入 mcs 会话,在当前会话下,输入上面的启动脚本命令,确认游戏正常启动后,就可以放着不管了,只要不是服务器挂掉了,服务就会一直运行着。

退出移动版