在CentOS7 + Systemd中启动Minecraft服务器/自动启动/自动重新启动

首先

Minecraft服务器会突然崩溃对吗?
每次都要通过SSH重新登录并重新启动太烦人了!

您怎么将“デーモン化”翻译成中文?是屏幕吗?

还有更好的方法!

我将介绍一种能够轻松有效地运营Minecraft服务器的方法。

Systemd 是什么?

这次我们将使用Systemd来启动Minecraft服务器。
简单来说,Systemd是用于启动Linux的机制。
它可以实现守护进程、自动重新启动服务器、系统启动时自动启动,并可以记录日志等。

CentOS 7 已经可以使用了。

搭建Minecraft服务器

请参考这篇文章来搭建CentOS 7上的Minecraft服务器。

    • IDCFクラウドでMinecraftサーバを構築しよう!

 

    さくらのVPSでminecraftマルチプレイヤサーバを構築 OSインストール

前提是在Minecraft用户的主目录下有一个jar文件,并且假设通过Minecraft用户启动服务器。

[minecraft@mctest ~]$ id
uid=1000(minecraft) gid=1000(minecraft) groups=1000(minecraft)
[minecraft@mctest ~]$ tree .
.
└── minecraft
    ├── minecraft_server.1.8.8.jar
    └── minecraft_server.jar

1 directory, 2 files

创建启动脚本

请使用minecraft用户创建一个启动脚本,路径为/home/minecraft/minecraft/boot。

vi ~/minecraft/boot

脚本的内容如下所示。只有一行!可以通过环境变量指定堆内存的大小。

#!/bin/bash

java -Xms$XMS_SIZE -Xmx$XMX_SIZE -jar $HOME/minecraft/minecraft_server.jar nogui

最後,给予此脚本执行权限。

chmod +x ~/minecraft/boot

创建环境变量定义文件

请在/home/minecraft/minecraft/environments路径下创建一个文件来定义堆内存大小的环境变量。请使用minecraft用户进行操作。

vi ~/minecraft/environments

内容如下。非常易懂!

# ヒープメモリの初期サイズ
XMS_SIZE=1024M

# ヒープメモリの最大サイズ
XMX_SIZE=1024M

您可以通过更改此处来调整内存大小。

创建unit文件

最后创建一个名为Systemd的Unit文件。请使用root用户进行操作。

vi /etc/systemd/system/minecraft_server.service

内容会是这样的。
虽然不详细解释,但是因为很简单,我想您大致能明白。
Restart=always是一个选项,如果它崩溃了,会自动重新启动。

[Unit]
Description=Minecraft Server
After=network-online.target

[Service]
ExecStart=/bin/bash /home/minecraft/minecraft/boot
EnvironmentFile=/home/minecraft/minecraft/environments
WorkingDirectory=/home/minecraft/minecraft
Restart=always
User=minecraft
Group=minecraft

[Install]
WantedBy=multi-user.target

当您创建了文件,系统会从Systemd中读取该文件。

systemctl daemon-reload

启用自动启动选项,使得当操作系统启动时,Minecraft服务器也会随之启动。

systemctl enable minecraft_server

启动

马上要启动了!使用systemd可以通过以下命令进行启动。

systemctl start minecraft_server

你可以在下一个页面查看状态。

systemctl status minecraft_server

這樣的感覺

# systemctl status minecraft_server
minecraft_server.service - Minecraft Server
   Loaded: loaded (/etc/systemd/system/minecraft_server.service; enabled)
   Active: active (running) since 日 2015-09-13 15:24:38 JST; 1min 57s ago
 Main PID: 1813 (bash)
   CGroup: /system.slice/minecraft_server.service
           ├─1813 /bin/bash /home/minecraft/minecraft/boot
           └─1814 java -Xms1024M -Xmx1024M -jar /home/minecraft/minecraft/minecraft_server.jar nogui

 9月 13 15:24:43 mctest.cs429idcfcloud.internal bash[1813]: [15:24:43] [Server thread/INFO]: Starting minecraft server version 1.8.8
 9月 13 15:24:43 mctest.cs429idcfcloud.internal bash[1813]: [15:24:43] [Server thread/INFO]: Loading properties
 9月 13 15:24:43 mctest.cs429idcfcloud.internal bash[1813]: [15:24:43] [Server thread/INFO]: Default game type: SURVIVAL
 9月 13 15:24:43 mctest.cs429idcfcloud.internal bash[1813]: [15:24:43] [Server thread/INFO]: Generating keypair
 9月 13 15:24:43 mctest.cs429idcfcloud.internal bash[1813]: [15:24:43] [Server thread/INFO]: Starting Minecraft server on *:25565
 9月 13 15:24:43 mctest.cs429idcfcloud.internal bash[1813]: [15:24:43] [Server thread/INFO]: Using epoll channel type
 9月 13 15:24:43 mctest.cs429idcfcloud.internal bash[1813]: [15:24:43] [Server thread/INFO]: Preparing level "world"
 9月 13 15:24:44 mctest.cs429idcfcloud.internal bash[1813]: [15:24:44] [Server thread/INFO]: Preparing start region for level 0
 9月 13 15:24:45 mctest.cs429idcfcloud.internal bash[1813]: [15:24:45] [Server thread/INFO]: Preparing spawn area: 54%

当结束时,请使用以下命令。

systemctl stop minecraft_server

在最后

就这样吧!祝你度过愉快的Minecraft生活!

bannerAds