Edited at

CentOS7 + Systemd でMinecraftサーバーの起動/自動起動/自動再起動

More than 3 years have passed since last update.


はじめに

Minecraftサーバーって急に落ちたりしますよね!?

そのたびにSSHで入って起動し直すのはだるい!

デーモン化はどうしてますか?

Screen??

もっといい方法がありますよ! :innocent:

簡単にMinecraftサーバーをいい感じに運用できるようにする方法を紹介します。


Systemdとは?

今回Systemdというものを使ってMinecraftサーバーを起動するようにします。

Systemdは簡単にいうとLinuxを起動するための仕組みです。

デーモン化や急に落ちた時の自動再起動、OS立ち上げた時の自動起動、ログ記録なんでもよろしくやってくれます。

CentOS 7から使えるようになっています。


Minecraftサーバーの構築

CentOS 7でのMinecraftサーバーの構築はこちらの記事を参考にしてください。

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


起動スクリプト作成

/home/minecraft/minecraft/bootに起動用のスクリプトを作成します。

minecraftユーザーで作業してください。

vi ~/minecraft/boot

スクリプトの中身は次のようになります。たった1行です!

ヒープメモリのサイズを環境変数で指定できるようになっています。


~/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

中身はこんな感じ。わかりやすいですね!


~/minecraft/environments

# ヒープメモリの初期サイズ

XMS_SIZE=1024M

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


以降はここを書き換えるとメモリサイズを調整することができます。


unitファイル作成

最後にSystemdのUnitファイルというものを作成します。

これはrootユーザーで作業してください。

vi /etc/systemd/system/minecraft_server.service

中身はこんな感じになります。

詳しくは説明しませんが単純なのでなんとな〜くわかっていただけるかと思います。

Restart=alwaysが落ちたら自動で再起動するオプションです。


/etc/systemd/system/minecraft_server.service

[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

OSが起動した時に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ライフを!:bomb: