systemd服务将您的Minecraft服务器作为受管理的Linux服务在后台运行。这意味着您可以使用systemctl来启动、停止、重启、检查日志,并在启动时启用它,而不是让服务器在SSH窗口中运行。
本指南适用于您已经拥有SSH访问权限和Minecraft服务器jar的Linux VPS。如果您尚未安装Java或下载Minecraft服务器jar,请先完成这些步骤,然后再返回本指南。
在下面的示例中,Minecraft服务器文件夹是/home/minecraft/server,jar文件名为server.jar。如果您的服务器使用不同的文件夹或jar名称,请更改这些路径。
- 为Minecraft服务器创建一个专用的Linux用户。以自己的用户身份运行服务器比以
root身份运行更安全。sudo useradd -m -r -s /bin/bash minecraft sudo mkdir -p /home/minecraft/server sudo chown -R minecraft:minecraft /home/minecraft/server
- 上传或下载您的Minecraft服务器jar到
/home/minecraft/server。该文件夹应包含jar文件,并在第一次手动运行后,包含eula.txt、server.properties、logs和世界文件夹。
- 在阅读Minecraft EULA后接受它。在
eula.txt中包含eula=true之前,Minecraft将无法正常启动。sudo -u minecraft nano /home/minecraft/server/eula.txt
- 创建一个启动脚本。这将Java命令保存在一个地方,以便systemd服务每次都能运行相同的命令。
sudo nano /home/minecraft/server/start.sh
使用类似这样的命令,根据您的服务器调整RAM和jar名称:
#!/bin/bash cd /home/minecraft/server exec java -Xms2G -Xmx4G -jar server.jar nogui
-Xms是初始RAM分配。-Xmx是最大RAM分配。不要将-Xmx设置为所有VPS内存;为Linux、Java开销、SSH、备份和其他服务留出RAM。
- 使启动脚本可执行并由Minecraft用户拥有。
sudo chmod +x /home/minecraft/server/start.sh sudo chown minecraft:minecraft /home/minecraft/server/start.sh
- 在创建服务之前手动测试启动脚本。在确认启动后,通过Minecraft控制台中的
stop命令或按Ctrl+C停止它。sudo -u minecraft /home/minecraft/server/start.sh
如果此手动测试失败,请在继续之前修复错误。systemd服务不会修复损坏的Java命令、缺少的jar、错误的路径或未接受的EULA。
- 创建systemd服务文件。
sudo nano /etc/systemd/system/minecraft.service
[Unit] Description=Minecraft Server After=network.target [Service] User=minecraft WorkingDirectory=/home/minecraft/server ExecStart=/home/minecraft/server/start.sh Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
User告诉Linux哪个账户运行服务器。WorkingDirectory是Minecraft文件夹。ExecStart是systemd运行的脚本。Restart=on-failure在服务崩溃时重新启动服务。
- 重新加载systemd以便它识别新的服务文件。
sudo systemctl daemon-reload
- 启动Minecraft服务并检查其状态。
sudo systemctl start minecraft sudo systemctl status minecraft --no-pager

- 在您确认它正确启动后,在启动时启用该服务。
sudo systemctl enable minecraft
- 如果您使用防火墙,请在防火墙中打开Minecraft端口。默认的Java版端口是
25565TCP。sudo ufw allow 25565/tcp
在AlmaLinux、Rocky Linux、Oracle Linux或CentOS上使用firewalld,请使用:
sudo firewall-cmd --permanent --add-port=25565/tcp sudo firewall-cmd --reload
有用的服务命令
| 命令 | 功能 |
|---|---|
sudo systemctl start minecraft | 启动Minecraft服务。 |
sudo systemctl stop minecraft | 停止Minecraft服务。 |
sudo systemctl restart minecraft | 重启Minecraft服务。 |
sudo systemctl status minecraft --no-pager | 显示服务是否正在运行或失败。 |
sudo journalctl -u minecraft -f | 跟踪实时服务日志。 |
sudo systemctl disable minecraft | 停止服务在启动时自动启动。 |
故障排除
| 问题 | 检查内容 |
|---|---|
| 服务立即失败 | 检查jar文件名、ExecStart路径、Java安装和eula.txt。 |
| 玩家无法连接 | 检查服务器是否正在运行,端口25565是否打开,以及server.properties是否有正确的端口。 |
| 服务器内存不足 | 降低-Xmx,减少视距,移除重型mod,或升级RAM。 |
| 更改未应用 | 在编辑server.properties或替换jar后重启服务。 |
在替换jar、更改世界、编辑重要配置文件或更新mod服务器之前,请进行备份。
