61
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-09-13

はじめに

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:

61
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?