原先使用MCManager部署的我的世界服务器需要重新刷一下新出的系统,所以就借机备份重新手动部署,体会一下原始的Minecraft是如何运行起来的。

2025.06 陕西·西安 秦汉通航的医疗救援直升机

我将为您详细介绍如何手动搭建Java版Minecraft服务器(不借助一键安装工具)。以下是完整步骤:

环境准备

部署JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 查看系统版本
cat /etc/rocky-release
uname -r

# 检查是否已安装Java
java -version
which java

# 检查已安装的Java包
rpm -qa | grep -i java
rpm -qa | grep -i jdk

# 卸载OpenJDK(如果需要)
# dnf remove -y java-* openjdk-* jdk-*

# 部署Oracle版本Java,手动下载官方LTS长期支持版JDK
rpm -Uvh jdk-21_linux-x64_bin.rpm

# 部署OpenJDK版本Java
dnf install -y java-21-openjdk.x86_64

# 验证安装
java -version
javac -version

# 检查Java位置
which java
readlink -f $(which java)

# 检查JAVA_HOME
echo $JAVA_HOME

创建目录

1
2
3
4
5
6
# 创建用户以及用户组
useradd minecraft

# 创建目录
mkdir /opt/Minecraft
cd /opt/Minecraft

服务器搭建

下载服务端

1
2
3
4
5
6
# 示例:下载1.20.4版本
# 下载PaperMC版本服务端文件
wget https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/445/downloads/paper-1.20.4-445.jar

# 重命名为server.jar替换原版
mv paper-1.20.4-445.jar server.jar

首次运行生成文件

1
2
# 首次运行(会失败,但生成必要文件)
java -Xmx1024M -Xms1024M -jar server.jar nogui

接受EULA协议

1
2
# 编辑生成的 `eula.txt` 文件properties,将 false 改为 true
eula=true

基本配置

1
2
3
4
5
6
7
8
# 服务器设置,编辑 `server.properties`(关键配置)
server-port=25565
max-players=20
online-mode=false # 正版验证,离线服务器改为false
motd=My Minecraft Server
difficulty=normal
gamemode=survival
level-seed=your_seed_here

创建相关脚本

1
2
3
4
5
6
7
8
9
# 创建启动脚本
touch ./start.sh
tee >./start.sh <<EOF
#!/bin/bash
java -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar nogui
EOF

# 赋予执行权限
chmod +x start.sh

优化配置

配置world边界

1
2
# 为防止地图过大,在server.properties中添加
max-world-size=10000

性能优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# /opt/minecraft/server.properties 性能优化
# 网络设置
network-compression-threshold=256
rate-limit=0

# 实体和区块
view-distance=8
simulation-distance=6
max-chained-neighbor-updates=1000000
max-auto-save-chunks-per-tick=8

# 实体生成
spawn-monsters=true
spawn-animals=true
spawn-npcs=true

防火墙设置

1
2
3
4
5
# 启动防火墙并配置端口
systemctl enable --now firewall-cmd
firewall-cmd --permanent --add-port=25565/tcp
firewall-cmd --permanent --add-port=25565/udp
firewall-cmd --reload

日常管理

配置启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 创建service文件
tee > /etc/systemd/system/minecraft.service <<EOF
[Unit]
Description=Minecraft Server (PaperMC 1.20.4)
Documentation=https://papermc.io/
Wants=network-online.target
After=network-online.target
RequiresMountsFor=/opt/Minecraft

[Service]
# 用户和组配置
User=minecraft
Group=minecraft

# 工作目录
WorkingDirectory=/opt/Minecraft

# 服务类型 - 使用 forking 以便于控制
Type=forking

# 进程管理
PIDFile=/opt/minecraft/minecraft.pid
RemainAfterExit=yes
SuccessExitStatus=0 143
KillMode=process
KillSignal=SIGINT
SendSIGKILL=yes
SendSIGHUP=no

# 启动命令
ExecStart=/usr/bin/bash /opt/Minecraft/start.sh

# 标准输出和错误输出
StandardOutput=append:/var/log/Minecraft/server.log
StandardError=append:/var/log/Minecraft/error.log
SyslogIdentifier=Minecraft

# 重启策略
Restart=on-failure
RestartSec=30s
StartLimitInterval=300
StartLimitBurst=5
StartLimitAction=reboot-force

# 超时设置
TimeoutStartSec=300
TimeoutStopSec=120

# 进程挂起检测
WatchdogSec=60

[Install]
WantedBy=multi-user.target
EOF

# 拉起服务
systemctl daemon-reload
systemctl enable --now minecraft.service

常用控制台命令

1
2
3
4
5
6
# 游戏内或控制台可用
op <玩家名> # 给予管理员权限
ban <玩家名> # 封禁玩家
kick <玩家名> # 踢出玩家
save-all # 立即保存
stop # 安全关闭服务器

常用管理命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 启动服务
systemctl start minecraft

# 停止服务
systemctl stop minecraft

# 重启服务
systemctl restart minecraft

# 查看状态
systemctl status minecraft

# 查看日志
journalctl -u minecraft -f

# 实时日志
tail -f /var/log/minecraft/server.log

备份脚本

Linux备份脚本 (backup.sh):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/path/to/backups"
SERVER_DIR="/path/to/minecraft-server"

# 暂停自动保存
echo "save-off" >> $SERVER_DIR/server-console.log
echo "save-all" >> $SERVER_DIR/server-console.log
sleep 5

# 备份世界文件夹
tar -czf $BACKUP_DIR/world_backup_$DATE.tar.gz $SERVER_DIR/world/

# 恢复自动保存
echo "save-on" >> $SERVER_DIR/server-console.log

插件安装

  1. 创建 plugins 文件夹
  2. 下载插件jar文件放入
  3. 重启服务器

常见问题

内存不足

1
2
Error: Could not create the Java Virtual Machine
# 解决方案:减少 `-Xmx` 参数值

端口被占用

1
FAILED TO BIND TO PORT!

解决方案:更改 server.properties 中的端口号

玩家无法连接

  • 检查防火墙设置
  • 确认端口转发正确
  • 检查 online-mode 设置

安全建议

  1. 定期更新:及时更新服务器版本
  2. 设置白名单:在 server.properties 中设置 white-list=true,编辑 whitelist.json
  3. 禁用OP滥用:谨慎给予OP权限
  4. 定期备份:每日自动备份世界文件

检查清单

  • Java已安装
  • server.jar已下载
  • eula.txt已设为true
  • 端口25565已开放
  • 防火墙已配置
  • 启动脚本已创建

这样您就拥有了一个完全手动搭建的Minecraft服务器。如需进一步优化,可以根据玩家数量调整内存分配和服务器参数。