Linux搭建minecraft服务器

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

Minecraft简介

官方网站:https://minecraft.net
在这里插入图片描述
minecraft是什么?
在这里插入图片描述

搭建环境介绍

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 ~]# vim /etc/selinux/config
SELINUX=disabled   #改为disabled
[root@willcentos ~]# setenforce 0
setenforce: SELinux is disabled

阿里云主机放通25565端口:
在这里插入图片描述

4.本次搭建服务端整体结构:

BC代理端和所有子服全部运行在一台服务器上,逻辑结构如下图:
在这里插入图片描述

常规方式搭建minecraft服务器

这里介绍在centos7.5系统上直接安装mc服务端,并配置为跨服群组服务器:
1.首先安装java并创建服务端安装目录

mc服务端是一个jar文件,运行mc服务端需要java环境支持。在/opt目录下创建3个目录mcowrld1、mcworld2和bungeecord,分别存放mc服务端和bungeecord的数据:

#安装java
[root@willcentos ~]# yum install -y java

#创建服务端安装目录
[root@willcentos ~]# mkdir -p /opt/{mcworld1,mcworld2,bungeecord}

#查看创建的目录
[root@willcentos ~]# ll /opt/
total 16
drwxr-xr-x 2 root root 4096 Nov 27 13:48 bungeecord
drwx--x--x 4 root root 4096 Nov 13 10:25 containerd
drwxr-xr-x 2 root root 4096 Nov 27 13:48 mcworld1
drwxr-xr-x 2 root root 4096 Nov 27 13:48 mcworld2

2.下载mc服务端jar包

MC服务端核心分为官方版本和其他版本,下面列出部分服务端下载链接:

下载papermc,由于要搭建bg群组服务器,这里使用papermc服务端,访问papermc官网,点击下图红色区域直接下载,或者右键获取下载链接:
在这里插入图片描述

下载bungeecord,选择红色区域所有文件下载,或者右键获取下载链接:
在这里插入图片描述

这里在官网获取下载链接,直接下载到linux对应目录下:

#下载papermc服务端
wget -P /opt/mcworld1 https://papermc.io/ci/job/Paper-1.13/469/artifact/paperclip-469.jar
wget -P /opt/mcworld2 https://papermc.io/ci/job/Paper-1.13/469/artifact/paperclip-469.jar
#下载bungeecord代理端
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/mcworld1/
total 42420
-rw-r--r-- 1 root root 43435563 Nov 28 12:23 paperclip-469.jar
[root@willcentos ~]# ll /opt/mcworld2/
total 42420
-rw-r--r-- 1 root root 43435563 Nov 28 12:23 paperclip-469.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
[root@willcentos ~]# 

3.启动mc服务器端和代理

启动命令格式:

# java -Xms**m -Xmx**m -jar [path]/minecraft_server.[version].jar nogui
# 1.13.2版本启动命令
# java -Xmx1024M -Xms1024M -jar minecraft_server.1.13.2.jar nogui

 -Xms:初始启动分配的内存(-Xms1024m)
 -Xmx:最大分配的内存(-Xmx2048m)
 nogui:用于以基于文本的界面来显示,可减少内存使用。如果使用图形化界面,移除nogui选项。
同意最终用户许可协议 EULA
首次启动不会成功启动,会生成一个eula.txt 文件。用vim打开,将行 eula = false 更改为 eula = true,并保存文件,表示同意许可协议。

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

第二章 安装Docker

官方参考链接:https://docs.docker.com/install/linux/docker-ce/centos/

1.安装必要的软件包

# yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

2.配置Docker yum源

这里使用国内阿里云Yum源:

# yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装Docker CE最新版本

# yum install docker-ce -y

4.查看docker版本,确认安装成功

# docker --version
Docker version 18.06.1-ce, build e68fc7a

5.启动Docker服务并设为开机启动

# systemctl start docker.service && systemctl enable docker.service

6.安装docker-compose工具

docker-compose负责实现对 Docker 容器集群的快速编排,它允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器为一个项目.

#安装epel源
# yum install -y epel-release 
#安装docker-compose
# yum install -y docker-compose

第三章 安装MC服务端

这里仅做测试,基于容器方式运行以下三个容器:

  • mcworld1
  • mcworld2
  • mcbungeecord

说明:

1.运行mcworld1服务端容器:

docker run -d -e EULA=TRUE \
    -v /mcworld1_data:/data \
    -e TYPE=PAPER \
    -e VERSION=1.13.2 \
    -e OPS=willminec \
    -e ONLINE_MODE=FALSE \
    -p 25566:25565 \
    --restart always \
    --name mcworld1 \
    itzg/minecraft-server --noconsole

2.运行mcworld2服务端容器:

docker run -d -e EULA=TRUE \
    -v /mcworld2_data:/data \
    -e TYPE=PAPER \
    -e VERSION=1.13.2 \
    -e OPS=willminec \
    -e ONLINE_MODE=FALSE \
    -p 25567:25565 \
    --restart always \
    --name mcworld2 \
    itzg/minecraft-server --noconsole

3.运行mcbungeecord容器:

docker run -d -v /mcbg_data:/server \
    -p 25565:25577 \
    --name mcbungeecord \
    --restart always \
    itzg/bungeecord

4.使用docker-compose运行容器(可选)

我们也可以使用docker-compose来一次运行多个容器,这里已经提前安装了docker-compose,下面我们将运行3个容器的命令写入yml文件并使用docker-compose执行。

在/root目录下创建docker-compose.yml文件,配置如下内容:

[root@willcentos ~]# vim docker-compose.yml
version: '2'
services:

  mcworld1:
    image: itzg/minecraft-server
    ports:
      - 25566:25565
    volumes:
      - /mcworld1_data:/data
    environment:
      - EULA=true
      - TYPE=PAPER
      - VERSION=1.13.2
      - OPS=willminec
      - ONLINE_MODE=FALSE
    container_name: mcworld1
    tty: true
    stdin_open: true
    restart: always

  mcworld2:
    image: itzg/minecraft-server
    ports:
      - 25567:25565
    volumes:
      - /mcworld2_data:/data
    environment:
      - EULA=true
      - TYPE=PAPER
      - VERSION=1.13.2
      - OPS=willminec
      - ONLINE_MODE=FALSE
    container_name: mcworld2
    tty: true
    stdin_open: true
    restart: always

  mcbg:
    image: itzg/bungeecord 
    ports:
      - 25565:25577
    volumes:
      - /mcbg_data:/server
    links:
      - mcworld1
      - mcworld2
    container_name: mcbungeecord
    restart: always

执行docker-compose文件,运行容器:

[root@willcentos ~]# docker-compose up -d

执行效果与前三步运行3个容器一样。

5.查看下载的容器镜像:

[root@willcentos ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
itzg/minecraft-server   latest              c6a0d0b8e7e5        4 weeks ago         309MB
itzg/bungeecord         latest              e9aff248403a        6 months ago        86.5MB

6.查看容器运行状态:

STATUS列全部为UP(healthy)说明容器已经正常运行

[root@willcentos ~]# docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                   PORTS                                 NAMES
b73c30462d8d        itzg/bungeecord         "/usr/bin/run-bungee…"   7 minutes ago       Up 7 minutes             0.0.0.0:25565->25577/tcp              mcbungeecord
bea699ee3242        itzg/minecraft-server   "/start"                 7 minutes ago       Up 7 minutes (healthy)   25575/tcp, 0.0.0.0:25567->25565/tcp   mcworld2
7c3cd9e03326        itzg/minecraft-server   "/start"                 7 minutes ago       Up 7 minutes (healthy)   0.0.0.0:25566->25565/tcp, 25575/tcp   mcworld1

7.查看三个容器配置文件和数据在主机上的存放目录:

服务端的配置文件全部存放在主机本地根目录下,删除容器数据不会被删除。

[root@willcentos ~]# ll /
total 16
...
drwxr-xr-x    4 1000 1000  158 Nov 25 12:10 mcbg_data
drwxrwxr-x    6 1000 1000  125 Nov 25 11:57 mcworld1_data
drwxrwxr-x    6 1000 1000  125 Nov 25 12:01 mcworld2_data
...

第四章 修改配置文件

修改bungeecord配置文件

1.查看bungeecord目录下有哪些配置文件:

[root@willcentos ~]# ll /mcbg_data/
total 10084
-rw-r--r-- 1 1000 1000 10297582 Nov 25 15:57 BungeeCord.jar
-rw-r--r-- 1 1000 1000      989 Nov 25 15:57 config.yml
-rw-r--r-- 1 1000 1000        3 Nov 25 15:57 locations.yml
drwxr-xr-x 2 1000 1000     4096 Nov 25 15:57 modules
-rw-r--r-- 1 1000 1000      155 Nov 25 15:57 modules.yml
drwxr-xr-x 2 1000 1000     4096 Nov 25 15:57 plugins
-rw-r--r-- 1 1000 1000     3911 Nov 25 15:59 proxy.log.0
-rw-r--r-- 1 1000 1000        0 Nov 25 15:57 proxy.log.0.lck

2.首先获取云服务器网卡IP地址,我这里是172.31.112.2

[root@willcentos ~]# ip a
......
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:0a:26:84 brd ff:ff:ff:ff:ff:ff
    inet 172.31.112.2/20 brd 172.31.127.255 scope global dynamic eth0
       valid_lft 315270699sec preferred_lft 315270699sec

3.需要修改的配置文件为config.yml,,修改如下内容:

[root@localhost ~]# vim /mcbg_data/config.yml 
online_mode: true   #默认ture
......
ip_forward: true    #默认为false,改为true
......
#复制lobby内容,增加一个子服务器create,注意修改IP和端口
servers:            
  lobby:
    motd: 'Welcome the lobby world!'
    address: 172.31.112.2:25566
    restricted: false
  create:
    motd: 'Welcome the create world!'
    address: 172.31.112.2:25567
    restricted: false
......

修改mcworld服务端配置文件

需要修改mcworld1和mcworld2配置文件,这里以mcworld1为例:

1.查看mcworld1服务端目录下有哪些配置文件

[root@willcentos ~]# ll /mcworld1_data/
total 42508
-rw-rw-r-- 1 1000 1000        2 Nov 25 15:57 banned-ips.json
-rw-rw-r-- 1 1000 1000        2 Nov 25 15:57 banned-players.json
-rw-rw-r-- 1 1000 1000     1053 Nov 25 15:57 bukkit.yml
drwxrwxr-x 2 1000 1000     4096 Nov 25 15:57 cache
-rw-rw-r-- 1 1000 1000      598 Nov 25 15:57 commands.yml
drwxrwxr-x 2 1000 1000     4096 Nov 25 15:57 config
-rw-rw-r-- 1 1000 1000       65 Nov 25 15:57 eula.txt
-rw-rw-r-- 1 1000 1000     2576 Nov 25 15:57 help.yml
drwxrwxr-x 2 1000 1000     4096 Nov 25 15:57 logs
drwxrwxr-x 2 1000 1000     4096 Nov 25 15:57 mods
-rw-rw-r-- 1 1000 1000      137 Nov 25 15:57 ops.json
-rw-rw-r-- 1 1000 1000       11 Nov 25 15:57 ops.txt.converted
-rw-rw-r-- 1 1000 1000 43431489 Nov 25 15:57 paper_server.jar
-rw-rw-r-- 1 1000 1000     5473 Nov 25 15:58 paper.yml
-rw-rw-r-- 1 1000 1000        0 Nov 25 15:57 permissions.yml
drwxrwxr-x 3 1000 1000     4096 Nov 25 15:57 plugins
-rw-r--r-- 1 1000 1000      912 Nov 25 15:58 server.properties
-rw-rw-r-- 1 1000 1000     3358 Nov 25 15:58 spigot.yml
-rw-rw-r-- 1 1000 1000      108 Nov 25 15:57 usercache.json
-rw-rw-r-- 1 1000 1000       47 Nov 25 15:57 version_history.json
-rw-rw-r-- 1 1000 1000        2 Nov 25 15:57 whitelist.json
drwxrwxr-x 8 1000 1000     4096 Nov 25 16:13 world
drwxrwxr-x 4 1000 1000     4096 Nov 25 16:13 world_nether
drwxrwxr-x 4 1000 1000     4096 Nov 25 16:13 world_the_end
[root@willcentos ~]# 

2.需要修改的配置文件为server.properties和spigot.yml:

[root@willcentos ~]# vim /mcworld1_data/server.properties 
......
online-mode=false   #此项如果为true需要改为false

修改spigot.yml配置文件:

[root@willcentos ~]# vim /mcworld1_data/spigot.yml 
......
config-version: 11
settings:
......
  bungeecord: true    #将false改为true
......

3.mcworld2配置需要做同样修改,这里省略

4.修改配置文件后需要重启3个docker容器,使配置生效

[root@willcentos ~]# docker restart mcbungeecord mcworld1 mcworld2

第五章 登录MC服务端

1.下载安装官方客户端:

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

下载与服务端版本相同的客户端版本(即最新的1.13.2):

官网注册账号,购买游戏,下载minecraft客户端并安装到个人电脑,启动客户端并登录,登录后界面如下:
在这里插入图片描述

2.配置服务端IP地址并连接

选择开始游戏,然后选择多人游戏
在这里插入图片描述
输入服务器名称,可以默认,输入服务端IP地址,即阿里云服务器的公网地址,点击完成:
在这里插入图片描述
点击加入服务器,即可登录游戏:
在这里插入图片描述
登录游戏后默认为生存模式,输入/server提示当前登录的服务端为lobby,即mcworld1服务端,并且提示可登录的服务器为lobby和create两个服务端。
输入/server create切换到create服务端,即mcworld2服务端:
在这里插入图片描述
再次输入/server可以看到当前所在服务端为create服务器端:
在这里插入图片描述
到这里群组服务器已经完成,可以正常游戏了。

3.服务端配置修改
目前两个服务端都是生存模式,我们可以通过修改配置文件,更改游戏模式,调整op权限等各种操作。
这里先配置OP权限,运行容器是已经添加willminec用户为op管理员,但在ops.json的配置文件中默认uuid不对,需要进行更改:
查看当前的ops.json配置信息:

[root@willcentos ~]# vim /mcworld1_data/ops.json 
[
  {
    "uuid": "9f8064f3-8797-312e-af07-ac091656b63d",
    "name": "willminec",
    "level": 4,
    "bypassesPlayerLimit": false
  }

查询willminec用户的uuid
访问查询网站:https://mcuuid.net,输入用户名进行查询:
在这里插入图片描述
我们查询到该用户的uuid后进行替换:

[root@willcentos ~]# vim /mcworld1_data/ops.json 
[
  {
    "uuid": "44702a33-29dc-4b8f-a545-f8aa499517ef",
    "name": "willminec",
    "level": 4,
    "bypassesPlayerLimit": false
  }
]

然后保存配置重启该容器:

[root@willcentos ~]# systemctl restart mcworld1

重新登录游戏,即可拥有op权限,可以进行大部分命令的操作:

例如使用/deop (玩家名)删除op时提示当前可删除的op为willminec.
在这里插入图片描述
可使用/op <玩家名> 为其他用户设置op权限。

使用/gamemode xxx切换游戏模式:
在这里插入图片描述

其他命令例如:

/tp 1000 64 1000    #传送到x坐标为1000,y坐标为64,z坐标为1000的位置
/time set day       #将时间切换到白天

第六章 服务端安装插件

对于插件安装,直接下载后放在服务端对应plugins目录下,然后重启容器即可,这里以mcworld1为例:
访问bukkit官网下载对应版本的插件:https://dev.bukkit.org/bukkit-plugins
这里仅下载worldedit、worldguard、EssentialsX、PermissionsEx四个插件进行测试,下载后的插件全部为jar文件:
在这里插入图片描述
使用winspc或者FlashFXP从windows系统传送到linux系统的/mcworld1_data/plugins目录下即可:

[root@willcentos ~]# ll /mcworld1_data/plugins/
total 5872
drwxrwxr-x 2 1000 1000    4096 Nov 26 20:08 bStats
-rw-r--r-- 1 root root 1211165 Nov 26 18:07 EssentialsX-2.15.0.1.jar
-rw-r--r-- 1 root root   14270 Nov 26 18:07 EssentialsXAntiBuild-2.15.0.1.jar
-rw-r--r-- 1 root root   12792 Nov 26 18:07 EssentialsXChat-2.15.0.1.jar
-rw-r--r-- 1 root root 1120585 Nov 26 18:07 EssentialsXGeoIP-2.15.0.1.jar
-rw-r--r-- 1 root root   19387 Nov 26 18:07 EssentialsXProtect-2.15.0.1.jar
-rw-r--r-- 1 root root   18251 Nov 26 18:07 EssentialsXSpawn-2.15.0.1.jar
-rw-r--r-- 1 root root  334630 Nov 26 18:07 EssentialsXXMPP-2.15.0.1.jar
-rw-r--r-- 1 root root  722895 Nov 26 18:40 PermissionsEx-1.23.4.jar
-rw-r--r-- 1 root root 1449119 Nov 16 13:35 worldedit-bukkit-7.0.0-beta-01.jar
-rw-r--r-- 1 root root 1088638 Nov 24 12:54 worldguard-bukkit-6.2.2.jar
[root@willcentos ~]#

然后重启mcworld1容器,插件即可生效,登录游戏进行验证:

[root@willcentos ~]# docker restart mcworld

可以看到已经支持了world相关命令,我们用worldedit插件功能创建一个半径为5的空心玻璃圆形,执行命令://hcyl glass 5 1
在这里插入图片描述




猜你喜欢

转载自blog.csdn.net/networken/article/details/84477537