Linux部署我的世界服务器

从 Java 安装到自动重启,手把手教你在 Linux VPS 上跑起一个稳定的 Minecraft Java Edition 服务器。

准备工作

开始之前,确保你有:

  • 运行 Ubuntu 22.04 / Debian 12(或其他主流发行版)的 VPS 或物理机
  • 至少 2 GB RAM(推荐 4 GB 以上),10 GB 以上磁盘空间
  • root 或 sudo 权限
  • 防火墙已开放端口 25565(TCP)

STEP 01 · 安装 Java

Minecraft 1.21+ 需要 Java 21:

bash 复制代码
# 更新包索引
sudo apt update && sudo apt upgrade -y

# 安装 OpenJDK 21
sudo apt install -y openjdk-21-jre-headless

# 验证安装
java -version

版本对照:1.16.5 以下用 Java 8,1.17~1.20.4 用 Java 17,1.20.5+ 用 Java 21。

STEP 02 · 创建专用用户

不建议用 root 直接运行服务器:

bash 复制代码
sudo useradd -m -s /bin/bash minecraft
sudo su - minecraft
mkdir ~/server && cd ~/server

STEP 03 · 下载服务端

三种主流选择:

Vanilla(原版)

bash 复制代码
wget -O server.jar \
  https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar

Paper(推荐,高性能 + 插件支持)

bash 复制代码
wget -O server.jar \
  https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/68/downloads/paper-1.21.1-68.jar

Fabric(模组服务器)

bash 复制代码
wget -O fabric-installer.jar \
  https://maven.fabricmc.net/net/fabricmc/fabric-installer/1.0.1/fabric-installer-1.0.1.jar
java -jar fabric-installer.jar server -mcversion 1.21.1 -downloadMinecraft

STEP 04 · 首次启动与 EULA

vbscript 复制代码
java -Xms1G -Xmx3G -jar server.jar nogui

首次会因未同意 EULA 退出,执行:

ini 复制代码
sed -i 's/eula=false/eula=true/' eula.txt

STEP 05 · 配置 server.properties

常用参数:

参数 默认值 说明

server-port 25565 监听端口 max-players 20 最大玩家数 gamemode survival 游戏模式 difficulty easy 难度 online-mode true 正版验证(离线服设 false) view-distance 10 视距,内存小建议调到 6-8 level-seed (空) 世界种子,留空随机 motd A Minecraft Server 服务器列表描述

STEP 06 · 用 systemd 托管服务

退出 minecraft 用户,回到 sudo 账户,创建服务文件:

bash 复制代码
sudo nano /etc/systemd/system/minecraft.service

写入以下内容:

ini 复制代码
[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/home/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx3G -jar server.jar nogui
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

启用并启动:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable minecraft
sudo systemctl start minecraft
sudo systemctl status minecraft

# 实时查看日志
sudo journalctl -u minecraft -f

STEP 07 · 防火墙配置

ufw(Ubuntu)

bash 复制代码
sudo ufw allow 25565/tcp
sudo ufw reload

firewalld(CentOS/RHEL)

css 复制代码
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --reload

注意:如果用的是云服务器(阿里云、腾讯云等),还需要在控制台的 安全组里手动开放 25565 端口。

STEP 08 · 性能调优(Aikar's Flags)

社区公认的 Minecraft 专用 JVM 参数(以 4G 内存为例):

ruby 复制代码
java -Xms4G -Xmx4G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -jar server.jar nogui

其他建议:

  • 将 view-distance 控制在 8 以内
  • 使用 Paper 代替 Vanilla
  • 安装 Spark 插件监控 TPS
  • 定期用 tar 备份世界文件

STEP 09 · 常用管理命令

bash 复制代码
# 启动 / 停止 / 重启
sudo systemctl start|stop|restart minecraft

# 实时日志
sudo journalctl -u minecraft -f

# 手动备份世界
tar -czf ~/backup-$(date +%Y%m%d).tar.gz ~/server/world

# 查看内存占用
ps aux | grep java

提示:用 systemd 管理时无法直接输入服务器命令,推荐用 tmux 或 通过 mcrcon 工具远程执行 /op 等指令。

总结

  1. 安装 Java 21
  2. 创建专用用户 minecraft
  3. 下载服务端(Paper 首选)
  4. 同意 EULA,配置 server.properties
  5. 用 systemd 托管,开机自启 + 崩溃自动重启
  6. 开放防火墙端口 25565
  7. 使用 Aikar's Flags 优化性能
相关推荐
折哥的程序人生 · 物流技术专研1 小时前
《Java面试85题图解版(二)》进阶深化中篇:Spring核心 + 数据库进阶
java·后端·spring·面试
SamDeepThinking1 小时前
写代码不考虑前后兼容,迟早要还的
java·后端·程序员
亿牛云爬虫专家1 小时前
深度解析:数据采集场景下的 Java 代理技术实战
java·开发语言·数据采集·动态ip·动态代理·代理配置·连接池复用
小小仙。2 小时前
IT自学第四十二天
java·开发语言
java1234_小锋2 小时前
说一下Spring的事务传播行为?
java·数据库·spring
庞轩px2 小时前
第四篇:SpringBoot自动配置——约定大于配置的底层原理
java·spring boot·后端·spring·自动配置·注解开发
不知名的忻2 小时前
Dijkstra算法(朴素版&堆优化版)
java·数据结构·算法··dijkstra算法
苏三说技术2 小时前
美团二面:高并发下如何保证接口幂等性?
java·数据库
yaoxin5211232 小时前
402. Java 文件操作基础 - 读取二进制文件
java·开发语言·python