1. 程式人生 > >Linux搭建minecraft伺服器

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