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 优化性能
相关推荐
youyou-06061 分钟前
AUTOSAR‑COM 常见问题 QA (1)
java·linux·服务器·单片机·汽车
谢亮_vipxieliang4 分钟前
ValidX时间段验证详解:ISO 8601标准与简化格式
java·spring boot·后端·spring·spring cloud·hibernate
Lsetea5 分钟前
Java 请求 HTTPS 报 PKIX path building failed:从证书链到 truststore 的完整排查
java·https·ssl证书·keytool·truststore
蓝桉柒71 小时前
java判断语句
java·开发语言
Zane19941 小时前
String::compareTo凭什么能当参数传?方法引用的四种形式讲透
java·后端
青山木1 小时前
Hot 100 --- 打家劫舍
java·数据结构·算法·leetcode·动态规划
敲代码的嘎仔1 小时前
28届后端开发-百人小厂面试题
java·后端·面试·程序员·秋招·实习·转正
Bs_MoneyMagnet1 小时前
基于springboot+vue的爱心众筹系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·管理系统
名字还没想好☜2 小时前
Java Collectors.groupingBy 进阶:多级分组、下游收集器与统计聚合一次搞定
java·windows·后端·python·spring
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之前端按钮级安全与路由守卫
java·安全·spring