适用范围:CentOS Linux 7.x(最常见为最小化安装 / 云服务器)。

0. 你需要准备什么
- 一台 CentOS 7 服务器(建议:2 核 4G 起步;多人/大型地图建议更高)
- 能通过 SSH 登录(root 或具备 sudo 权限的用户)
- 公网 IP(或内网环境可被客户端访问的 IP)
- 你计划运行的 Minecraft 服务器版本:
- Vanilla 官方服务端(本文默认)
- 也可替换为 Paper/Spigot/Fabric/Forge(安装方式类似,替换 jar 即可)
1. 系统基础设置(可选但强烈建议)
1.1 更新系统与基础工具
sudo yum -y update
sudo yum -y install wget curl unzip vim
1.2 校时(避免证书/下载异常、日志时间错乱)
sudo yum -y install chrony
sudo systemctl enable --now chronyd
chronyc tracking
2. 安装 Java(推荐 OpenJDK 17 / 适配新版本 MC)
Minecraft 版本对 Java 版本有要求(大致规律):
- 1.20+ 通常推荐 Java 17
- 老版本(如 1.12)可能只支持 Java 8
2.1 安装 OpenJDK 17
sudo yum -y install java-17-openjdk java-17-openjdk-headless
java -version
如果你的 yum 源没有 OpenJDK 17(部分较老镜像会出现),建议先启用 EPEL 或使用更合适的源;或者安装 OpenJDK 11/8 并选择兼容的 Minecraft 版本。
3. 创建专用用户与目录(安全 + 可维护)
不要用 root 跑游戏服务器。
3.1 创建用户
sudo useradd -r -m -d /opt/minecraft -s /sbin/nologin minecraft
说明:
-r:系统用户-m:创建家目录-d /opt/minecraft:目录统一放在 /opt-s /sbin/nologin:禁止交互登录(更安全)
3.2 创建服务器目录结构
sudo mkdir -p /opt/minecraft/server
sudo chown -R minecraft:minecraft /opt/minecraft
后续所有服务端文件都放在 /opt/minecraft/server。
4. 下载 Minecraft Java 服务端(Vanilla)
官方服务端 jar 需要从 Mojang 官方渠道获取。
由于官方链接会随版本变化,且不同版本下载页结构可能调整,本文给出“通用做法”:
1)先在本地/浏览器找到目标版本的 server.jar 下载链接
2)再在服务器上用 wget/curl 下载
4.1 切换到 minecraft 用户工作目录
sudo -u minecraft -H bash
cd /opt/minecraft/server
4.2 下载 server.jar
将下面的 URL 替换成你要的版本的直链:
wget -O server.jar "https://example.com/path/to/minecraft_server.版本.jar"
下载后建议校验文件存在:
ls -lh
如果你计划使用 Paper/Spigot:
- Paper:下载
paper-xxx.jar,然后命名为server.jar(或在启动脚本里改 jar 名)
退出 minecraft 子 shell(可暂时不退,继续下一步也行):
exit
5. 首次启动:生成配置并接受 EULA
5.1 以 minecraft 用户执行一次启动
sudo -u minecraft -H bash -lc 'cd /opt/minecraft/server && java -Xms1G -Xmx2G -jar server.jar nogui'
首次启动会生成 eula.txt,然后提示你需要同意协议并退出。
5.2 接受 EULA
sudo -u minecraft -H bash -lc "cd /opt/minecraft/server && sed -i 's/eula=false/eula=true/' eula.txt"
cat /opt/minecraft/server/eula.txt
6. 配置 server.properties(常用项)
配置文件:/opt/minecraft/server/server.properties
编辑:
sudo -u minecraft -H vim /opt/minecraft/server/server.properties
常见配置建议:
server-port=25565:默认端口motd=My CentOS7 Minecraft Server:服务器列表显示信息max-players=20:最大人数online-mode=true:正版验证(公网建议 true)white-list=true:开启白名单(强烈建议公网开启)difficulty=easy|normal|hard:难度view-distance=8:视距(越大越吃内存/CPU)
白名单开启后,需在控制台添加玩家:
whitelist add 玩家名
你也可以先不启用白名单,确认能进服后再开启。
7. 配置防火墙与端口放行
Minecraft Java 默认使用 TCP 25565。
7.1 firewalld 放行端口
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
7.2 云厂商安全组
如果你在阿里云/腾讯云/华为云等:
- 还需要在“安全组/防火墙规则”里放行 TCP 25565
8. 使用 systemd 管理:开机自启 + 统一日志
目标:像管理系统服务一样管理 MC:
systemctl start/stop/status minecraft- 服务器重启自动拉起
- 日志走 journald(可
journalctl -u minecraft查看)
8.1 创建启动脚本
创建:/opt/minecraft/server/start.sh
sudo tee /opt/minecraft/server/start.sh > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd /opt/minecraft/server
# 你可以按机器配置调节内存:
# -Xms:最小堆
# -Xmx:最大堆
# 一般建议 Xms 与 Xmx 相同,减少运行时扩容抖动。
JAVA_OPTS=(
-Xms2G
-Xmx2G
-XX:+UseG1GC
-XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200
-XX:+UnlockExperimentalVMOptions
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
)
exec java "${JAVA_OPTS[@]}" -jar server.jar nogui
EOF
sudo chmod +x /opt/minecraft/server/start.sh
sudo chown minecraft:minecraft /opt/minecraft/server/start.sh
内存建议:
- 2G 机器:
-Xmx1G或-Xmx1536M- 4G 机器:
-Xmx2G~-Xmx3G- 不要把所有内存都分给 Java,系统也需要缓存和基础服务内存。
8.2 创建 systemd 服务文件
创建:/etc/systemd/system/minecraft.service
sudo tee /etc/systemd/system/minecraft.service > /dev/null <<'EOF'
[Unit]
Description=Minecraft Java Server
After=network.target
[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/opt/minecraft/server/start.sh
Restart=on-failure
RestartSec=10
# 资源限制(可选)
LimitNOFILE=100000
# 安全加固(可选,若遇到权限/写入问题可先注释掉再排查)
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
ReadWritePaths=/opt/minecraft/server
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
8.3 查看状态与日志
sudo systemctl status minecraft --no-pager
sudo journalctl -u minecraft -f
9. 服务器控制台指令(常用)
通过 journalctl 只能看日志,不能交互输入指令。Vanilla 默认没有“可附着控制台”。常见做法有两种:
方案 A:使用 RCON(推荐:适合远程管理)
1)编辑 server.properties:
enable-rcon=truercon.port=25575rcon.password=强密码
2)防火墙:
- 不要对公网开放 RCON 端口(除非你清楚自己在做什么)
- 若必须用,建议只允许管理机 IP 访问,或通过内网/VPN
3)使用 rcon 客户端(本地电脑)连接执行命令。
方案 B:使用 screen/tmux 启动(简单可交互)
如果你更想“像本地一样输入指令”,可以不使用 systemd,改用 screen / tmux 常驻运行。不过它在开机自启、异常恢复上不如 systemd 规范。
10. 备份与升级(强烈建议)
10.1 关键备份内容
world/、world_nether/、world_the_end/(取决于版本/配置)server.propertieswhitelist.json、ops.json、banned-players.json
示例:手工打包备份
sudo -u minecraft -H bash -lc 'cd /opt/minecraft && tar -czf backup_$(date +%F).tar.gz server'
ls -lh /opt/minecraft/backup_*.tar.gz
10.2 升级服务端 jar
1)停服:
sudo systemctl stop minecraft
2)替换 /opt/minecraft/server/server.jar
3)开服:
sudo systemctl start minecraft
大版本升级前先备份,并阅读对应版本的变更说明。
11. 常见问题排查
11.1 客户端连不上(Connection timed out)
按顺序检查:
- 服务器服务是否在跑:
sudo systemctl status minecraft - 服务端是否监听端口:
sudo ss -lntp | grep 25565 - 防火墙是否放行:
sudo firewall-cmd --list-ports - 云安全组是否放行 TCP 25565
server.properties中server-ip=建议留空(绑定错误会导致不可达)
11.2 内存不足 / 卡顿 / 频繁 GC
- 降低
view-distance - 降低
max-players - 调整
-Xmx,但不要超过物理内存的 60%~75% - 考虑使用 Paper 并做性能配置(如果你允许替换核心)
11.3 “You need to agree to the EULA”
确认 eula.txt 中为:eula=true
11.4 服务启动后马上退出
看日志:
sudo journalctl -u minecraft -n 200 --no-pager
常见原因:
- jar 下载不完整
- Java 版本不兼容
- 内存参数过大导致 OOM
12. 一键快速检查清单(建议收藏)
- Java:
java -version - 服务状态:
sudo systemctl status minecraft --no-pager - 实时日志:
sudo journalctl -u minecraft -f - 端口监听:
sudo ss -lntp | grep 25565 - 防火墙:
sudo firewall-cmd --list-ports
13. 可选增强(不影响基础运行)
- 把世界目录定期备份到对象存储/另一台机器
- 使用 RCON + 管理面板工具(注意安全)
- 使用反向代理/加速不是必须(MC Java 主要走 TCP)


