CentOSでMinecraftサーバを

ちょっとしたサービスを提供するのにVPSを! という要望を稀によく頂きます。 NCE Web担当神凪です。
今回割と珍しく、Minecraftサーバを構築したいという相談を受けましたので、構築メモです。

ご依頼主はご自身の構成MODを持ち込んでいますので、今回利用させてもらうFTBとは手順が異なりますが、概ねこの通りに進めることは可能です。
FTB、便利ですね。

目標

  • Minecraftサーバを立ち上げる!
  • 今回はFTB Serverを利用させて頂きました。

環境

  • CentOS7

準備

手順

Javaのインストール

MinecraftはJAVAベースで動作するため、JAVAは必須です。

yum install java

java -versionでバージョン表示されればOK。

FTB(Minecraft)サーバのインストール

  1. FTB経由で好みのパッケージからサーバ版をダウンロードします。今回はFTBContinuumServerというパッケージを使用しました。
    ダウンロードしたパッケージはSCP等でサーバに転送しておきましょう。
  2. 以下のコマンドでパッケージを展開します。
mkdir /opt/FTB
mv FTBContinuumServer.zip /opt/FTB
cd /opt/FTB
unzip FTBContinuumServer.zip
  1. 起動シェルに実行パーミッションを設定します。
chmod +x /opt/FTB/settings.sh
chmod +x /opt/FTB/ServerStart.sh

FTBの設定

一旦何も考えずにServerStart.shを実行します。
こうすることで必要になるModパッケージがダウンロードされ、eula.txtが準備されます。
EULAに合意してから再度ServerStart.shを実行します。

/opt/FTB/ServerStart.sh
sed -i -e ’s/eula=false/eula=true/g’ eula.txt
/opt/FTB/ServerStart.sh

※ シングルクォートが大文字になっています。

これでMinecraftサーバへ接続可能になります。

FTBをサービス化しよう

とはいうものの、コンソールもしくはSSHでServerStart.shを実行しているときだけしかMinecraftサーバが起動していません。これでは多少不便です。
ですので、FTBサーバをサービス化してしまいましょう。

Unit定義ファイルの準備

まずはUnit定義ファイルを作成します。

vi /etc/systemd/system/ftb.service

中身はこんな感じ。

[Unit]
Description = FTB Continuum Server

[Service]
ExecStart = /opt/FTB/ServerStart.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

ExecStartに実行したいコマンドを書きます。
Restart = always はプロセスやサーバが不意に落ちた時に自動再起動するモードです。

サービスとして認識されたか確認

systemctl list-unit-files –type=serviceの出力に現れればOKです。

systemctl list-unit-files --type=service | grep ftb

enableそしてstart!

ここまでくれば、後はいつものように普通のサービスとして扱えます。

systemctl enable ftb
systemctl start ftb

ステータス確認

# systemctl status ftb
● ftb.service - FTB Continuum Server
   Loaded: loaded (/etc/systemd/system/ftb.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2018-07-09 16:52:47 JST; 26s ago
 Main PID: 64865 (ServerStart.sh)
   CGroup: /system.slice/ftb.service
           tq64865 /bin/sh /opt/FTB/ServerStart.sh
           mq64869 java -server -Xmx2048M -XX:+UseParNewGC -XX:+CMSIncrementa...

サーバ再起動

念のため、サーバを再起動して自動起動するか確認しましょう。

reboot

自動起動してくればOK!

まとめ

従来、コマンドサービス化としてsupervisordやdaemontoolsなどが代表的でした。
しかしsystemdでこれらを行うことでプロセスツリー全体のリソース管理、ログ管理等ができるようになり、システム全体として整合性が取れるようになります。
今回はFTBで行いましたが、コマンドをサービス化する際は少し気にすると良いかもしれません。

Special Thanks!

CloudGarage Dev Assist Program協力のもと、NCEでSandbox、実験場を作成しました。
試せるシステムに限りはありますが、ぜひお試しくださいませ。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください