搭建 Minecraft 服务端环境(上):自动化脚本

前言

对于一些没有Java编程经验和Linux基础的人而言,可能搭建一个Minecraft服务端觉得稍有麻烦,甚至一个步骤一个步骤的记。
但其实完全没必要,因为这些步骤简而言之就是在有Java环境的系统上运行一个jar文件带几个参数而已。
所以如此简单的事情,如果一次次手动做就显得太麻烦了,不如做成一条命令即可完成的方式,省时省力。
下面,我教大家一个步骤一个步骤的写shell脚本来完成服务端环境的自动搭建。

获取

Minecraft Server其实就是一个jar文件,可以从官网下载,也可以第三方下载,只要是HTTP链接即可(最好是无验证和不会失效的地址)。

例如我习惯从这里下载,粘贴出下载地址:

https://launcher.mojang.com/mc/game/1.10.2/server/3d501b23df53c548254f5e3f66492d178a48db63/server.jar

下载

因为服务器一般是Linux,Linux平台有一些很方便的CLI工具。例如可以用wget下载文件。

假若我们把文件下载到 /data/minecraft,并且重命名为minecraft-server.jar

新建shell文件内容:

#!/usr/bin/env bash
wget -O /data/minecraft/minecraft-server.jar \
https://launcher.mojang.com/mc/game/1.10.2/server/3d501b23df53c548254f5e3f66492d178a48db63/server.jar

众所周知的,首次启动server会失败,所以需要经过下列步骤:

修改

直接启动:

java -jar minecraft-server.jar nogui

默认情况下失败:

You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

所以我们需要修改 eula.txt 文件,将 eula=false 改为 eula=true 。然后再启动。

在Linux上有一个工具 sed,可以一条命令替换文件文本内容。我们用命令行修改eula文件,则是:

sed -i "s/eula=false/eula=true/g" eula.txt

但是… 其实我们可以在首次启动之前创建这个eual文件,那么就简单多了:

echo eula=true > eula.txt

所以只需要下列简单的几条语句,就可以自动完成服务端程序的配置了:

# 1. 拉取server.jar文件
wget -O /data/minecraft/minecraft-server.jar \
https://launcher.mojang.com/mc/game/1.10.2/server/3d501b23df53c548254f5e3f66492d178a48db63/server.jar
# 2. 创建eula.txt
(cd /data/minecraft/ && echo eula=true > eula.txt)

完善

#!/usr/bin/env bash
# 声明变量
MC_HOME=/data/minecraft
# 是否存在 MC_HOME 目录,不存在则创建
if [ ! -e ${MC_HOME} ]; then mkdir -p ${MC_HOME};fi
# 是否存在wget,不存在则安装
if [ ! -e /usr/bin/wget ];then apt install wget -y;fi
# 下载1.10.2版本 server.jar 到 MC_HOME 目录下,重命名为 minecraft-server.jar
wget -O ${MC_HOME}/minecraft-server.jar \
https://launcher.mojang.com/mc/game/1.10.2/server/3d501b23df53c548254f5e3f66492d178a48db63/server.jar
# 创建eula文件
echo eula=true > ${MC_HOME}/eula.txt
# 创建启动脚本
tee ${MC_HOME}/startup.sh <<-'EOF'
#!/usr/bin/env bash
MC_HOME=/data/minecraft
(cd ${MC_HOME} && java -jar minecraft-server.jar nogui)
EOF
chmod +x ${MC_HOME}/startup.sh

启动

/data/minecraft/startup.sh

后续

这个脚本的主要作用是用来构建Docker镜像用的,会在下一篇讲解如何利用这个脚本构建一个自己的Docker Image for minectaft.
因为可以from带有Java环境基础镜像,所以这个脚本并没有配置Java环境。
如果不依赖Docker,那么需要在完整shell里面增加一条命令(自动化配置Java环境):

curl -sL http://shell.bluerain.io/java | bash -s /usr/local

最后

这就是自动化搭建MC服务端的过程,是不是很简单。
我把这个脚本上传到服务器上了,所以可以拉取这个Shell文件。
地址是:http://shell.bluerain.io/minecraft
可是呢,我想直接执行,懒得做这些步骤或者直接COPY和下载。那么,重点来了:

curl -sL http://shell.bluerain.io/minecraft | bash

试试看吧。