環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

【minecraft】AlmaLinux8で統合版マルチサーバー構築をしてみた【手順】

【minecraft】AlmaLinux8で統合版マルチサーバー構築をしてみた【手順】

筆者も何を隠そうminecraftが大好きな一人です。ただただ無意味に整地したくなる欲求が定期的に襲ってきますw

今回は統合版のマルチサーバーを構築します。OSは何が良いか考えてみましたが、CentOSの後継として候補のAlmaLinux8で試してみようと思います。

ちなみに、古い手順(CentOS7版)もGithubに公開しておきます。

環境

  • AWS ec2
  • AlmaLinux8(8.5.20211116)

※構築環境はAWSである必要はありません。ただし、必要手順が微妙に異なる場合があります。ご了承ください。

構築手順

# インストール
dnf -y install wget gcc unzip make libnsl

# アップデート 
dnf -y update

# firewalldインストール&起動
dnf -y install firewalld
systemctl start firewalld

# firewalld minecraft用設定追加
firewall-cmd --permanent --new-service minecraft
firewall-cmd --permanent --service=minecraft --set-description=minecraft
firewall-cmd --permanent --service=minecraft --set-short=minecraft
firewall-cmd --permanent --service=minecraft --add-port=19132/tcp
firewall-cmd --permanent --service=minecraft --add-port=19133/tcp
firewall-cmd --permanent --service=minecraft --add-port=19132/udp
firewall-cmd --permanent --service=minecraft --add-port=19133/udp
cat /etc/firewalld/services/minecraft.xml
# ----
# ?xml version="1.0" encoding="utf-8"?>
# service>
#  <short>minecraft</short>
#  <description>minecraft</description>
#  <port port="19132" protocol="tcp"/>
#  <port port="19133" protocol="tcp"/>
#  <port port="19132" protocol="udp"/>
#  <port port="19133" protocol="udp"/>
# /service>
# ----

firewall-cmd --add-service=minecraft --zone=public --permanent
firewall-cmd --reload

# 各種ディレクトリ作成
mkdir -p /usr/local/games/minecraft/backups
mkdir -p /usr/local/games/minecraft/bedrock-server
mkdir -p /usr/local/games/minecraft/zips

# minecraft本体ダウンロード
# 公式ページ(https://www.minecraft.net/ja-jp/download/server/bedrock)
# のリンク先アドレスをコピーして使ってください。
# 「I agree ...」にチェックを入れるとダウンロードボタンのアドレスが見れます
cd /usr/local/games/minecraft/zips
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.18.12.01.zip
unzip bedrock-server-1.18.12.01.zip -d ../bedrock-server

# libssl.so.1.1, libcrypto.so.1.1を取得
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
tar xvzf openssl-1.1.1.tar.gz
rm openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config -fPIC shared
make

cp -i /usr/local/src/openssl-1.1.1/libssl.so.1.1 /usr/local/games/minecraft/bedrock-server/
cp -i /usr/local/src/openssl-1.1.1/libcrypto.so.1.1 /usr/local/games/minecraft/bedrock-server/
 

# libstdc++.so.6確認
ls -la /usr/lib64/libstdc++.so.6
# -----
# バージョンがlibstdc++.so.6.0.25 以上であること
# -----

# libm.so.6確認
ls -la /usr/lib64/libm.so.6
# -----
# バージョンがlibm-2.27.so 以上であること
# -----

# サービス設定ファイル
cat << _EOF_ > /etc/systemd/system/minecraft.service
[Unit]
Description=minecraft
After=syslog.target network.target
   
[Service]
Type=forking
EnvironmentFile=/etc/default/minecraft
WorkingDirectory=/usr/local/games/minecraft/bedrock-server/
ExecStart=/usr/local/bin/minecraft-start.sh
ExecStop=/usr/local/bin/minecraft-stop.sh
User=root
Group=root
KillMode=none
Restart = always
   
[Install]
WantedBy=multi-user.target
_EOF_

# 起動スクリプト
TFILE=/usr/local/bin/minecraft-start.sh
echo '#!/bin/bash' > ${TFILE}
echo '[ -d $RUN_DIR ] || mkdir -p ${RUN_DIR}' >> ${TFILE}
echo 'cd /usr/local/games/minecraft/bedrock-server/' >> ${TFILE}
echo 'LD_LIBRARY_PATH=. ./bedrock_server > $LOG 2>$ERROR_LOG &' >> ${TFILE}
echo 'echo $! > ${PID_FILE}' >> ${TFILE}

# 停止スクリプト
TFILE=/usr/local/bin/minecraft-stop.sh
echo '#!/bin/bash' > ${TFILE}
echo '[ -f ${PID_FILE} ] && kill -9 $(cat ${PID_FILE})' >> ${TFILE}
echo '[ -f ${LOCK_FILE} ] && rm ${LOCK_FILE}' >> ${TFILE}
echo '[ -f ${PID_FILE} ] && rm ${PID_FILE}' >> ${TFILE}

# 設定ファイル作成
cat << _EOF_ > /etc/default/minecraft
LOG="/var/log/minecraft/minecraft.log"
ERROR_LOG="/var/log/minecraft/minecraft.log.error_log"
RUN_DIR="/var/lib/minecraft/run/"
LOCK_FILE=/var/lib/minecraft/minecraft.lock
PID_FILE=/var/lib/minecraft/run/minecraft.pid
_EOF_

# ディレクトリ作成, スクリプト実行権限付与
mkdir /var/log/minecraft/
mkdir /var/lib/minecraft/
chmod 755 /usr/local/bin/minecraft-start.sh
chmod 755 /usr/local/bin/minecraft-stop.sh

# 起動
systemctl enable minecraft
systemctl start minecraft

これで構築は完了です

さっそく動作確認

iOS版のマイクラで接続確認してみます。

「遊ぶ」→「サーバー」→「サーバーを追加」を選択し、IPアドレスを入力する。

  • サーバー名 : お好みの文字列を入力
  • サーバーアドレス : サーバーをたてたIPアドレスを入力
  • ポート : 19132(変更しない)

「保存」を押し、「サーバーに参加」ボタンを押すとログインできるはずです。

接続できない場合

マイクラサーバーは起動していますか?

プロセス確認してみましょう

$ ps -ef | grep bedrock
root       31740       1  2 04:04 ?        00:00:19 ./bedrock_server

-> 上記が表示されれば起動しています
マイクラサーバーが起動していない場合はどうする?

なんらかのエラーで起動できていないことは予想されますが、原因は自力で特定するしかないので、起動時のエラーを見たり、手動で実行して実行ログを見たりしましょう

# 起動時のエラー確認
systemctl status minecraft

# 手動で実行してみる
cd /usr/local/games/minecraft/bedrock-server
./bedrock_server
マイクラサーバーが起動しているが接続できない

ファイヤーウォールなどの影響で接続ができていないことが予想されます。

今回はAWSを使用していますので、セキュリティグループの設定で19132ポートが開放されているか確認します。

その他クラウドサービス、VPSなどを利用している場合でも、初期設定では22,80,443しか許可していないサービスなどもありますので、確認してみましょう。

まとめ

CentOS7で構築していた時は、「libstdc++.so.6」「libm.so.6」のバージョンが足りずに、作成するのに時間がかかってましたが、それが必要なければ非常に短時間で済みました。

みなさま、よいマイクラライフを♪

Github

素材