如何用 fabric 和 velocity 群组代理搭建一个高版本红石生电服务器
1.说明
生电玩法一直是mc非常有趣的玩法之一,但是找了挺久也没有一个系统的开服教程,正好趁着暑假有空,来填补这个空白。(挂科预定
本文将介绍如何在centos下打造属于你自己生电服,隔壁的小伙伴们都羡慕极了~
重要说明
本篇文章的最后一章——杂项,是从买来主机,安装系统,升级核心,直到能够配置mc服务端的全过程。如果你是第一次使用centos,最后那些希望能给你一点参考。
也就是说,第三章将直接从配置服务端开始。
我会在文章末尾把本次用到软件,资料,以及搭建好的服务端上传的网盘链接贴上,各位有需要自取
你必须拥有基本的linux知识,了解基本的命令等,本篇文章不会有太基础的内容
本文若有任何疏漏之处,还请各位大佬多多斧正;若对教程有任何疑问,欢迎评论或者私信。谢谢各位。
本文中示范的软件,硬件以及环境配置如下
硬件
CPU: 锐龙R7-5800H
内存:32G双通道
硬盘:512G SSD
软件
python版本:python3.9.7
jdk版本:OpenJDK Runtime Environment (Alibaba Dragonwell)-17.0.3.0.3+7-GA
mc核心:VanilaFabric服务端1.18.1 / 1.19.2
系统
centos stream 8
当然其他的系统也是一样的,操作大差不差。
为何jdk使用了Dragonwell
简单来说,就是比官方的jdk占用小,运行效率高。
CPU占用和内存占用极其稳定,
即使进行大规模跑图、生成实体,tnt爆炸也几乎无波动
经测试,在用于开mc服务器的时候,节省 20~40% 左右的内存,提升 10~30% 左右的CPU效率
2.介绍
2.1 架构介绍
以TIS为例,使用velocity群组代理,连接三个主要服务器,分别为生存服(Servival),镜像服(Mirror)以及创造服(Creative)。并且使用了另外的一个服务器作为跨服聊天服务器(ChatBridge)。
生存服务器、镜像服务器和创造服务器结构的主体部分。三个服务器在计算机上同时运行,有着不同作用。
生存服务器是主服务器,作为生电生存的平台。
创造服务器可以有若干个,可以作为生电机器的展示和交流平台等。
镜像服务器是生存服务器的副本,用来进行机器实装前的测试等工作。
这三个主要服务器均是MCDR + vanillaFabric的服务器组合,通过velocity群组服代理与用户通信,通过charbridge server进行跨服对话。
MCDR仓库在此。
MCDR插件列表在此。
之后搭建镜像服时会使用MCDR插件。
3.搭建服务端
3.1 配置jdk
我本次使用的是alibaba的dragonwell版本的jdk
当然,若是使用zulujdk等其他版本也是一样的过程。
首先下载dragonwell,一般情况下下载x64_linux版本就行。
你可以用wget直接下载到你的linux主机上,也可以先下载到自己的主力机上,再通过SFTP服务上传,更方便。
解压jdk到/usr/local文件夹下
tar -zvxf Alibaba_Dragonwell_17.0.3.0.3+7_x64_linux.tar.gz -C /usr/local
配置环境变量
vi /etc/profile
在最后添加以下内容
#java path config
JAVA_HOME=/usr/local/dragonwell-17.0.3.0.3+7-GA
CLASS_PATH=$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASS_PATH PATH
保存退出后,使其生效
source /etc/profile
可以输入java -version
查看是否配置成功
# 若不想配置环境变量,则需要输入绝对路径,对于含有多个jdk的情况比较好
# 例:/usr/local/dragonwell-17.0.3.0.3+7-GA/bin/java -version
[root@localhost ~]# java -version
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment (Alibaba Dragonwell)-17.0.3.0.3+7-GA (build 17.0.3+7)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell)-17.0.3.0.3+7-GA (build 17.0.3+7, mixed mode, sharing)
3.2 配置velocity
velocity是类似于BungeeCord的群组代理,非常适合于这种使用vanillaFabric核心的情况。对高版本(1.13+)支持较好,转发效率高。对于模组服不建议使用。
以下服务端类型因为支持使用 Velocity 的modern转发协议,因此推荐使用 Velocity 进行跨服:
1.13+(含) 的 Paper(需要构建版本高于1.13 Build377)(及其非Forge Mod支持的分支) 服务端
任意版本,安装了FabricProxy Mod 的 VanilaFabric 服务端
下载Velocity
建议下载stable稳定版本的Velocity
但是注意,若服务端为mc1.19.1及以上带有公钥验证的版本,请使用development开发版本。
或者使用使用wget下载
# 新建一个文件夹,用来放Velocity所需文件
mkdir mc
# 下载稳定版本Velocity到mc文件夹
wget -P mc https://api.papermc.io/v2/projects/velocity/versions/3.1.1/builds/98/downloads/velocity-3.1.1-98.jar
# 开发版本更新速度太快,请自行到官网下载完再上传至服务器。
第一次运行以生成配置文件
# cd到mc文件夹,这是刚才存放Velocity的文件夹
cd mc
# 新建并编辑脚本文件
vi start.sh
将以下内容放进去
注意:占用内存设置可大可小,若你服务器时常在线人数只有个位数,完全可以改为256M或512M
#!/bin/sh
java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity*.jar
保存退出后运行bash start.sh
,开始运行,你可以看到以下内容,代表运行成功。
[root@localhost mc]# bash start.sh
[14:38:21 INFO]: Booting up Velocity 3.1.1...
[14:38:21 INFO]: Loading localizations...
[14:38:21 INFO]: Connections will use epoll channels, libdeflate (Linux x86_64) compression, OpenSSL 1.1.x (Linux x86_64) ciphers
[14:38:21 WARN]: Player info forwarding is disabled! All players will appear to be connecting from the proxy and will have offline-mode UUIDs.
[14:38:21 INFO]: Loading plugins...
[14:38:21 INFO]: Loaded 0 plugins
[14:38:21 INFO]: Listening on /[0:0:0:0:0:0:0:0%0]:25577
[14:38:21 INFO]: Velocity and some of its plugins collect metrics and send them to bStats (https://bStats.org).
[14:38:21 INFO]: bStats collects some basic information for plugin authors, like how many people use
[14:38:21 INFO]: their plugin and their total player count. It's recommended to keep bStats enabled, but
[14:38:21 INFO]: if you're not comfortable with this, you can opt-out by editing the config.txt file in
[14:38:21 INFO]: the '/plugins/bStats/' folder and setting enabled to false.
[14:38:21 INFO]: Done (0.51s)!
>
使用end
命令退出,然后修改配置文件
在本文中,我将只说明必要的修改项,其余保持默认即可。若有其他需求,你可以浏览这个帖子(感谢贺兰兰)查看详细配置说明。配置说明在文章中部。
vi velocity.toml
下面开始说明主要配置项目(mc1.19.1及以上配置项目在下方)
-
bind = "0.0.0.0:25577"
,表示将监听来自所有ip地址,端口25577的连接,可以按需更改。 -
motd = "	add3A Velocity Server"
,这项将在玩家mc服务器列表内显示服务器介绍信息,按需更改。 -
show-max-players = 500
,这项将在玩家服务器列表内显示最大玩家数量。注意:Velocity不能真正的限制玩家数量,如有需要,请在下游服务器设置人数上限。 -
online-mode = true
,启用正版登录。 -
player-info-forwarding-mode = "NONE"
修改为player-info-forwarding-mode = "modern"
,使用Velocity原生转发玩家的 IP 和 UUID。 -
forwarding-secret = "wVt1HBsKmLmM"
,将引号内的字符串记住,将来要用。 -
kick-existing-players = false
,可以修改为true
,在开启正版登录情况下,若有相同用户名的玩家重复登录服务器,将服务器内的玩家踢出以令新玩家进入。 -
修改
[servers]
信息,一共有三个主要服务器,可以参考以下设置,按需更改。
[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
# 在下面配置你的服务器信息
survival = "127.0.0.1:30066"
mirror = "127.0.0.1:30067"
creative = "127.0.0.1:30068"
# In what order we should try servers when a player logs in or is kicked from a server.
# 若玩家被踢出服务器或第一次连接服务器,则按照以下顺序连接
# 若要尝试多个服务器,则按照以下配置
# try = ["survival","creative"]
try = ["survival"]
- 修改
[forced-hosts]
信息,以下内容仅供参考,按需更改。
[forced-hosts]
# Configure your forced hosts here.
"survival.example.com" = ["survival"]
"mirror.example.com" = ["mirror"]
"creative.example.com" = ["creative"]
修改完成,[advanced]
设置无需更改,保存退出。
mc1.19.1版本及以上配置项目如下。
-
bind = "0.0.0.0:25577"
,表示将监听来自所有ip地址,端口25577的连接,可以按需更改。 -
motd = " add3A Velocity Server"
,这项将在玩家mc服务器列表内显示服务器介绍信息,按需更改。 -
show-max-players = 500
,这项将在玩家服务器列表内显示最大玩家数量。注意:Velocity不能真正的限制玩家数量,如有需要,请在下游服务器设置人数上限。 -
online-mode = true
,启用正版登录。 -
force-key-authentication = true
,强制公钥验证,我的建议是改为false,配合NoChatReports模组禁用玩家举报。 -
player-info-forwarding-mode = "none"
,将其改为morden,使用Velocity原生转发玩家的 IP 和 UUID。 -
forwarding-secret-file = "forwarding.secret"
,和之前的Velocity版本不同,将密钥字符串保存到了相同目录下的forwarding.secret文件中,请将其打开复制保存备用。 -
kick-existing-players = false
,可以修改为true,在开启正版登录情况下,若有相同用户名的玩家重复登录服务器,将服务器内的玩家踢出以令新玩家进入。 -
修改
[servers]
信息,以下内容供参考。
[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
survival = "127.0.0.1:30066"
mirror = "127.0.0.1:30067"
creative = "127.0.0.1:30068"
- 修改
[forced-hosts]
信息,以下内容供参考。
[forced-hosts]
# Configure your forced hosts here.
"survival.example.com" = [
"survival"
]
"mirror.example.com" = [
"mirror"
]
"creative.example.com" = [
"creative"
]
放行centos防火墙端口
若是使用腾讯云,阿里云等云主机厂商,记得在控制台内放行25577端口(以本文为例)。
并且由于以上两个厂商的安装的系统默认不开启系统防火墙,以下命令可以忽略。
firewall-cmd --zone=public --add-port=25577/tcp --permanent
firewall-cmd --reload
3.3 搭建MCDR框架以及搭建mc服务端
3.3.1 初始化MCDR
建议安装python3.9,不但是因为MCDR依赖python3.6-3.9,而且某些MCDR插件仅支持此python版本。
点击此处访问MCDR文档。
安装MCDR
使用清华源来加速下载
pip3 install mcdreforged -i https://pypi.tuna.tsinghua.edu.cn/simple
初始化MCDR
在mcdrs文件夹中运行MCDR,使用以下命令初始化MCDR运行环境。
# 新建mcdrs文件夹并转到mcdrs文件夹
mkdir mcdrs && cd mcdrs
# 初始化MCDR
python3 -m mcdreforged init
运行成功后,类似于以下提示
[root@localhost ~]# mkdir mcdrs
[root@localhost ~]# cd mcdrs
[root@localhost mcdrs]# python3 -m mcdreforged init
Initialized environment for MCDReforged in /root/mcdrs
3.3.2 配置survival子服务端
在fabricmc网站下载服务端。本次演示mc版本是1.18.1,你也可以安装其他版本。
下载fabric服务端
注意:要将服务端核心下载到存放mcdr文件夹的server文件夹内。
cd server
curl -OJ https://meta.fabricmc.net/v2/versions/loader/1.18.1/0.14.8/0.11.0/server/jar
启动MCDR的同时启动mc服务端
退回上一个目录,修改MCDR配置文件,以启动服务端。
cd ..
vi config.yml
可以按照以下配置修改,其他默认即可
-
language: en_us
,可以修改为zh_cn
,这样输出为中文。 -
start_command: java -Xms1G -Xmx2G -jar minecraft_server.jar nogui
,将启动命令中 *.jar 文件修改为你的服务器核心的文件名,最大和最小内存自行修改。例如:java -Xmx6G -jar fabric-server-mc.1.18.1-loader.0.14.8-launcher.0.11.0.jar nogui
修改结束,保存退出。
启动MCDR
python3 -m mcdreforged
因为是第一次启动,会让你同意eula
[Server] [16:37:36] [main/ERROR]: Failed to load properties from file: server.properties
[Server] [16:37:36] [main/WARN]: Failed to load eula.txt
[Server] [16:37:36] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[MCDR] [16:37:36] [MainThread/INFO]: 服务端进程返回代码: 0
[MCDR] [16:37:36] [MainThread/INFO]: 服务端已关闭
[MCDR] [16:37:36] [MainThread/INFO]: 正在关闭 MCDR
[MCDR] [16:37:36] [MainThread/INFO]: 正在关闭高级控制台
>
[MCDR] [16:37:37] [MainThread/INFO]: bye
修改eula.txt
cd server
vi eula.txt
现在,请做两件事
1) 退回上级目录,将mcdrs文件夹(存放mcdr的文件夹)另存为副本,等会配置creative子服务端时更方便。
# 转到用户目录
cd ~
# 创建mcdrc文件夹,用于存放Creative子服务器的文件
mkdir mcdrc
# 复制文件
cp -r mcdrs/* mcdrc/
2) 由于镜像服的同步功能使用了MCDR的插件,事先将mcdrs下的文件另存到Mirror文件夹下,等会配置Mirror子服务端时更方便。
# 退回上级目录
cd ..
# 转到mcdrs目录
cd mcdrs
# 创建 Mirror 文件夹
mkdir Mirror
# 将mcdrc文件夹下的文件复制到mcdrs/Mirror文件夹下
cp -r /root/mcdrc/* Mirror/
现在,就可以编辑survival子服务端的server.properties配置文件了
cd server
vi server.properties
-
difficulty=easy
可以修改为hard
。 -
max-players=20
可以自行设置最大人数。 -
online-mode=true
,由于之前在Velocity配置文件内设置了"Modern"转发模式,正版服务器可以无需更改。关于此项,请看评论区,感谢 @MrPiper。 -
server-port=25565
,端口按照之前在Velocity配置的端口设置,我设置为30066
。
其他无需修改,保存退出即可。
由于使用了Velocity转发,要在mods文件夹内安装FabricProxy-Lite
Fabric-API网站在此处
FabricProxy-Lite网站在此处
# 转到mods文件夹
cd mods
# 下载Fabric-API
wget https://cdn.modrinth.com/data/P7dR8mSH/versions/0.46.6+1.18/fabric-api-0.46.6%2B1.18.jar
# 下载FabricProxy-Lite
wget https://cdn.modrinth.com/data/8dI2tmqs/versions/v1.1.6/FabricProxy-Lite-1.1.6.jar
现在要启用服务端,需要修改第一次启动FabricProxy-Lite模组的配置文件
# 转到mcdrs文件夹内
cd /root/mcdrs
# 启动MCDR
python3 -m mcdreforged
成功启动后输入stop
停止服务端运行。
# 转到配置文件的文件夹
cd cd server/config
# 修改配置文件
vi FabricProxy-Lite.toml
将hackEarlySend = false
,改成true
,便于minihud等模组正确渲染结构。
现在将之前保存的Velocity的配置文件的字符串复制过来。
secret = ""
,将字符串填入引号内部。保存退出。
现在,可以启动suivival服务端看能否连接上了
# 转到mcdrs文件夹
cd /root/mcdrs
# 启动MCDR
python3 -m mcdreforged
大功告成
(若不设置上一步的secret
,就会出现如下图所示的错误)
Velocity连接成功提示
Survival服务端连接成功提示
3.3.3 配置Mirror子服务端
我使用了MCDR插件列表中的MirrorServerReforged插件,其Mirror存放在Survival子服务端下。
仓库地址在此。
将这个插件下载到./mcdrs/plugin
目录下。
# 转到./mcdrs/plugin目录
cd /root/mcdrs/plugin
# 下载MirrorServerReforged插件
wget https://github.com/EMUnion/MirrorServerReforged/releases/download/1.0.3/MirrorServerReforged-v1.0.3.mcdr
启动一次MCDR以生成配置文件
# 转到上级目录
cd ..
# 启动MCDR
python3 -m mcdreforged
# 停止运行
stop
编辑MirrorServerReforged配置文件
cd config
vi MirrorServerReforged.json
rcon要打开,便于控制Mirror服务端,配置如下,以便参考
{
"world":[
"world"
],
"command":"python3 -m mcdreforged",
"rcon":{
"enable":true,
"host":"localhost",
"port":25575,
"password":"password"
}
}
保存退出
Mirror子服务端也需要安装FabricProxy-Lite
直接将之前下载的mod和配置文件复制一份就行。
cd ..
# 复制mod
cp server/mods/* Mirror/server/mods/
# 复制配置文件
cp -r server/config Mirror/server/
编辑Mirror子服务端的server.properties
cd Mirror/server
vi server.properties
-
rcon.port=25575
,确保rcon端口是25575。 -
difficulty=easy
可以修改为hard
。 -
max-players=20
可以自行设置最大人数。 -
online-mode=true
,由于之前在Velocity配置文件内设置了"Modern"转发模式,正版服务器可以无需更改。关于此项,请看评论区,感谢 @MrPiper。 -
server-port=25565
,端口按照之前在Velocity配置的端口设置,我设置为30067
。 -
enable-rcon=false
,将其改为true
以启用rcon。 -
rcon.password=
,将之前设置的rcon密码填入。例如:password
。
设置完成,保存退出。
测试是否工作正常
# 回到mcdrs文件夹
cd /root/mcdrs
# 启动survival子服务端
python3 -m mcdreforged
# 转到Velocity文件夹
cd mc
# 启动Velocity代理
bash strat.sh
登录游戏,查看插件是否运行正常
可以输入指令
命令列表
!!msr help - 显示帮助信息
!!msr sync - 同步服务器地图至镜像
!!msr reload - 重载配置文件
!!msr start - 启动镜像服务器
!!msr stop - 关闭镜像服务器(需要开启Rcon)
!!msr init - 初始化镜像服务器(仅MCDR类服务器可用)
!!msr status - 查看镜像服务器状态
以上内容来自msr仓库,点击访问
启动参数参数中内存果然要调大一点,不然启动得慢
运行完美
3.3.4 配置Creative子服务端
Creative子服务端就没那么繁琐了
编辑server.properties
cd /root/mcdrc/server
vi server.properties
-
gamemode=survival
,改为creative
。 -
enable-command-block=false
,可以改为true
,启用命令方块。 -
difficulty=easy
,可以改为hard
,困难模式。 -
max-players=20
,可以更改人数上限。 -
online-mode=true
,是否开启正版验证。关于此项,请看评论区,感谢 @MrPiper。 -
allow-flight=false
,可以改为true
,允许飞行。 -
server-port=25565
,端口改为之前在Velocity配置文件内的端口。如:30068
。 -
level-type=
,这一项可能没有,可以直接在最后一行添加,可以设置为超平坦flat
。
将之前的FabricProxy和配置文件复制一份
cd ~
# 复制mod
cp mcdrs/server/mods/* mcdrc/server/mods/
# 复制配置文件
cp -r mcdrs/server/config mcdrc/server/
测试是否能够切换服务器
大功告成
4.跨服聊天搭建
使用MCDR的ChatBridge插件实现跨服聊天功能。
仓库地址在此。
4.1 服务端环境搭建
事先安装pycryptodome以及colorlog的python包
需要Python 3.6+
# 安装python包
pip3 install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install colorlog -i https://pypi.tuna.tsinghua.edu.cn/simple
4.1.1 配置服务端
下载插件到chatbridge文件夹
# cd到用户文件夹
cd ~
# 新建文件夹,用来存放文件。
mkdir chatbridge
cd chatbridge
# 下载插件
wget https://github.com/TISUnion/ChatBridge/releases/download/v2.2.0/ChatBridge.pyz
第一次运行会生成配置文件
[root@localhost chatbridge]# python3 ChatBridge.pyz server
Configure file not found!
Default example configure generated
Traceback (most recent call last):
File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/root/chatbridge/ChatBridge.pyz/__main__.py", line 4, in <module>
File "/root/chatbridge/ChatBridge.pyz/chatbridge/cli_entry.py", line 43, in main
File "/root/chatbridge/ChatBridge.pyz/chatbridge/cli_entry.py", line 15, in server
File "/root/chatbridge/ChatBridge.pyz/chatbridge/impl/cli/cli_server.py", line 81, in main
File "/root/chatbridge/ChatBridge.pyz/chatbridge/impl/utils.py", line 20, in load_config
FileNotFoundError: ChatBridge_server.json
编辑配置文件
vi ChatBridge_server.json
以下配置供参考
{
"aes_key": "ThisIstheSecret",
"hostname": "localhost",
"port": 30001,
"clients": [
{
"name": "survival",
"password": "survival"
},
{
"name": "mirror",
"password": "mirror"
},
{
"name": "creative",
"password": "creative"
}
],
"show_chat": true,
"log_chat": false
}
保存退出。
使用python3 ChatBridge.pyz server
运行跨服聊天服务端。
4.1.2 配置客户端(以Survival子服务端为例)
由于使用了MCDR,客户端配置很简单。
将插件下载到mcdrs/plugins文件夹下
# 转到plugins文件夹下
cd ~/mcdrs/plugins
# 下载插件
wget https://github.com/TISUnion/ChatBridge/releases/download/v2.2.0/ChatBridge.pyz
# 退回上级目录
cd ..
# 启动MCDR
python3 -m mcdreforged
第一次启动会生成配置文件,需要修改
# 停止Survival子服务端
stop
# 编辑配置文件
vi config/chatbridge/config.json
按照之前的设置服务端的信息修改配置文件。以下供参考。
{
"aes_key": "ThisIstheSecret",
"name": "survival",
"password": "survival",
"server_hostname": "127.0.0.1",
"server_port": 30001,
"debug": false
}
保存退出。
使用python3 -m mcdreforged
启动Survival子服务端。
再把另外两个子服务端也按照上面的步骤配置一遍,测试效果。
完美
可以在各个子服务器文件夹内将python3 -m mcdreforged保存为脚本文件,这样下次启动更方便。
5.插件及模组推荐
经过这么长时间的搭建,终于是可以正常游玩了。但是呢,优化模组以及有趣的插件必不可少。我在这里推荐几项。
5.1 Fabric模组推荐
下载好的模组直接拖入mods文件夹就行
-
Startlight,光照优化,下载网址
-
Concurrent Chunk Management Engine(C^2M引擎),区块加载优化,下载网址
-
Carpet Mod,为你的服务器添加更多功能,不解释,下载网址
-
[PCA]plusls-carpet-addition,Carpet附属,PCA同步协议,用于容器预览(客户端配合Masa Gadget使用),玩家(假人)数据同步等,具体介绍以及下载网址
-
[GCA]gugle-carpet-addition,Carpet附属,用于查看假人背包,假人开服自动上线等功能,具体介绍以及下载网址
-
servux,唯一作用便是为了传递结构,便于在安装了minihud模组的客户端上正确渲染结构。但是使用minihud的史莱姆区块渲染仍然需要种子。下载网址
-
Lithium(锂),原版优化,下载网址
5.2 MCDR插件推荐
下载好的插件放入plugins。请详细阅读Readme,确保安装好需要的python包。
-
QuickBackupM,多槽位备份,回档。仓库
-
Timed QBM,定时触发QBM备份。仓库
-
Minecraft Data API,获得玩家数据的API。仓库
-
Join MOTD,向玩家发送欢迎信息。仓库
-
Here,高亮玩家,显示坐标。仓库
-
Beep,@某人,@ all可作用于所有玩家。仓库
-
DayCountNBT,获取开服时间。仓库
-
Stats Helper,获取玩家信息,计分板。仓库
-
Simple OP,获取op,创造服可用。仓库
x.杂项
说明
以下内容是我从刚开始买来主机装系统,配置完环境,直到能用于正常配置mc服务端的所有过程。如果你是新手,第一次配置服务端,可以仔细阅读。希望对你有所启发。
x.1 安装系统
x.1.1 制作启动盘
准备一个u盘(16G足够),记得把数据备份出来,写盘后数据会全部丢失。
推荐软件:FedoraMediaWriter,使用这个软件制作的linux系统启动盘安装的bug比较少。如果你使用软碟通等软件记得把写入方式改为RAW,否则可能会出现找不到安装源的问题。
打开软件,点击“选择.iso文件”,下一步
点击“选择”,选择你的系统镜像文件
耐心等待
大功告成
注意:windows上无法直接将u盘格式化,请用这个软件将其重置后才能正常使用
x.1.2 开始安装系统
进bios/uefi将u盘设为第一启动项
大多数电脑狂按delete能进bios,某些电脑可能特殊,自行百度。
将"Boot Option #1"和"~ #2"都设置为你的u盘。然后"save & exit"保存退出。
选第一项,开始安装centos stream 8
注意:若选择使用软碟通制作的启动盘,在此处会出现无法进入安装程序的问题。
可以翻到下面,选择中文
键盘可以不用选,汉语和英语键盘布局一样的。
语言支持最好添加一个英文(美国)。
软件选择直接最小安装。无需其他软件。
安装目的地选择时把你的硬盘打上勾,可能会提示分区,可以直接删除全部,系统会帮你自动分区。
root账户和普通账户要设置一下,密码简单的情况下需要点两下完成才能设置成功
设置全部完成后如下图所示,最后点击开始安装
安装完成后重启即可
x.2 配置网络
输入root账号密码登录系统,注意密码输入时不可见
CentOS Stream 8
Kernel 4.18.0-383.e18.x86_64 on an x86_64
localhost login: root
Password:
Last login: Sat Jun 25 11:42:27 on tty1
[root@localhost ~]#
输入nmcli
查看当前网络
nmcli
[root@localhost ~]# nmcli
eno1: unavailable
"Realtek RTL8111/8168/8411"
ethernet (r8169), 50:A1:32:1F:32:D9, hw, mtu 1500
enp1s0: unavailable
"Realtek RTL8111/8168/8411"
ethernet (r8169), 50:A1:32:1F:32:D8, hw, mtu 1500
lo: unmanaged
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.
Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.
显然,我们没有连上任何网络。
由于我这台主机比较新,而众所周知,centos的内核版本比较旧,导致每次主机一开机报错一大片;我的wifi6无线网卡也无法显示。这就需要我们更新内核版本,下一部分会讲到。
照常理来说,连网只要一根网线就行了,可是现在身边既没网线,又没路由器,接下来分享一个应急的办法。
将你的手机和电脑用usb线连起来,我以vivo手机为例:设置
->其他网络与连接
->个人热点
->其他共享方式
->通过USB共享网络
打开开关。当然,其他手机也可以直接在设置里搜索,这里不再赘述。
打开开关后,再次输入nmcli
,会多出一个连接,出现connected to ...
的字样并且变为绿色时,说明已经连上网了。
由于系统对汉字没有支持,所以connected to
后面的字符为方框,我这里用...
代替了
nmcli
[root@localhost ~]# nmcli
enp5s0f3u2: connected to ... 1
"vivo iQOO Neo5"
ethernet (rndis_host), 1E:39:13:6C:48:71, hw, mtu 1500
ip4 default
inet4 192.168.124.143/24
route4 192.168.124.0/24 metric 100
route4 default via 192.168.124.7 metric 100
inet6 fe80:7026:abb5:86b6:13e0/64
route6 fe80::/64 metric 1024
eno1: unavailable
"Realtek RTL8111/8168/8411"
ethernet (r8169), 50:A1:32:1F:32:D9, hw, mtu 1500
enp1s0: unavailable
"Realtek RTL8111/8168/8411"
ethernet (r8169), 50:A1:32:1F:32:D8, hw, mtu 1500
lo: unmanaged
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.
Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.
但是有时候多出来的连接仍然是灰色,不能自动配置网络,那就需要手动配置了
输入nmtui
,打开文本界面(光敏性癫痫警告)
nmtui
打开第一个Edit a connection
,看左边一栏是否有你手机创建的网络连接,若没有,选择右边的Add
(我这里左边有了手机的共享,但是汉字无法显示,只有框框)
有线连接选第二个Ethernet
有线连接名称随意,第二行的设备名不要搞错,我刚刚连手机的是enp5s0f3u2
,也就是说第二行要填刚刚nmcli
命令下方的顶格的名称,例如:eno1
, enp1s0
等等。
下方的设置默认就行,选择OK
返回。再选择Back
返回到最开始的界面。
再选择第二个Activate a connection
选择USB Ethernet
下方的连接,再点击右边的Activate
,激活连接。退出这个页面,已经连上网了。
x.3 升级内核
为了确保系统正常,最重要的是更新驱动,不然开机时的一排排error真是让人“赏心悦目”。这里使用安装ELRepo源,自行编译的方法升级内核,原因是官方的更新慢,无法适用我的主机。而且不能自行选择功能。
x.3.1 下载内核源代码
建议下载stable版的内核源代码
安装一下wget以及tar工具
dnf install wget
dnf install tar
下载内核(后面的链接可自行替换)
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.18.6.tar.xz
若此种方法速度过慢,可以先在主力机上下载好,使用u盘拷贝。下面介绍此种方法。
注意:u盘必须为fat32格式
将文件拷贝进你的u盘,将u盘插进你的linux主机。
创建挂载目录
mkdir /mnt/usb
看存储设备名称
fdisk -l
看最后一行,确定为14.7G的设备,名称为sda1.
挂载u盘
mount /dev/sda1 /mnt/usb
转到挂载目录
cd /mnt/usb
列出文件
ls
[root@localhost usb]# ls
linux-5.18.6.tar.xz 'System Volume Information'
将其拷贝到主机上
cp linux-5.18.6.tar.xz /root/5.18.6.tar.xz
解除目录占用,取消挂载
fuser -k /mnt/usb
umount /dev/sda1
解压文件
cd /root
xz -d 5.18.6.tar.xz
tar -xf 5.18.6.tar
x.3.2 编译前的准备
安装epel源
dnf install epel-release
安装依赖
dnf install gcc make ncurses-devel openssl-devel flex bison elfutils-libelf-devel
安装编译过程中需要的软件
dnf install python39 bc perl
将当前版本配置文件复制到前面解压的内核源代码文件夹内
cd /root/linux-5.18.6
cp /boot/config* .config
然后编辑此配置文件
vi .config
直接在命令模式下输入/CONFIG_SYSTEM_TRUSTED_KEYS
,回车
找到这一行,按i
键变为编辑模式,将引号内"certs/rhel.pem"
清空
这行变为CONFIG_SYSTEM_TRUSTED_KEYS=""
按esc
变为命令模式,输入/CONFIG_DEBUG_INFO_BTF
,查找后将后面的y
改为n
按esc
变为命令模式,输入:wq
保存退出
x.3.3 开始编译
配置文件更改设置
make menuconfig
有许多配置能够自行更改
用enter键切换目录,用空格键选择功能
比如要添加NTFS以及exFAT的支持
File systems --->
DOS/FAT/EXFAT/NT Filesystems --->
记得按Save
后再Exit
编译内核
-j 数字是将编译任务分成多少份,能加快进度。
make -j 32
时间可能需要1到2小时,请耐心等待
安装内核模块
make modules_install
最后安装核心文件
make install
安装完成后输入reboot
重启
启动项第一个应该就是5.18.6版本的内核了
正常启动
跳转到内核源码目录,将内核源代码以及编译后的清理干净。
cd linux*
make clean
x.3.4 连接无线网
现在主机开机后已经不会出现一排排的[error]了,代表驱动已经安装上了,我的无线网卡也显示成功了。
然而,显示的是"plugin missing
"状态,需要一些操作才能联网。
安装NetworkManager-wifi
dnf install NetworkManager-wifi
安装后reboot
重启,wifi网卡应该已经启动,如果未启动执行nmcli r wifi on
开启无线网
配置wifi
可以使用文本编辑界面,简单易用。
nmtui
选第二个Activate a connection
,在Wi-Fi
一栏下面有wifi名称,在要连的的wifi回车,输入密码就行了,连上以后退出。可以输入nmcli
看连接情况。
你也可以使用命令行来连接wifi
#扫描可用于连接wifi
nmcli dev wifi
#添加一个wifi的连接
nmcli dev wifi con “无线网络名称” password “无线网络密码” name “任意连接名称(删除,修改时用)”
#添加成功后查看已创建的wifi连接
nmcli conn
设定静态ip
由于要搭服务器,dhcp最好关掉,ip动态会比较麻烦
可以看一下ip,网关等信息,待会可以直接输入
ip route show
显然,第一个就是网关,后面的是ip
先cd到网络配置文件目录
cd /etc/sysconfig/network-scripts
列出文件
ls
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
ifcfg-Connectify-me ifcfg-eno1 ifcfg-enp1s0 ifcfg-····_1 keys-Connectify-me
可以看到一共有5个配置文件,现在来编辑我连上的wifi,将其改为静态
# 要将配置文件名改为你的
vi ifcfg-Connectify-me
按i
进入编辑模式,将BOOTPROTO=dhcp
改为BOOTPROTO=static
,并在后面添加以下内容
IPADDR= # ip地址
NETMASK= # 子网掩码
GATEWAY= # 网关
DNS1= # DNS1
DNS2= # DNS2
贴上我的配置供参考
按ESC
进入命令模式,:wq
保存退出
可以reboot
重启看是否配置成功。
至此,全部章节结束,现在可以正式开始你的mc之旅了。
感谢你的阅读。
我会将本次用到的文件以及配置好的服务端上传至网盘,各位有需要自取。
感谢名单及参考资料
(按字母顺序排列)
- BiliBili,@春雨尋风,开设我的世界生电服务器之一:总体架构与环境安装
- CSDN,@JY丫丫,tar 批量打包一个文件夹下的多个目录(tar批量打包与解压)
- GitHub,@Alex3236,MCDReforged 文档
- GitHub,@Fallen-Breath,MCDReforged
- mcbbs,@紅葉,[服务器应用] [2022.1.29] 换个 JVM,最高节省43.3%内存,提高36.9%CPU效率
- mcbbs,@贺兰兰,[进阶开服] [2020.12.16][SCT] 跨服端搭建教程 —— 搭建 Waterfall 和 Velocity
- mcbbs,@jinshanha666,[进阶开服] [2021.12.19][进阶向]开一个专业的生电服(持续更新中)