手动搭建MineCraft服务器
|Word Count:1.2k|Reading Time:5mins|Post Views:
原先使用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
|
插件安装
- 创建
plugins 文件夹
- 下载插件jar文件放入
- 重启服务器
常见问题
内存不足
1 2
| Error: Could not create the Java Virtual Machine # 解决方案:减少 `-Xmx` 参数值
|
端口被占用
解决方案:更改 server.properties 中的端口号
玩家无法连接
- 检查防火墙设置
- 确认端口转发正确
- 检查
online-mode 设置
安全建议
- 定期更新:及时更新服务器版本
- 设置白名单:在
server.properties 中设置 white-list=true,编辑 whitelist.json
- 禁用OP滥用:谨慎给予OP权限
- 定期备份:每日自动备份世界文件
检查清单
- Java已安装
- server.jar已下载
- eula.txt已设为true
- 端口25565已开放
- 防火墙已配置
- 启动脚本已创建
这样您就拥有了一个完全手动搭建的Minecraft服务器。如需进一步优化,可以根据玩家数量调整内存分配和服务器参数。