本篇文章介绍在Linux系统上搭建最新版本Minecraft服务器,并使用bungeecord配置为群组服务器模式。
docker容器方式搭建minecraft服务器查看这篇文章:
https://blog.csdn.net/whatday/article/details/108416397
1.Minecraft简介
minecraft是什么?
2.搭建环境介绍
1.操作系统版本
本次搭建使用CentOS7.5版本的linux操作系统,版本信息如下:
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
2.服务器配置
本次搭建使用一台阿里云ECS服务器,配置如下:
3.放通服务端通信端口
访问minecraft服务端时,默认连接服务器25565端口(可自定义),这里使用默认端口,因此防火墙需要放通该端口:
- Linux关闭防火墙或者放通25565端口
- 阿里云控制台配置安全规则,放通25565端口
关闭linux的firewalld防火墙
[root@willcentos ~]# systemctl stop firewalld && systemctl disable firewalld
关闭linux的selinux
[root@willcentos ~]# setenforce 0
[root@willcentos ~]# sed -i 's/enforcing/disabled/g' /etc/selinux/config
阿里云主机放通25565端口:
4.安装java程序
mc服务端是一个jar文件,运行mc服务端需要java环境支持,执行以下命令安装java:
#使用yum安装java
[root@willcentos ~]# yum install -y java
#查看java版本,确认安装成功
[root@willcentos ~]# 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)
3.运行单个服务端
下载MC服务端
创建服务端安装目录
在/opt/下创建目录mcworld1,统一存放服务端jar文件、配置文件以及玩家数据。
#创建目录
[root@willcentos ~]# mkdir -p /opt/mcworld1
#查看创建的目录
[root@willcentos ~]# ll /opt/
total 16
drwxr-xr-x 2 root root 4096 Nov 27 13:48 mcworld1
下载MC服务端jar文件
MC服务端核心分为官方版本和其他版本,下面是部分服务端下载链接:
- 官方服务端:https://minecraft.net/zh-hans/download/server/
- 官方服务端:https://mcversions.net/
- papermc服务端:https://papermc.io/downloads
- spigot服务端:https://hub.spigotmc.org/jenkins/job/BuildTools/
- sponge服务端:https://www.spongepowered.org/
这里使用papermc服务端,访问papermc官网,点击下图红色区域直接下载。
或者右键获取下载链接,使用wget直接下载到linux的/opt/mcworld1目录下:
#下载papermc
[root@willcentos ~]# wget -P /opt/mcworld1/ https://papermc.io/ci/job/Paper-1.13/469/artifact/paperclip-469.jar
#查看下载的jar文件
[root@willcentos ~]# ll /opt/mcworld1/
total 75464
-rw-r--r-- 1 root root 43435563 Nov 28 12:23 paperclip-469.jar
#为了方便区分,将jar文件重新命名为mcworld1.jar:
[root@willcentos ~]# cd /opt/mcworld1/
[root@willcentos mcworld1]# mv paperclip-469.jar mcworld1.jar
运行MC服务器端
运行以下命令启动papermc服务端:
[root@willcentos ~]# cd /opt/mcworld1/
[root@willcentos mcworld1]# java -Xmx1024M -Xms1024M -jar mcworld1.jar nogui
命令说明:
- -Xms:初始启动分配的内存(-Xms1024m)
- -Xmx:最大分配的内存(-Xmx2048m)
- nogui:用于以基于文本的界面来显示,可减少内存使用。如果使用图形化界面,移除nogui选项。
首次启动会失败,配置文件目录下会生成一个eula.txt 文件,用vim打开,将 eula = false 更改为 eula = true,并保存文件,表示同意许可协议,然后重新执行启动命令:
[root@willcentos mcworld1]# sed -i 's/eula=false/eula=true/g' eula.txt
[root@willcentos mcworld1]# java -Xmx1024M -Xms1024M -jar mcworld1.jar nogui
后台运行mc服务端:
运行服务端后命令行界面就被占用,无法执行其他操作,只能通过CTRL+C结束服务,所以我们使用nohup命令让其在后台执行:
[root@willcentos mcworld1]# nohup java -Xmx1024M -Xms1024M -jar mcworld1.jar nogui > /root/mcworld1.log &
创建启动脚本
由于执行启动命令太繁琐,这里将上面的启动命令写入脚本,下次执行脚本即可快速启动服务端:
[root@willcentos ~]# vim start_mcworld1.sh
#!/bin/bash
cd /opt/mcworld1
nohup java -Xmx1024M -Xms1024M -jar mcworld1.jar nogui >/root/mcworld1.log &
tail -f /root/mcworld1.log
通过下面的命令可以方便地运行服务端:
[root@willcentos ~]# bash start_mcworld1.sh
使用CTRL+C退出信息打印,服务端将继续在后台运行。
验证是否运行成功:
[root@willcentos ~]# ps -ef | grep java
root 17922 10.4 18.2 3679400 708512 pts/0 Sl 17:24 1:01 java -Xmx1024M -Xms1024M -jar mcworld1.jar nogui
也可以查看运行日志,nohup默认会输出日志到nohup.out,这里已经用 > 命令重新指定输出文件mcworld1.log:
[root@willcentos ~]# cat /root/mcworld1.log
停止运行MC服务端
要结束服务进程,查看ps -ef第二列显示的进程号,执行以下命令:
[root@willcentos ~]# kill -9 17922
登录MC服务端
1.下载安装官方客户端:
官方客户端下载地址:https://minecraft.net/zh-hans/download/
下载与服务端版本相同的客户端版本(即最新的1.13.2):
官网注册账号,下载minecraft客户端并安装到个人电脑,启动客户端并登录,登录后界面如下:
2.配置服务端IP地址并连接
选择开始游戏,然后选择多人游戏
输入服务器名称,可以自定义,输入服务端IP地址,即阿里云服务器的公网地址,端口默认为25565,所以不用输入,点击完成:
点击加入服务器:
成功登录服务器:
修改配置文件
如果只运行单个mc服务端,到这里mc服务器搭建已经完成,下面只需要修改配置文件,来完成其他配置,配置文件所在目录如下,这里保存了mc的所有数据:
[root@willcentos ~]# ll /opt/mcworld1/
total 42500
-rw-r--r-- 1 root root 2 Dec 10 13:20 banned-ips.json
-rw-r--r-- 1 root root 2 Dec 10 13:20 banned-players.json
-rw-r--r-- 1 root root 1053 Dec 10 13:20 bukkit.yml
drwxr-xr-x 2 root root 4096 Dec 10 12:58 cache
-rw-r--r-- 1 root root 598 Dec 10 13:20 commands.yml
-rw-r--r-- 1 root root 250 Dec 10 12:59 eula.txt
-rw-r--r-- 1 root root 2576 Dec 10 12:59 help.yml
drwxr-xr-x 2 root root 4096 Dec 10 13:20 logs
-rw-r--r-- 1 root root 2 Dec 10 13:20 ops.json
-rw-r--r-- 1 root root 43435563 Nov 28 12:23 paperclip-469.jar
-rw-r--r-- 1 root root 5473 Dec 10 13:20 paper.yml
-rw-r--r-- 1 root root 0 Dec 10 12:59 permissions.yml
drwxr-xr-x 3 root root 4096 Dec 10 12:59 plugins
-rw-r--r-- 1 root root 757 Dec 10 13:20 server.properties
-rw-r--r-- 1 root root 3358 Dec 10 13:20 spigot.yml
-rw-r--r-- 1 root root 108 Dec 10 13:20 usercache.json
-rw-r--r-- 1 root root 47 Dec 10 12:59 version_history.json
-rw-r--r-- 1 root root 2 Dec 10 12:59 whitelist.json
drwxr-xr-x 10 root root 4096 Dec 10 13:35 world
drwxr-xr-x 4 root root 4096 Dec 10 13:35 world_nether
drwxr-xr-x 4 root root 4096 Dec 10 13:35 world_the_end
[root@willcentos ~]#
查看主配置文件server.properties,其中大部分配置在这里进行修改:
[root@willcentos ~]# cd /opt/mcworld1/
[root@willcentos mcworld1]# vim server.properties
#Minecraft server properties
#Mon Dec 10 13:20:26 CST 2018
generator-settings=
force-gamemode=false
allow-nether=true
enforce-whitelist=false
gamemode=0
enable-query=false
player-idle-timeout=0
difficulty=1
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=DEFAULT
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=false
level-name=world
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=A Minecraft Server
enable-rcon=false
4.运行多个服务端
下面我们使用bungeecord代理软件搭建由多个服务端组成的群组服务器,其架构原理如下图所示:
这里仅仅进行测试,BC代理软件和所有子服全部运行在一台服务器上。
运行mcworld2
在/opt/下创建目录mcowrld2,下载或者复制papermc服务端到该目录,这里mcworld1模拟上图的子服A登录服,mcworld2模拟上图的子服B生存服:
[root@willcentos ~]# mkdir -p /opt/mcworld2
[root@willcentos ~]# ll /opt
total 16
drwxr-xr-x 8 root root 4096 Dec 10 12:59 mcworld1
drwxr-xr-x 2 root root 4096 Nov 29 12:53 mcworld2
[root@willcentos ~]# cp /opt/mcworld1/mcworld1.jar /opt/mcworld2/mcworld2.jar
[root@willcentos ~]# ll /opt/mcworld2/
total 42420
-rw-r--r-- 1 root root 43435563 Nov 28 12:23 mcworld2.jar
创建启动脚本
这里将上面的启动命令写入脚本,下次执行脚本即可快速启动服务端:
[root@willcentos ~]# vim start_mcworld2.sh
#!/bin/bash
cd /opt/mcworld2
nohup java -Xmx1024M -Xms1024M -jar mcworld2.jar nogui >/root/mcworld2.log &
tail -f /root/mcworld2.log
运行服务端,以便生成生成配置文件:
注意先停止mcworld1服务端,以免端口冲突。
[root@willcentos ~]# bash start_mcworld2.sh
#启动失败,先同意协议
[root@willcentos ~]# sed -i 's/eula=false/eula=true/g' /opt/mcworld2/eula.txt
#重新执行
[root@willcentos ~]# bash start_mcworld2.sh
下载bg代理软件
在/opt/下创建目录bungeecord:
[root@willcentos ~]# mkdir -p /opt/bungeecord
[root@willcentos ~]# ll /opt
total 16
drwxr-xr-x 2 root root 4096 Nov 29 13:14 bungeecord
drwxr-xr-x 8 root root 4096 Dec 10 12:59 mcworld1
drwxr-xr-x 2 root root 4096 Nov 29 12:53 mcworld2
下载bungeecord到bungeecord目录下。
bungeecord代理端下载地址:https://ci.md-5.net/job/BungeeCord/
选择红色区域所有文件下载,或者右键获取下载链接:
这里在官网获取下载链接,直接下载到linux对应目录下:
wget -P /opt/bungeecord/ https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar
wget -P /opt/bungeecord/ https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/module/cmd-alert/target/cmd_alert.jar
wget -P /opt/bungeecord/ https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/module/cmd-find/target/cmd_find.jar
wget -P /opt/bungeecord/ https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/module/cmd-list/target/cmd_list.jar
wget -P /opt/bungeecord/ https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/module/cmd-send/target/cmd_send.jar
wget -P /opt/bungeecord/ https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/module/cmd-server/target/cmd_server.jar
wget -P /opt/bungeecord/ https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/module/reconnect-yaml/target/reconnect_yaml.jar
查看下载的文件:
[root@willcentos ~]# ll /opt/bungeecord/
total 10108
-rw-r--r-- 1 root root 10297582 Nov 24 06:26 BungeeCord.jar
-rw-r--r-- 1 root root 5899 Nov 24 06:26 cmd_alert.jar
-rw-r--r-- 1 root root 4151 Nov 24 06:26 cmd_find.jar
-rw-r--r-- 1 root root 4629 Nov 24 06:26 cmd_list.jar
-rw-r--r-- 1 root root 5579 Nov 24 06:26 cmd_send.jar
-rw-r--r-- 1 root root 7525 Nov 24 06:26 cmd_server.jar
-rw-r--r-- 1 root root 6149 Nov 24 06:27 reconnect_yaml.jar
运行bungeecord代理端
创建启动脚本:
[root@willcentos ~]# vim start_bg.sh
#!/bin/bash
cd /opt/bungeecord
nohup java -Xmx256M -jar BungeeCord.jar >/root/bg.log &
tail -f /root/bg.log
运行代理端,以便生成配置文件:
[root@willcentos ~]# bash start_bg.sh
修改配置文件
修改mcworld1配置文件:
[root@willcentos ~]# cd /opt/mcworld1/
[root@willcentos mcworld1]# vim server.properties
server-port=25566 #端口改为25566或者自定义
online-mode=false #关闭验证
配置支持bungeecord
[root@willcentos mcworld1]# vim spigot.yml
......
config-version: 11
settings:
save-user-cache-on-stop-only: false
sample-count: 12
bungeecord: true #改为true
late-bind: false
启动mcworld1服务端:
[root@willcentos ~]# bash start_mcworld1.sh
修改mcworld2配置文件:
[root@willcentos ~]# cd /opt/mcworld2/
[root@willcentos mcworld2]# vim server.properties
server-port=25567 #端口改为25567或者自定义
online-mode=false #关闭验证
配置支持bungeecord
[root@willcentos mcworld2]# vim spigot.yml
......
config-version: 11
settings:
save-user-cache-on-stop-only: false
sample-count: 12
bungeecord: true #改为true
late-bind: false
重新启动mcworld2服务端:
ps aux | grep java
[root@willcentos ~]# bash start_mcworld2.sh
修改bungeecord配置文件:
[root@willcentos ~]# cd /opt/bungeecord/
[root@willcentos bungeecord]# vim config.yml
disabled_commands:
- disabledcommandhere
online_mode: true #这里默认为true不用修改
log_commands: false
network_compression_threshold: 256
listeners:
- query_port: 25565 #改为25565,这样客户端登录时不用再指定端口
motd: '&1Another Bungee server'
tab_list: GLOBAL_PING
query_enabled: false
proxy_protocol: false
forced_hosts:
pvp.md-5.net: pvp
ping_passthrough: false
priorities:
- lobby
bind_local_address: true
host: 0.0.0.0:25565 #改为25565,这样客户端登录时不用再指定端口
max_players: 1
tab_size: 60
force_default_server: false
connection_throttle: 4000
groups:
md_5:
- admin
log_pings: true
player_limit: -1
prevent_proxy_connections: false
forge_support: false
stats: 64afb5df-bd5d-4931-b614-fb6fd71807e3
permissions:
default:
- bungeecord.command.server
- bungeecord.command.list
admin:
- bungeecord.command.alert
- bungeecord.command.end
- bungeecord.command.ip
- bungeecord.command.reload
ip_forward: true #改为true
timeout: 30000
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: localhost:25566 #lobby代表mcworld1,端口改为25566
restricted: false
survival: #参考默认lobby项,新增mcworld2,新增更多则每项代表一个服务端。
motd: '&1Just another BungeeCord - Forced Host'
address: localhost:25567 #survival代表mcworld2,端口改为25567
restricted: false
3.重新启动mc服务器端和代理端
修改配置后需要重新启动才能生效,这里将所有服务端停止并重新运行:
首先获取java进程号:
[root@willcentos ~]# ps -ef | grep java
root 18373 1 10 18:00 pts/0 00:01:57 java -Xmx1024M -Xms1024M -jar mcworld1.jar nogui
root 18393 1 12 18:00 pts/0 00:02:29 java -Xmx1024M -Xms1024M -jar mcworld2.jar nogui
root 18436 1 0 18:00 pts/0 00:00:05 java -Xmx256M -jar BungeeCord.jar
杀掉相关进程号:
[root@willcentos ~]# kill -9 18373
[root@willcentos ~]# kill -9 18393
[root@willcentos ~]# kill -9 18436
查看启动脚本:
[root@willcentos ~]# ll /root
total 52
-rw-r--r-- 1 root root 3309 Dec 10 18:04 bg.log
-rw-r--r-- 1 root root 7432 Dec 10 18:03 mcworld1.log
-rw-r--r-- 1 root root 7096 Dec 10 18:03 mcworld2.log
-rw-r--r-- 1 root root 108 Dec 10 18:44 start_bg.sh
-rw-r--r-- 1 root root 133 Dec 10 18:43 start_mcworld1.sh
-rw-r--r-- 1 root root 133 Dec 10 18:44 start_mcworld2.sh
依次重新启动mcworld1 mcworld2 bungeecord:
[root@willcentos ~]# bash start_mcworld1.sh
[root@willcentos ~]# bash start_mcworld2.sh
[root@willcentos ~]# bash start_bg.sh
基本原理:
客户端登录验证
登录信息配置相同:
成功登陆服务端:
运行/server命令,可以看到当前所在服务器为lobby,也即mcworld1服务端:
我们执行/server survival命令切换到survival服务端,也即mcworld2服务端。
再次执行/server可以看到我们当前所在服务器为survival:
至此群组服务器搭建完成,接下来可以自行通过修改服务端配置文件进行其他调整。