【CentOS7】bedrock_serverをインストール

Bedrock_server
記事内に広告が含まれています。

Minecraftのbedrock版公式サーバ(1.11.4)をminimalインストールしたCentOS7にインストールした際の手順をまとめましたが、Ubuntuで動作させることを想定しているものなので、CentOS7で動作させるのはかなり手間が掛かりました…

※bedrock_serverは2019年7月1日現在アルファ版(評価用)なので、まだ不具合が発生したり実装されいていな項目などがあると思います。

事前準備

CentOS7でbedrock公式サーバを動作させるには以下の作業が必要になります。

  • OpenSSL 1.1.1 インストール
  • gcc インストール
  • glib インストール

minecraftのbedrockサーバでは、CentOS7で用意されているものより新しいバージョンのものが要求されているので、全てソースからインストールする必要があります。

openssl

bedrockサーバではOpenSSLのライブラリである「libssl.so.1.1」が必要とされるのですが、CentOS7に標準で用意されているOpenSSLのバージョンは「OpenSSL 1.0.2」でライブラリのバージョンが「libssl.so.10」なので、ソースからOpenSSLをインストールします。

ちなみに、CentOS7標準のOpenSSLだけがインストールされているでbedrockサーバを起動しようとすると、下記のようなエラーとなります。

$ LD_LIBRARY_PATH=. ./bedrock_server
./bedrock_server: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

「ldconfig」コマンドで確認すると「libssl.so.1.1」が存在しないことがわかります。

# ldconfig -p  | grep libssl
      libssl3.so (libc6,x86-64) => /lib64/libssl3.so
      libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10

事前準備

ソースからOpenSSLをイストールするためには、「gcc」「perl」「zlib-devel」が必要なのでこれらをはじめにインストールします。

# yum install gcc
# yum install perl
# yum install zlib-devel

インストール

Opensslのソースは「https://www.openssl.org/source/」からダウンロードできるので、今回はopenssl-1.1.1c.tar.gzをダウンロードしてインストールを行っていきます。

# curl -L -O https://www.openssl.org/source/openssl-1.1.1c.tar.gz
# tar xzfv openssl-1.1.1c.tar.gz -C /usr/local/src/
# cd /usr/local/src/openssl-1.1.1c
# ./config --prefix=/usr/local/openssl shared zlib
# make
# make install

ライブラリの追加設定

Opensslをソースからインストールしたあとに、「/etc/ld.so.conf.d/」ディレクトリに「openssl-1.1.1.conf」といったファイルを作成してインストールされたライブラリをシステムに読み込ませる設定を行う必要があります。

# cd /etc/ld.so.conf.d/
# vi openssl-1.1.1.conf

設定内容

インストールしたOpenSSLのライブラリは「/usr/local/openssl/lib」にインストールされているので、そのパスを記述します。

/usr/local/openssl/lib

設定反映

ldconfigコマンドを実行して作成したopenssl-1.1.1.confの内容を反映させます。

# ldconfig
ライブラリの確認

「ldconfig」コマンドで「libssl.so.1.1」が読み込まれているを確認してください。

# ldconfig -p  | grep libssl
        libssl3.so (libc6,x86-64) => /lib64/libssl3.so
        libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10
        libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl/lib/libssl.so.1.1
        libssl.so (libc6,x86-64) => /usr/local/openssl/lib/libssl.so

libstdc++ (gcc)

「bedrock_server」が要求する「libstdc++.so.6」のバージョンは「GLIBCXX_3.4.20」「GLIBCXX_3.4.21」「GLIBCXX_3.4.22」となっていて、CentOS7の標準で用意されている「libstdc++.so.6」はバージョンが古いので要求されているバージョンが存在しません。

$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

このまま「bedrock_server」を起動しても下記のようにエラーとなるので、新しいバージョンの「libstdc++.so.6」を用意する必要があります。

$ LD_LIBRARY_PATH=. ./bedrock_server
./bedrock_server: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./bedrock_server)
./bedrock_server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./bedrock_server)
./bedrock_server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by ./bedrock_server)
./bedrock_server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./bedrock_server)
./bedrock_server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./libCrypto.so)
./bedrock_server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./libCrypto.so)

「libstdc++.so.6」は「gcc」に含まれているので、新しいバージョンの「gcc」をソースからインストールします。

事前準備

「gcc」をソースからインストールするためには「gcc-c++」「wget」「bzip2」が必要になるのでインストールを行っておきます。

# yum install gcc-c++
# yum install wget
# yum install bzip2

gccインストール

今回は「gcc-9.1.0」のソースをダウンロードしてきてインストールを行っていくのですが、この作業はかなり時間がかかります…

※私の環境ではmakeに約30分ほど掛かりました。

「gcc」のソースはGNUのミラーサイト「https://gcc.gnu.org/mirrors.html」からダウンロードするサイトを選択してソースのダウンロードを行ってください。

今回は「gcc-9.1.0」をダウンロードして、インストールを行っていきます。

# curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.1.0/gcc-9.1.0.tar.gz
# curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.1.0/sha512.sum
# sha512sum --check sha512.sum
# tar xzfv gcc-9.1.0.tar.gz -C /usr/local/src
# cd /usr/local/src/gcc-9.1.0/
# ./contrib/download_prerequisites
# mkdir build
# cd build/
# ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --disable-multilib
# make
# make install

※2020.07.07 上記手順で依存ライブラリのダウンロード手順(./contrib/download_prerequisites)が抜けていましたので追記しました。

CentOS7にgccをソースからインストールする手順については下記のページで詳しく解説しているので、興味がありましたら参考にしてみてください。

【CentOS7】gccをソースからインストール
「CentOS7」で用意されてる「gcc」のバージョンは「4.8」と古いものとなっていて、新しいバージョンの「gcc」を使用するためにはソースからコンパイルしインストールする必要がありますので、その手順を説明していきます。事前準備gccとg

ライブラリの追加設定

ソースから「gcc」のインストールを行っても、そのままでは新しいライブラリはシステムに反映されません。

ですので、「/etc/ld.so.conf.d/」ディレクトリに「gcc-9.1.0.conf」といったファイルを作成して、インストールされたライブラリをシステムに読み込ませる設定を行います。

# cd /etc/ld.so.conf.d/
# vi gcc-9.1.0.conf

設定内容

インストールした「gcc」のライブラリは、「/usr/local/lib64」にインストールされているのでそのパスを記述します。

/usr/local/lib64

設定反映

「ldconfig」コマンドを実行して作成した「gcc-9.1.0.conf」の内容を反映させます。

# ldconfig
ライブラリの確認
# ldconfig -p | grep libstdc++.so.6
    libstdc++.so.6 (libc6,x86-64) => /usr/local/lib64/libstdc++.so.6
    libstdc++.so.6 (libc6,x86-64) => /lib64/libstdc++.so.6

インストールされた「/usr/local/lib64/libstdc++.so.6」に「bedrock_server」で必要な「GLIBCXX_3.4.20」「GLIBCXX_3.4.21」「GLIBCXX_3.4.22」が含まれているか確認してください。

# strings /usr/local/lib64/libstdc++.so.6 | grep ^GLIBCXX_3.4.2 | sort | uniq
GLIBCXX_3.4.2
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26

libm (glibc)

「bedrock_server」では「libm.so.6」のバージョンもCentOS7で標準に用意されているバージョンよりも新しいものが要求されます。

$ LD_LIBRARY_PATH=. ./bedrock_server
./bedrock_server: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./bedrock_server)

「libm.so.6」は「glibc」に含まれているので、ソースをダウンロードしてきてインストールを行っていきます。

事前準備

「glibc」をソースからインストールするためには下記のものが必要になります。

  • bison 2.7以上
  • python 3.4以上
  • make 4.0以上

「bison」については「yum」でインストールできるバージョンが「3.0.4」なので問題ないのですが、「python」と「make」についてはCentOS7の標準のリポジトリで用意されているものはバージョンが古いので、それ以外の方法でインストールする必要があります。

「python」はISUリポジトリを使用することで簡単にインストールできますが、「make」についてはソースからインストールする必要があります。

bisonインストール

「yum」でインストールを行ってください。

# yum install bison

pythonインストール

pythonはIUSリポジトリを使用してインストールすると簡単にインストールすることが出来ます。

IUSリポジトリインストール

「yum」を使用して「IUSリポジトリ」のインストールを行います。

# yum -y install https://centos7.iuscommunity.org/ius-release.rpm

IUSリポジトリのダウンロードURLが変更されたので修正しました。
新しいURLは「https://repo.ius.io/ius-release-el7.rpm」となります。

# yum -y install https://repo.ius.io/ius-release-el7.rpm
python 3.6 インストール

IUSリポジトリを使用して「python36u」「python36u-libs」「python36u-devel」「python36u-pip」をインストールします。

# yum install python36u python36u-libs python36u-devel python36u-pip

これでpython3.6.8がインストールされます。

pythonバージョン切替設定

「glibc」をインストールするために「python3.6」をインストールしたのですが、このまま「CentOS7」で使用するpythonのバージョンを3.6に変更してしまうとシステム上でpythonを使用している物に色々と問題が発生してしまいます。

わかりやすい例では「yum」が使用できなくなります。

# python --version
Python 3.6.8
# yum update
  File "/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

システムに問題が発生しては困るので、「update-alternatives」に登録して必要な時だけ「python3.6」に切り替えられるようにしておきます。

# update-alternatives --install /bin/python python /usr/bin/python2.7 1
# update-alternatives --install /bin/python python /usr/bin/python3.6 2
# update-alternatives --config python

2 プログラムがあり 'python' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/bin/python2.7
*+ 2           /usr/bin/python3.6

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

pythonのバージョンが3.6.8になっていることを確認します。

# python --version
Python 3.6.8

makeインストール

「make4系」のソースをダウンロードしてインストールを行います。

ソースのダウンロードはGNUのミラーサーバ一覧から、日本のサーバを選んでそこからダウンロードを行うのが良いでしょう。

GNU Mirror List - GNU Project - Free Software Foundation

今回は「http://ftp.jaist.ac.jp/pub/GNU/」を選択し、その中の「make」ディレクトリにある「make-4.2.1.tar.gz」をダウンロードしてインストールを行っていきます。

# cd 
# curl -LO http://ftp.jaist.ac.jp/pub/GNU/make/make-4.2.tar.gz
# tar xzfv make-4.2.tar.gz -C /usr/local/src
# cd /usr/local/src/make-4.2/
# ./configure --prefix=/usr/local/make-4.2
# make
# make install
バージョン切替設定

念のため「make」も「python」と同じように「update-alternatives」に登録して、使用するバージョンを切り替えれるようにしておきます。

# mv /usr/bin/make /usr/bin/make-3.82
# update-alternatives --install /usr/bin/make make /usr/bin/make-3.82 1
# update-alternatives --install /usr/bin/make make /usr/local/make-4.2/bin/make 2
# update-alternatives --config make

2 プログラムがあり 'make' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/bin/make-3.82
*+ 2           /usr/local/make-4.2/bin/make

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

「make」のバージョンが4.2になっていることを確認します。

# make -v
GNU Make 4.2
このプログラムは x86_64-pc-linux-gnu 用にビルドされました
Copyright (C) 1988-2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html>
これはフリーソフトウェアです: 自由に変更および配布できます.
法律の許す限り、 無保証 です.

glibcインストール

「glibc」をインストールするために必要なソフトのインストールが完了したら、GNUのミラーサーバ一覧「https://www.gnu.org/prep/ftp.html」から日本のサーバを選んで「glibc」ディレクトリからソースをダウンロードしインストールを行っていきます。

「make」のソースコードをダウンロードした時と同様に「http://ftp.jaist.ac.jp/pub/GNU/」を選択し、その中の「make」ディレクトリにある「make-4.2.1.tar.gz」をダウンロードしてインストールを行っていきます。

# cd
# curl -LO http://ftp.jaist.ac.jp/pub/GNU/glibc/glibc-2.29.tar.gz
# tar xzfv glibc-2.29.tar.gz -C /usr/local/src
# cd /usr/local/src/glibc-2.29
# mkdir build
# cd build
# ../configure --prefix=/usr/glibc-2.29
# make
# make install

これで「glibc」が「/usr/glibc-2.29/」にインストールされましたのですが、「OpenSSL」や「gcc」をインストールした時のようにライブラリをシステムに反映させる設定を行うと、システムが動作しなくなってしまいます…

ですので、「glibc」のインストール作業はこれで完了となります。

pyhtonのバージョン切替え

「glibc」のインストールが完了したら、「python」のバージョンを2.7.5に戻しておきます。

# update-alternatives --config python

2 プログラムがあり 'python' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/bin/python2.7
*+ 2           /usr/bin/python3.6

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:1
# python --version
Python 2.7.5

bedrock_server

「OpenSSL」「gcc」「glibc」のインストールが完了しましたら、いよいよ「bedrock_server」のインストールを行っていきます。

bedrock_server用ユーザ作成

最初に「root」ユーザで「bedrock_server」を動作させるのはセキュリティ上よろしくないので、「bedrock_server」動作させるための専用ユーザを作成します。

今回は「minecraft」というユーザを作成していきます。

# adduser minecraft
# passwd minecraft

unzipインストール

「bedrcok_server」はzipで圧縮されているので、解凍するためには「unzip」が必要になるため「yum」でインストールをしておきます。

# yum install unzip

bedrock_serverインストール

「bedrcok_server」のインストールはとても簡単で、下記サイトからダウンロードしてきたzipファイルを解凍するだけです。

301 Moved Permanently

「マインクラフト エンドユーザーライセンス規約およびプライバシーポリシーに同意します。」にチェックを入れると「ダウンロード」ボタンが表示されるので、ボタンを右クリックし「リンクのアドレスをコピー」を選択し、ダウンロード用のURIをコピーしてください。

「bedrcok_server」用のユーザになり、インストールするディレクトリを作成し、そこにzipファイルをダウンロードして「unzip」で解凍するという作業を行います。

# su - minecraft
$ mkdir bedrock
$ cd bedrock
$ curl -L -O https://minecraft.azureedge.net/bin-linux/bedrock-server-1.11.4.2.zip
$ unzip bedrock-server-1.11.4.2.zip

glibcライブラリのコピー

ソースからインストールしたglibcのライブラリ「/usr/glibc-2.29/lib/libm.so.6」を「bedrock_server」をインストールしたディレクトリにコピーします。

これで「bedrock_server」を実行する際にコピーしたライブラリを読み込んでくれるようになります。

$ cp -p /usr/glibc-2.29/lib/libm.so.6 .

bedrock_serverの起動

いよいよ「bedrock_server」を実行します。

$ LD_LIBRARY_PATH=. ./bedrock_server
[2019-07-03 22:28:14 INFO] Starting Server
[2019-07-03 22:28:14 INFO] Version 1.11.4.2
[2019-07-03 22:28:14 INFO] Level Name: Bedrock level
[2019-07-03 22:28:15 INFO] Game mode: 0 Survival
[2019-07-03 22:28:15 INFO] Difficulty: 1 EASY
[2019-07-03 22:28:19 INFO] IPv4 supported, port: 19132
[2019-07-03 22:28:19 INFO] IPv6 supported, port: 19133
[2019-07-03 22:28:21 INFO] Server started.

正常に起動すると「Server started.」と表示されます。

「bedrock_server」を停止させる場合は「stop」と入力してください。

bedrock_server用ポート開放(19132番/UDP)

Minecraftの「bedrock_server」はクライアントとの通信に「UDP」の「19132」番ポートを使用しますので、「firewalld」で該当ポートを開放しておきます。

# firewall-cmd --permanent --add-port=19132/udp
success
# firewall-cmd --reload
success

動作確認

Minecraftのクライアントから接続して正常にログインできる確認してください。

自動起動設定

サーバを起動するたびに手動で「bedrock_server」を起動させるのはとても面倒なので、サーバ起動時に自動起動出来るように設定を行っていきます。

tmuxインストール

今回は「tmux」(端末多重化ソフト)を使用し「bedrock_server」を動作させていくため、まず「yum」でインストールを行います。

# yum install tmux

メンテナンス用スクリプト作成

はじめに「bedrock_server」の起動や停止を行うためのスクリプトを作成していきます。(バックアップ機能もつけてあります)

# su - minecraft
$ cd bedrock
$ vi bedrock_script.sh

スクリプト説明

スクリプト内で設定してある変数についての説明です。

変数 設定内容
USERNAME bedrock_server実行ユーザ設定
SESSION_NAME tumuxのセッションに指定する名前を設定
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 バックアップしたデータの保管数

実際に作成するスクリプトの内容は下記のとおりとなります。

#!/bin/bash
#
# bedrock_server start/stop/backup script
#

# bedrock_server 実行ユーザ
USERNAME='minecraft'

# session名
SESSION_NAME='bedrock'

# bedrock_serverインストールディレクトリ
BEDROCK_PATH='/home/minecraft/bedrock'

# 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
使用方法

スクリプトを実行する際に「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用のユーザのみが実行できるように、作成した起動スクリプトのパーミッションを変更します。

$ chmod 744 bedrock_script.sh

スクリプトの動作確認

スクリプトの作成が終わったら、次に起動と停止の動作確認を行っていきます。

スクリプトを実行する際に「-x」オプションをつけて実行すると、スクリプトの実行状況が確認できるので、正常に動作しない場合の問題切り分けに役立ててください。

起動確認

スクリプトを実行して、正常に「bedrock_server」が起動するか確認していきます。

スクリプトを実行するとスクリプトの「SESSION_NAME」で設定した名前で「tmux」のセッションが作成され、そこで「bedrock_server」が起動されます。

$ sh -x ./bedrock_script.sh start

「tmux」のセッションが作成されているかは「tmux ls」コマンドで確認することができます。

$ tmux ls
bedrock: 1 windows (created Thu Jul 11 13:12:29 2019) [148x43]

このように「bedrock」セッションが作成されていることが分かります。

仮想端末へ接続(Attach)

「tmux a」と実行することでセッションに接続(Attach)することができるので、正常に起動しているかどうか確認してください。

$ tmux a

「Server started」と表示されて、コマンド入力待ちになっていれば正常に起動されています。

仮想端末から抜ける(Detach)

正常に起動していることが確認できましたら、「Ctrl」+「b」を押下した後に「d」を押下して現在接続しているセッションから抜けて(Detach)ください。

セッションから抜ける(Detach)と[detached]と表示されます。

$ tmux a     <--- セッションへ接続
[detached]   <--- セッションから切断後に表示される

停止確認

正常に起動することが確認できましたら、停止機能の動作確認を行っていきます。

$ sh -x ./bedrock_script.sh stop

正常に停止すると起動時に作成されたセッションがなくなります。

$ tmux ls
failed to connect to server

「failed to connect to server」と表示されているので、何もセッションが起動していないことが分かります。

systemd登録用ファイル作成

「systemd」に登録するためのファイルを作成します。

$ su -
# vi /etc/systemd/system/bedrock_server.service

設定説明

変数 説明
User bedrock_server実行ユーザ
ExecStart bedrock_server 起動コマンド
ExecStop bedrock_server 停止コマンド

「bedrock_server」を動作させるユーザやスクリプトのパスを変更している場合は、適宜読み替えてください。

[Unit]
Description=Minecraft Bedrock Server
After=network.target local-fs.target

[Service]
Type=forking
User=minecraft
ExecStart=/home/minecraft/bedrock/bedrock_script.sh start
ExecStop=/home/minecraft/bedrock/bedrock_script.sh stop

[Install]
WantedBy=multi-user.target

自動起動設定

systemd登録用のファイルの作成が終わりましたら、「systemctl enable」コマンドで登録を行います。

# systemctl enable bedrock_server.service

動作確認

自動起動の設定が終わりましたら、実際にサーバを再起動して「bedrock_server」が自動的に起動してくるか確認をしてください。

問題なく起動してくればインストール作業は完了となります。

コメント

  1. ねむたみんぞく より:

    ./contrib/download_prerequisites
    gcc↑これやらんと、、makeできないです・・・

    • tamohiko より:

      ねむたみんぞく さん

      コメントありがとうございます。

      > ./contrib/download_prerequisites
      > gcc↑これやらんと、、makeできないです・・・

      すいません、この手順抜けていましたので、
      修正させていただきました。

      ご指摘ありがとうございます。

  2. ねむたみんぞく より:

    先日iueのリンク変わりましたよね
    yum install -y https://repo.ius.io/ius-release-el7.rpm

    • tamohiko より:

      ご指摘ありがとうございます!
      URL変更になっていたの知りませんでしたのでとても助かりました。

      こちらの方もあせて修正させていただきました。

タイトルとURLをコピーしました