myfreax

如何在CentOS 7上安装Minecraft服务器

《我的世界》是有史以来最受欢迎的游戏之一。这是一款关于放置方块并进行冒险的沙盒视频游戏

8 min read
By myfreax
如何在CentOS 7上安装Minecraft服务器

《我的世界》是有史以来最受欢迎的游戏之一。这是一款关于放置方块并进行冒险的沙盒视频游戏。

在本教程中,我们将介绍如何在CentOS 7上安装和配置Minecraft Server的必要步骤。我们将使用Systemd运行Minecraft服务器,并使用mcrcon程序连接到一个正在运行的实例。我们还将向您展示如何使用Cron作业安排自动服务器备份。

先决条件

您已登录的用户必须具有sudo权限或者使用root用户,才能安装软件包。首先安装构建mcrcon工具所需的开发者软件工具:

sudo yum install git
sudo yum group install "Development Tools"

安装Java运行时环境

Minecraft需要Java 8或更高版本。由于Minecraft服务器不需要图形用户界面,因此我们将安装无头版本的openjdk。该版本具有更少的依赖关系并且使用更少的系统资源,因此更适合服务器应用程序。

Java的安装非常简单,只需运行以下命令即可:

sudo yum install java-1.8.0-openjdk-headless

通过打印Java版本来验证安装:

java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

创建Minecraft用户

出于安全原因,不建议以root身份运行Minecraft服务。我们将创建一个新的系统用户,并设置/opt/minecraft目录作为Minecraft的家目录,以minecraft用户运行Minecraft服务器:

sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft

我们不会为此用户设置密码。这是一种很好的安全做法,因为该用户将无法通过SSH登录。要更改为minecraft用户,您需要以root用户或具有sudo权限的用户身份登录服务器。

在CentOS上安装Minecraft

在开始安装过程之前,请确保切换到minecraft用户

sudo su - minecraft

使用以下命令在用户家目录中创建三个新目录:

mkdir -p ~/{backups,tools,server}

backups目录将存储您的服务器备份。您以后可以将此目录同步到远程备份服务器。tools目录将存储mcrcon客户端和备份脚本。server目录将包含Minecraft服务器及其数据。

下载并编译mcrcon

RCON是一个协议允许您连接到Minecraft服务器并执行命令。mcron是C语言构建的RCON客户端。我们将从GitHub下载源码并构建mcrcon二进制文件。首先使用cd命令切换~/tools目录,然后使用以下命令从GitHub克隆Tiiffi/mcrcon仓库:

cd ~/tools && git clone https://github.com/Tiiffi/mcrcon.git

克隆仓库后,请导航到~/tools/mcrcon目录,使用GCC编译器构建mcrcon客户端:

gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c

完成后,输入以下内容进行测试:

./mcrcon -h

输出看起来像这样:

Usage: mcrcon [OPTIONS]... [COMMANDS]...
Sends rcon commands to Minecraft server.

Option:
  -h		Print usage
  -H		Server address
  -P		Port (default is 25575)
  -p		Rcon password
  -t		Interactive terminal mode
  -s		Silent mode (do not print received packets)
  -c		Disable colors
  -r		Output raw packets (debugging and custom handling)
  -v		Output version information

Server address, port and password can be set using following environment variables:
  MCRCON_HOST
  MCRCON_PORT
  MCRCON_PASS

Command-line options will override environment variables.
Rcon commands with arguments must be enclosed in quotes.

Example:
	mcrcon -H my.minecraft.server -p password "say Server is restarting!" save-all stop

mcrcon 0.6.1 (built: May 19 2019 23:39:16)
Report bugs to tiiffi_at_gmail_dot_com or https://github.com/Tiiffi/mcrcon/issues/

下载Minecraft服务器

有多个Minecraft服务器模块,例如CraftbukkitSpigot,可让您在服务器上添加功能插件,并进一步自定义和调整服务器设置。在本教程中,我们将安装最新的Mojang官方Minecraft服务器。

最新的Minecraft服务器的Java JAR存档文件可从Minecraft下载页面下载。在撰写本文时,最新版本为1.14.1。在继续下一步之前,您应该检查下载页面是否有新版本。

运行以下wget命令,将Minecraft jar文件下载到~/server目录中:

wget https://launcher.mojang.com/v1/objects/ed76d597a44c5266be2a7fcd77a8270f1f0bc118/server.jar -P ~/server

配置Minecraft服务器

使用cd命令导航到~/server目录并启动Minecraft服务器:

cd ~/server
java -Xmx1024M -Xms512M -jar server.jar nogui

首次启动服务器时,它会执行一些操作并创建server.propertieseula.txt文件并停止。

[14:33:44] [main/ERROR]: Failed to load properties from file: server.properties
[14:33:45] [main/WARN]: Failed to load eula.txt
[14:33:45] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

您需要同意Minecraft EULA才能运行服务器。使用你喜欢的编辑器打开eula.txt文件。我们使用vim,然后将eula=false更改为eula=true

vim ~/server/eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun May 19 23:41:45 PDT 2019
eula=true
~/server/eula.txt

关闭并保存文件。接下来,打开server.properties文件,启用rcon协议并设置rcon密码:

vim ~/server/server.properties

找到以下几行并更新其值,如下所示:

rcon.port=25575
rcon.password=strong-password
enable-rcon=true
~/server/server.properties

不要忘记将strong-password更改为你的密码。如果您不想从远程位置连接到Minecraft服务器,请确保rcon端口已被防火墙阻止。在这里,您还可以调整服务器的默认属性。有关设置的更多信息,请访问server.properties页面

创建Systemd服务unit文件

要将Minecraft作为服务运行,我们将创建一个新的Systemd的unit文件。通过键入exit切换回您的sudo用户。打开您喜欢的文本编辑器,然后在/etc/systemd/system/中创建一个名为minecraft.service的文件:

sudo vim /etc/systemd/system/minecraft.service

粘贴以下配置:

[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx1024M -Xms512M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password stop

[Install]
WantedBy=multi-user.target
/etc/systemd/system/minecraft.service

根据您的服务器资源修改XmxXms标志。 Xmx标志定义Java虚拟机(JVM)的最大内存分配池,而Xms标志定义初始内存分配池。另外,请确保使用正确的rcon端口和密码。

保存并关闭文件,并通知systemd我们创建了一个新的unit文件:

sudo systemctl daemon-reload

现在,您可以通过执行以下操作来启动Minecraft服务器:

sudo systemctl start minecraft

首次启动该服务时,它将生成几个配置文件和目录,包括Minecraft世界。使用以下命令检查服务状态:

sudo systemctl status minecraft
● minecraft.service - Minecraft Server
   Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-05-19 23:49:18 PDT; 9min ago
 Main PID: 17356 (java)
   CGroup: /system.slice/minecraft.service
           └─17356 /usr/bin/java -Xmx1024M -Xms512M -jar server.jar nogui --noconsole

让Minecraft服务以在计算机启动时自动启动:

sudo systemctl enable minecraft

调整防火墙

如果您的服务器受到防火墙的保护,为了从本地网络外部访问Minecraft服务器,则需要打开端口25565

sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp
sudo firewall-cmd --reload

配置备份

在本部分中,我们将创建一个备份脚本和cronjob来自动备份Minecraft服务器。

首先切换到minecraft用户:

sudo su - minecraft

打开您喜欢的文本编辑器并创建以下文件:

vim /opt/minecraft/tools/backup.sh

粘贴以下配置:

#!/bin/bash

function rcon {
  /opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password "$1"
}

rcon "save-off"
rcon "save-all"
tar -cvpzf /opt/minecraft/backups/server-$(date +%F_%R).tar.gz /opt/minecraft/server
rcon "save-on"

## Delete older backups
find /opt/minecraft/backups/ -type f -mtime +7 -name '*.gz' -delete
/opt/minecraft/tools/backup.sh

通过发出以下chmod命令使脚本可执行:

chmod +x /opt/minecraft/tools/backup.sh

打开crontab文件,然后创建一个cronjob计划任务,它将在固定时间每天自动运行一次:

crontab -e

我们每天都会在23:00运行备份脚本:

0 23 * * * /opt/minecraft/tools/backup.sh

访问Minecraft控制台

要访问Minecraft控制台,您可以使用mcrcon实用程序。语法如下,您需要指定主机,rcon端口,rcon密码并使用-t开关启用mcrcon终端模式:

/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password -t
Logged in. Type "Q" to quit!
>

如果您定期连接到Minecraft控制台,你应该应创建bash别名,而不必每次输入如此的命令。

结论

您已成功在CentOS 7系统上安装Minecraft服务器并设置了每日备份。如果您遇到问题或有反馈,请在下面发表评论。