minimalインストールしたCentOS8にbedrock_server(統合版)をインストールする方法です。(SELinuxは無効化しています)
CentOS7環境へのインストールと比べると、あまりにも簡単で拍子抜けしました。
CentOS7環境でのbedrock_serverのインストール方法は下記のページとなります。
【CentOS7】bedrock_serverをインストール
2019.11.18日現在「Nitendo Switch」および「Xbox One」からは「bedrock_server」に接続することは出来なくて、「Android」「iOS」「Windows 10 Edition」(Java Editionじゃないほう)からは接続できるようです。
※「iOS」と「Windows 10 Edition」からは実際に接続できることを確認済み
事前準備
「bedrock_server」をインストールする前の事前準備です。
unzipインストール
「bedrock_server」は「bedrock_server.zip」といったようにzipで圧縮されているので、ダウンロードしてきたものを解凍するために必要な「unzip」をインストールします。
# dnf -y install unzip
tmuxインストール
今回の手順では端末多重化ソフトである「tmux」を使用して、「bedrock_server」を動作させていくためインストールを行います。
# dnf -y install tmux
ユーザ作成
「bedrock_server」を動作させるためのユーザ「bedrock」を作成します。
# adduser bedrock # passwd bedrock ユーザー bedrock のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
ユーザ名には特に決まりはないので、適当に好きなユーザを作成していただいても問題ありません。
bedrock_server用ポート(19132/udp)開放
「bedrock_server」で使用するUDPの19132番ポートを開放します。
# firewall-cmd --permanent --add-port=19132/udp success # firewall-cmd --reload success
bedrock_serverインストール
Minecraftの公式サイトからbedrock_serverをダウンロードします。
「マインクラフト エンドユーザーライセンス規約およびプライバシーポリシーに同意します。」にチェックを入れると「ダウンロード」ボタンが表示されるので、ボタンを右クリックし「リンクのアドレスをコピー」を選択し、ダウンロード用のURIをコピーしてください。
「su」コマンドで「bedrcok_server」用のユーザになり、インストールするディレクトリを作成し、そこにzipファイルをダウンロードして「unzip」で解凍するという作業を行います。
今回は「bedrock_server」というディレクトリを作成して、そこにダウンロードしていきます。
# su - bedrock $ mkdir bedrock_server $ cd bedrock_server $ curl -L -O https://minecraft.azureedge.net/bin-linux/bedrock-server-1.13.2.0.zip $ unzip bedrock-server-1.13.2.0.zip
解凍したデータの中に「bedrock_server_how_to.html」という、説明書があるので内容を確認しておきましょう。
起動
「bedrock_server」のダウンロードと解凍が完了しましたら、実際に起動をして問題なく動作するのかを確認していきます。
起動方法は、「bedrock_server_how_to.html」にある通り「LD_LIBRARY_PATH=. ./bedrock_server」と実行することで「bedrock_server」を起動させることが出来ます。
$ LD_LIBRARY_PATH=. ./bedrock_server NO LOG FILE! - setting up server logging... [2019-11-15 01:21:33 INFO] Starting Server [2019-11-15 01:21:33 INFO] Version 1.13.2.0 [2019-11-15 01:21:33 INFO] Session ID 3bd46ce5-2706-4dc5-8770-311d6e6488d6 [2019-11-15 01:21:33 INFO] Level Name: Bedrock level [2019-11-15 01:21:33 INFO] Game mode: 0 Survival [2019-11-15 01:21:33 INFO] Difficulty: 1 EASY [2019-11-15 01:21:35 INFO] IPv4 supported, port: 19132 [2019-11-15 01:21:35 INFO] IPv6 supported, port: 19133 [2019-11-15 01:21:35 INFO] IPv4 supported, port: 33795 [2019-11-15 01:21:35 INFO] IPv6 supported, port: 51086 [2019-11-15 01:21:36 INFO] Server started.
正常に起動できたら「Server started.」と表示されます。
動作確認
minecraft(bedrock版)のクライアントから接続できるか確認してください。
bedrock_serverの停止
接続できることが確認できたら「stop」と入力して一度「bedrock_server」を停止させます。
[2019-11-15 01:25:36 INFO] Player connected: tamohiko, xuid: xxxxxxxxxxxxxxxx [2019-11-15 01:26:27 INFO] Player disconnected: tamohiko, xuid: xxxxxxxxxxxxxxxx stop <---- stopと入力 Quit correctly
自動起動設定
「bedrock_server」の自動起動用設定を行っていきます。
メンテナンス用のスクリプト作成
「bedrock_server」の起動や停止を行うためのスクリプトを作成していきます。
今回は起動と停止以外にもバックアップ機能もつけてあります。
$ vi bedrock_script.sh
スクリプト内で設定している変数の説明です。
環境にあわせて変更する箇所があれば適宜変更してください。
変数 | 設定内容 |
---|---|
USERNAME | bedrock_server実行ユーザ設定 |
SESSION_NAME | tumxのセッションに指定する名前を設定 |
BEDROCK_PATH | bedrock_serverがインストールされているディレクトリを設定 |
LD_LIBRARY_PATH | LD_LIBRARY_PATHを設定 |
SERVICE | 実行するbedrock_serverを設定 |
BK_DIR | バックアップしたデータを保管するディレクトリ |
BK_TIME | バックアップを取得した日時 |
FULL_BK_NAME | 完全バックアップで取得したデータにつける名前 |
SIMPLE_BK_NAME | 簡易バックアップで取得したデータにつける名前 |
BK_FILE | 簡易バックアップ対象データ |
BK_GEN | バックアップしたデータの保管数 |
作成するスクリプトは下記のようになります。
[shell]
#!/bin/bash
#
# bedrock_server start/stop/backup script
#
# bedrock_server 実行ユーザ
USERNAME='bedrock'
# session名
SESSION_NAME='bedrock'
# bedrock_serverインストールディレクトリ
BEDROCK_PATH='/home/bedrock/bedrock_server'
# LD_LIBRARY_PATH設定
LD_LIBRARY_PATH="$BEDROCK_PATH"
# 実行する bedrock_server
SERVICE="$BEDROCK_PATH/bedrock_server"
## バックアップ用設定
# バックアップ格納ディレクトリ
BK_DIR="/home/$USERNAME/bedrock_backup"
# バックアップ取得時間
BK_TIME=`date +%Y%m%d-%H%M%S`
# 完全バックアップデータ名
FULL_BK_NAME="$BK_DIR/bedrock_full_backup_${BK_TIME}.tar.gz"
# 簡易パックアップデータ名
SIMPLE_BK_NAME="$BK_DIR/bedrock_simple_backup_${BK_TIME}.tar"
# 簡易バックアップ対象データ
BK_FILE="$BEDROCK_PATH/worlds \
$BEDROCK_PATH/valid_known_packs.json \
$BEDROCK_PATH/permissions.json \
$BEDROCK_PATH/server.properties \
$BEDROCK_PATH/whitelist.json"
# バックアップデータ保存数
BK_GEN="3"
cd $BEDROCK_PATH
if [ ! -d $BK_DIR ]; then
mkdir $BK_DIR
fi
ME=`whoami`
if [ $ME != $USERNAME ]; then
echo "Please run the $USERNAME user."
exit
fi
# 開始処理
start() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "$SERVICE is already running!"
else
echo "Starting $SERVICE..."
tmux new-session -d -s $SESSION_NAME
tmux send-keys -t $SESSION_NAME:0 "LD_LIBRARY_PATH=$LD_LIBRARY_PATH $SERVICE" C-m
fi
}
# 停止処理
stop() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
tmux send-keys -t $SESSION_NAME:0 "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..." C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "stop" C-m
sleep 10
echo "Stopped bedrock_server"
else
echo "$SERVICE is not running!"
exit
fi
while :
do
if
pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
sleep 10
else
tmux kill-session -t $SESSION_NAME
echo "Stoped $SERVICE"
break
fi
done
}
# 簡易バックアップ処理
s_backup() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Backup start minecraft data..."
tmux send-keys -t $SESSION_NAME:0 "save hold" C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save query " C-m
tar cfv $SIMPLE_BK_NAME $BK_FILE
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save resume" C-m
echo "bedrock_server backup compleate!"
gzip -f $SIMPLE_BK_NAME
find $BK_DIR -name "bedrock_simple_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
else
echo "Backup start ..."
gzip -f $HOUR_BK_NAME
find $BK_DIR -name "bedrock_simple_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
fi
}
# 完全バックアップ処理
f_backup() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Full backup start minecraft data..."
tmux send-keys -t $SESSION_NAME:0 "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..." C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save-all" C-m
tmux send-keys -t $SESSION_NAME:0 "stop" C-m
while :
do
if
pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
sleep 10
else
echo "Stopped bedrock_server"
echo "Full Backup start ..."
tar cfvz $FULL_BK_NAME $BEDROCK_PATH
echo "Full Backup compleate!"
find $BK_DIR -name "bedrock_full_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
break
fi
done
echo "Starting $SERVICE..."
tmux send-keys -t $SESSION_NAME:0 "$SERVICE" C-m
else
echo "Full Backup start ..."
tar cfvz $FULL_BK_NAME $BEDROCK_PATH
echo "Full Backup compleate!"
find $BK_DIR -name "bedrock_full_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
fi
}
# 起動状態確認処理
status() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "$SERVICE is already running!"
exit
else
echo "$SERVICE is not running!"
exit
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
s_backup)
s_backup
;;
f_backup)
f_backup
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|s_backup|f_backup|status}"
esac
[/shell]
使用方法
スクリプトを実行する際に「start」「stop」「s_backup」「f_backup」「status」を引数として指定します。
bedrock_script.sh 引数
それぞれの引数説明です。
引数 | 動作 | 説明 |
---|---|---|
start | サーバ起動 | bedrock_serverを起動します |
stop | サーバ停止 | bedrock_serverを停止します |
s_backup | 簡易バックアップ | サーバを起動したままバックアップを実行するため、BK_FILEで指定したデータのみのバックアップとなります |
f_backup | フルバックアップ | bedrock_serverを停止後、インストールディレクトリ丸ごとバックアップをとります |
status | 起動状況確認 | bedrock_serverの起動状況を確認します |
パーミッション設定
bedrock_server用のユーザのみが実行できるように、スクリプトのパーミッションを「744」に設定します。
$ chmod 744 bedrock_script.sh
スクリプト動作確認
作成したスクリプトで「bedrock_server」の起動および停止の動作確認を行っていきます。
起動確認
スクリプトを実行して、正常に「bedrock_server」が起動するか確認していきます。
スクリプトを実行すると「SESSION_NAME」で設定した名前で「tmux」のセッションが作成され、そこで「bedrock_server」が起動されます。
$ sh -x ./bedrock_script.sh start
「-x」オプションをつけてスクリプトを実行することで実行状況が表示されるので、正常に動作しない場合の問題切り分けに役立ててください。
「tmux」のセッションが作成されているかは「tmux ls」コマンドで確認することができます。
$ tmux ls bedrock: 1 windows (created Sun Nov 17 09:07:56 2019) [80x24]
このように「bedrock」セッションが作成されていることが分かります。
仮想端末へ接続(Attach)
「tmux a」と実行することでセッションに接続(Attach)することができるので、正常に「bedrock_server」が起動しているかどうか確認してください。
$ tmux a
「Server started」と表示されて、コマンド入力待ちになっていれば正常に起動されています。
LD_LIBRARY_PATH=/home/bedrock/bedrock_server /home/bedrock/bedrock_server/bedrock_server $ LD_LIBRARY_PATH=/home/bedrock/bedrock_server /home/bedrock/bedrock_server/bedrock_server NO LOG FILE! - setting up server logging... [2019-11-17 09:07:56 INFO] Starting Server [2019-11-17 09:07:56 INFO] Version 1.13.2.0 [2019-11-17 09:07:56 INFO] Session ID 58ab7ea3-2894-40d9-9b59-ae1a84c9eaa3 [2019-11-17 09:07:56 INFO] Level Name: Bedrock level [2019-11-17 09:07:56 INFO] Game mode: 0 Survival [2019-11-17 09:07:56 INFO] Difficulty: 1 EASY [2019-11-17 09:07:59 INFO] IPv4 supported, port: 19132 [2019-11-17 09:07:59 INFO] IPv6 supported, port: 19133 [2019-11-17 09:07:59 INFO] IPv4 supported, port: 38895 [2019-11-17 09:07:59 INFO] IPv6 supported, port: 35883 [2019-11-17 09:08:00 INFO] Server started.
仮想端末から抜ける(Detach)
正常に起動していることが確認できましたら、「Ctrl」+「b」を押下した後に「d」を押下して現在接続しているセッションから抜けて(Detach)ください。
セッションから抜ける(Detach)と[detached]と表示されます。
$ tmux a [detached (from session bedrock)] <--- セッションから切断後に表示される
停止確認
正常に起動することが確認できましたら、停止機能の動作確認を行っていきます。
$ sh -x ./bedrock_script.sh stop
正常に停止すると起動時に作成されたセッションがなくなります。
$ tmux ls no server running on /tmp/tmux-1001/default
「no server running」と表示されているので、何もセッションが起動していないことが分かります。
systemd登録用ファイル作成
自動起動の設定を「systemd」に登録するためのファイル「etc/systemd/system/bedrock_server.service」を作成します。
ファイルの作成は「su」コマンドでrootユーザになって行っていきます。
$ su - # vi /etc/systemd/system/bedrock_server.service
設定説明
「bedrock_server」を動作させるユーザやスクリプトのパスを変更している場合は、下記の部分を適宜読み替えて設定ファイルを作成してください。
変数 | 説明 |
---|---|
User | bedrock_server実行ユーザ |
ExecStart | bedrock_server 起動コマンド |
ExecStop | bedrock_server 停止コマンド |
作成するファイルの内容化下記の通りとなります。
[Unit] Description=Minecraft Bedrock Server After=network.target local-fs.target [Service] Type=forking User=bedrock ExecStart=/home/bedrock/bedrock_server/bedrock_script.sh start ExecStop=/home/bedrock/bedrock_server/bedrock_script.sh stop [Install] WantedBy=multi-user.target
自動起動設定
systemd登録用のファイルの作成が終わりましたら、「systemctl enable」コマンドで自動起動の登録を行います。
# systemctl enable bedrock_server.service
動作確認
自動起動の設定が終わりましたら、実際にサーバを再起動して「bedrock_server」が自動的に起動してくるか確認をしてください。
問題なく起動してくればインストール作業は完了となります。
自動起動しない場合
自動起動がうまくいかない場合は「systemctl status bedrock_server」とかでログを表示させてみると、上手く動作しない原因がわかるかもしれません。
コメント