Minecraftサーバーをsystemdを使用して、自動再起動を行う方法を紹介します。
スポンサーリンク
【非推奨】screenをインストールする
screenは、仮想端末(別ウィンドウ)を作成できるソフトウェアです。
今回は、screenを用いたスクリプトを作成するため、インストールしていきます。
Ubuntuの場合
コマンド
apt-get install screenCentOSの場合
コマンド
yum install screen起動用スクリプトを作成
スクリプトを作成する
/opt/minecraft/server/に、下記内容のstart.shを作成します。
start.sh
#!/bin/bash
#ウィンドウの名前
SCREEN_NAME='minecraft'
tmux new -s $SCREEN_NAME -d 'java -server -Dfile.encoding=UTF-8 -Xms8G -Xmx8G -jar /opt/minecraft/server/server.jar'実行権限を付与する
作成したスクリプトに実行権限を必ず付与してください。
コマンド
chmod +x start.shMinecraftサーバーのコンソール表示
起動用スクリプトで起動した、Minecraftサーバーのコンソールを表示する場合は、下記コマンドを実行します。
コマンド
tmux a -t minecraftコンソールを閉じる場合は、下記のキー操作をします。
キー操作
Ctrl + b を押下後に d停止用スクリプトを作成
スクリプトを作成する
/opt/minecraft/server/に、下記内容のstop.shを作成します。
stop.sh
#!/bin/bash
# ウィンドウの名前
SCREEN_NAME='minecraft'
if [ -n "$(tmux list-sessions | grep -o "${SCREEN_NAME}")" ]; then
# 停止開始
echo [`date '+%F %T'`] 'server stop script start'
# サーバー内にアナウンス
tmux send-keys -t $SCREEN_NAME "say 30秒後にサーバーを停止します" ENTER
sleep 30s
# セーブコマンド発行
tmux send-keys -t $SCREEN_NAME "save-all" ENTER
sleep 5s
# 停止コマンド発行
tmux send-keys -t $SCREEN_NAME "stop" ENTER
#停止実行待機
sleep 30s
else
echo [`date '+%F %T'`] 'server is not runnning'
fi実行権限を付与する
作成したスクリプトに実行権限を必ず付与してください。
コマンド
chmod +x stop.sh自動制御用ファイル作成
最後に、作成したスクリプトを自動で実行されるように、制御用のファイルを作成します。
rootユーザーで作業してください
制御用ファイル作成
/etc/systemd/system/に、下記内容のminecraft.serviceを作成します。
minecraft.service
[Unit]
Description=Minecraft Server Service
After=network.target
[Service]
Type=forking
# minecraft専用ユーザーがいる場合、書き換える
User=root
# Userと同様、専用グループがある場合は、書き換える
Group=root
# 上記スクリプトを配置した場所
WorkingDirectory=/opt/minecraft/server/
# 起動用スクリプトの場所
ExecStart=/opt/minecraft/server/start.sh
# 停止用スクリプトの場所
ExecStop=/opt/minecraft/server/stop.sh
Restart=always
[Install]
WantedBy=multi-user.targetサービスを再読み込みする
コマンド
systemctl daemon-reload自動制御を有効化
コマンド
systemctl enable minecraft下記メッセージが出たら、自動起動が有効化成功
Created symlink /etc/systemd/system/multi-user.target.wants/minecraft.service → /etc/systemd/system/minecraft.service.
状態確認
コマンド
systemctl status minecraft下記のように、Loaded: loadedになっていれば成功です。
また、念のためサーバーを再起動して、動作しているか確認してください。
● minecraft.service - Minecraft Server Service
Loaded: loaded (/etc/systemd/system/minecraft.service; enabled; vendor preset: enabled)
Active: inactive (dead)
スポンサーリンク

