自己的服务器搭建时间也有一年了,在此记录一下搭建的过程,以防之后忘记。
- 操作系统:Ubuntu 16.04 LTS
- Minecraft 版本:1.16.5
- Java 版本 1.8
1.17 以上 mc 需要 java17 及以上版本,部分 1.13-1.16 插件对于 java 也有特殊要求,请自行确定安装版本
# 安装 java
由于 Minecraft 高版本特有的渣优化,渣机建议使用 openj9 的 JVM,能降低内存的占用,但兼容性和稳定性可能会存在一定的问题
如果服务器质量较好,则建议选择 hotspot 的 JVM,能提供更加稳定的服务
# hotspot 版本
由于 openjdk 默认使用 hotspot,所以直接进行安装即可
sudo apt install openjdk-8-jdk |
# openj9 版本
可以去 IBM Semeru Runtime 官网下载符合对应机器和系统的 jre 或 jdk
https://developer.ibm.com/languages/java/semeru-runtimes/downloads/
如果下载速度较慢,可以选择清华镜像进行下载
https://mirrors.tuna.tsinghua.edu.cn/github-release/ibmruntimes/
本人下载的版本为
https://mirrors.tuna.tsinghua.edu.cn/github-release/ibmruntimes/semeru8-binaries/LatestRelease/ibm-semeru-open-jre_x64_linux_8u332b09_openj9-0.32.0.tar.gz
下载到的 tar 包解压后放入服务器任意位置,并记住 bin 文件夹下 java 对应的路径
本人的 java 文件路径为 /var/jre/jdk8u332-b09-jre/bin/java
运行以下命令进行软连接,注意最后的路径为 java 文件的路径
sudo update-alternatives --install /usr/bin/java java /var/jre/jdk8u332-b09-jre/bin/java 200 |
运行成功提示
update-alternatives: using /var/jre/jdk8u332-b09-jre/bin/java to provide /usr/bin/java (java) in auto mode |
运行以下命令测试 java 是否成功安装
java -version |
如果出现了以下报错
root@Ubuntu:~# java -version | |
-bash: /usr/bin/java: Permission denied |
此时说明解压后的文件没有运行权限,为文件增加权限
sudo chmod 755 -R /var/jre/jdk8u332-b09-jre |
再次运行,如果出现了 java 版本则说明安装成功
root@Ubuntu:~# java -version | |
openjdk version "1.8.0_332" | |
IBM Semeru Runtime Open Edition (build 1.8.0_332-b09) | |
Eclipse OpenJ9 VM (build openj9-0.32.0, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20220422_370 (JIT enabled, AOT enabled) | |
OpenJ9 - 9a84ec34e | |
OMR - ab24b6666 | |
JCL - 0b8b8af39a based on jdk8u332-b09) |
# 安装 git
运行如下命令
sudo apt-get update | |
sudo apt install git | |
git --version |
如果出现了 git 版本则说明安装成功
root@Ubuntu:~# git --version | |
git version 2.7.4 |
# 构建 spigot
由于 log4j 的漏洞存在,所以非常不建议使用 2021-12 月以前构建出的 spigot 服务器 jar 包
进入 spigot 官网下载 BuildTools.jar
https://hub.spigotmc.org/jenkins/job/BuildTools/
运行如下代码进行构建
java -jar BuildTools.jar --rev 1.16.5 |
如果卡在如下环节,可以将手动进入该网站下载 server.jar
,重命名为 minecraft_server.[对应版本号].jar
后放在 work 文件夹下,并重新构建
Starting download of https://launcher.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar |
如果一切顺利,则构建成功后会显示如下信息,此时除了 spigot-[对应版本号].jar
外其他文件均可删除
[INFO] ------------------------------------------------------------------------ | |
[INFO] Reactor Summary: | |
[INFO] | |
[INFO] Spigot-API 1.16.5-R0.1-SNAPSHOT .................... SUCCESS [ 12.795 s] | |
[INFO] Spigot-Parent dev-SNAPSHOT ......................... SUCCESS [ 0.018 s] | |
[INFO] Spigot 1.16.5-R0.1-SNAPSHOT ........................ SUCCESS [ 46.675 s] | |
[INFO] ------------------------------------------------------------------------ | |
[INFO] BUILD SUCCESS | |
[INFO] ------------------------------------------------------------------------ | |
[INFO] Total time: 59.643 s | |
[INFO] Finished at: 2022-07-01T12:59:46+08:00 | |
[INFO] ----------------------------------------------------------------------- | |
Success! Everything completed successfully. Copying final .jar files now. | |
Copying spigot-1.16.5-R0.1-SNAPSHOT.jar to /opt/test_spigot/./spigot-1.16.5.jar | |
- Saved as ./spigot-1.16.5.jar |
# 服务器初始化
在 jar 包同级目录下新建 start.sh
文件,在文件内输入
java -Xmx[堆最大大小] -Xms[堆初始大小] -jar [构建出的jar包名字] nogui |
关于启动参数的配置这里不再赘述,请根据自己的配置自行调节
为该文件增加权限后运行该文件
sudo chmod +x start.sh | |
./start.sh |
第一次运行会显示如下错误
[13:06:00] [main/ERROR]: Failed to load properties from file: server.properties | |
[13:06:00] [main/WARN]: Failed to load eula.txt | |
[13:06:00] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info |
此时可以发现同级目录下新增了许多文件。将 eula.txt
文件中最后一句 eula=false
修改为 eula=true
,并重新运行该文件
./start.sh |
等待地图生成完毕,如果出现以下信息,则说明开服成功
[13:08:43] [Server thread/INFO]: Done (91.480s)! For help, type "help" |
如果出现了以下警告信息
[13:08:48] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 5097ms or 101 ticks behind |
则说明了服务器配置较差,开服初期 tps 较低,待地图加载完毕后 tps 将会恢复正常
# 安装 screen
若使用 ssh 远程连接服务器,则在关闭连接后服务器也会自动关闭,此时需要 screen 让服务器能在后台持续运行
运行如下命令安装 screen
sudo apt install screen |
创建一个 screen
screen -S [screen的名字] |
在 screen 内部和之前一样运行 sh 文件进行开服,唯一不同的是当关闭连接后服务器将仍然在后台运行
重新进入该 screen
screen -r [screen的名字] |
# 后续的配置
bukkit.yml
和 spigot.yml
多用于服务器调优,这里不再赘述
server.properties
中几个重要的配置:
- gamemode 游戏模式
- difficulty 游戏难度
- pvp 是否允许 pvp
- max-player 最大玩家数量
- server-port 服务器端口
- 如果是私服,不建议使用默认 25565 端口,防止有陌生人扫 IP 进入服务器
- view-distance 服务器视距
- 过大会造成玩家进入和重生时的卡顿,如果服务器带宽不足建议调整为 6 或者更低
- online-mode 正版验证
- 建议开启
- motd 服务器简介