はじめに
Minecraftサーバーって急に落ちたりしますよね!?
そのたびにSSHで入って起動し直すのはだるい!
デーモン化はどうしてますか?
Screen??
もっといい方法がありますよ!
簡単に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行です!
ヒープメモリのサイズを環境変数で指定できるようになっています。
#!/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
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ライフを!