如何在Linux VPS上将Minecraft服务器作为systemd服务运行

systemd服务将您的Minecraft服务器作为受管理的Linux服务在后台运行。这意味着您可以使用systemctl来启动、停止、重启、检查日志,并在启动时启用它,而不是让服务器在SSH窗口中运行。

本指南适用于您已经拥有SSH访问权限和Minecraft服务器jar的Linux VPS。如果您尚未安装Java或下载Minecraft服务器jar,请先完成这些步骤,然后再返回本指南。

在下面的示例中,Minecraft服务器文件夹是/home/minecraft/server,jar文件名为server.jar。如果您的服务器使用不同的文件夹或jar名称,请更改这些路径。

  1. 为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
  2. 上传或下载您的Minecraft服务器jar到/home/minecraft/server。该文件夹应包含jar文件,并在第一次手动运行后,包含eula.txtserver.propertieslogs和世界文件夹。

    Linux终端显示示例Minecraft服务器文件夹内容

  3. 在阅读Minecraft EULA后接受它。在eula.txt中包含eula=true之前,Minecraft将无法正常启动。
    sudo -u minecraft nano /home/minecraft/server/eula.txt
  4. 创建一个启动脚本。这将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。

    Linux终端显示Minecraft start.sh脚本

  5. 使启动脚本可执行并由Minecraft用户拥有。
    sudo chmod +x /home/minecraft/server/start.sh
    sudo chown minecraft:minecraft /home/minecraft/server/start.sh
  6. 在创建服务之前手动测试启动脚本。在确认启动后,通过Minecraft控制台中的stop命令或按Ctrl+C停止它。
    sudo -u minecraft /home/minecraft/server/start.sh

    如果此手动测试失败,请在继续之前修复错误。systemd服务不会修复损坏的Java命令、缺少的jar、错误的路径或未接受的EULA。

  7. 创建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在服务崩溃时重新启动服务。

    Linux终端显示Minecraft systemd服务文件

  8. 重新加载systemd以便它识别新的服务文件。
    sudo systemctl daemon-reload
  9. 启动Minecraft服务并检查其状态。
    sudo systemctl start minecraft
    sudo systemctl status minecraft --no-pager

    Linux终端显示Minecraft服务的systemctl状态

  10. 在您确认它正确启动后,在启动时启用该服务。
    sudo systemctl enable minecraft
  11. 如果您使用防火墙,请在防火墙中打开Minecraft端口。默认的Java版端口是25565 TCP。
    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服务器之前,请进行备份。

  • 0 用戶發現這個有用
這篇文章有幫助嗎?

相關文章

如何使用SSH连接到Linux VPS

SSH是管理Linux VPS的常用方式。它为您提供服务器上的终端,以便您可以安装软件、编辑文件、检查日志、重启服务和运行游戏服务器命令。...

如何在 Linux VPS 上更新软件包

保持软件包更新有助于修补安全问题,并保持服务器工具的兼容性。如果 VPS 托管游戏服务器、数据库、面板、机器人或实时网站,请在维护窗口期间运行更新。 首先通过 SSH 连接:如何通过 SSH...

如何在Linux VPS上创建sudo用户

sudo用户允许您在不以root身份登录的情况下管理Linux VPS。这对于日常管理更安全,并且更容易为其他管理员提供受控访问。...

如何在Linux VPS上保护SSH

SSH是管理Linux VPS的主要方式,因此在服务器用于公共服务之前应进行安全设置。首先添加SSH密钥和sudo用户,然后尽可能减少基于密码的访问。...

如何检查Linux VPS上的磁盘使用情况

磁盘使用问题可能会导致更新、备份、日志、数据库和游戏存档无法正确写入。检查总磁盘使用情况以及哪些文件夹占用了最多空间。 使用SSH连接到VPS。 显示已挂载磁盘的使用情况:df -h...