Kanade Labo

かなで研究所

Minecraftマルチサーバ作成 Part10(サーバ起動方法変更編)

こんにちは かなで です。

前回の記事で書きましたが、本サイトを参考に構築頂いた場合、

サーバ側からクライアント側(スイッチ側)へのアクションが出来ないことが判明しました。

なので、それができるように設定を変更するのがこちらの記事になります。

まずは過去のおさらい。

Part8で起動時は「LD_LIBRARY_PATH=. nohup ./bedrock_server >> ./bedrock_server.log 2>&1 &」というコマンドを使用するとしました。

そしてこの時、「Teratermを終了しても、Windowsを終了しても、Minecraftサーバが起動し続ける」と説明しました。

たしかにその通りでした。

ただ、ここに問題があって、この方法だと、外部操作から切り離されるイメージになって、つまりサーバ側の操作が出来ない状態になってしまいました。

これを解決するために、「screen」というコマンドを使う必要があります。

本サイトでインストール時に使用したOSはOracle Linux 8ですが、Linux 8には、「screen」コマンドがないようです。

which screen

[root /home/opc]#which screen
/usr/bin/which: no screen in (/sbin:/bin:/usr/sbin:/usr/bin)

このように表示される場合は、screenがないことを表します。

なので、まずはscreenが使えるようにしていきます。

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

[root /home/opc]#dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Last metadata expiration check: 1:17:40 ago on Sun 06 Mar 2022 07:39:51 AM GMT.
epel-release-latest-8.noarch.rpm                                                         29 kB/s |  22 kB     00:00
Dependencies resolved.
========================================================================================================================
 Package                       Architecture            Version                      Repository                     Size
========================================================================================================================
Installing:
 epel-release                  noarch                  8-14.el8                     @commandline                   22 k

Transaction Summary
========================================================================================================================
Install  1 Package

Total size: 22 k
Installed size: 32 k
Is this ok [y/N]: y

よろしいですか?でyを入力

Complete!と表示されました。

続けて、「dnf install screen」を実行

こちらもYesを2回押して…

Complete!が表示されました。

これで「screen」コマンドが使えるようになったはずです。

which screen

[root /home/opc]#which screen
/bin/screen
[root /home/opc]#

これでscreenが使えるようになっていることが確認できました。

では早速使ってみましょう。

screen -dmS minecraft_server

[root /home/opc]#screen -dmS minecraft_server
[root /home/opc]

何も返ってきませんが、これが正解です。

コマンドの意味は、-dmSは、「仮想的な画面を見えないところに作成」という意味で

「minecraft_server」は、ただその画面に名前を付けただけです。

この「仮想的な画面」をここではスクリーン画面という言い方をしてみますが、

このスクリーン画面は、Teraterm上で開いてるわけではないので、Teratermを閉じてもスクリーン画面は開いたままになります。

つまり、スクリーン画面上でいろいろ操作してるものは、Teratermを閉じても、Windowsを閉じても生き続けるという事です。

なので、スクリーン画面上で、実際のマインクラフト統合版のマルチサーバを起動してあげれば、ずっと起動しっぱなしにできるというわけです。

というわけで、次は、スクリーン画面を見えるようにしてみます。これをアタッチするといいます。

screen -r minecraft_server

[root /home/opc]#screen -r minecraft_server

これがスクリーン画面をアタッチした状態の画面です。

何が違うの?と思うかもしれないですが、今はスクリーン画面をTeratermに召喚してるんです。

その証拠に…

echo $TERM

[root /home/opc]#echo $TERM
screen
[root /home/opc]#

echoコマンドを実行すると、screenと変えてきました。

「今スクリーン画面だよ」という事を表しています。

ここで以下を打つと…

LD_LIBRARY_PATH=. ./bedrock_server

無事マイクラサーバが起動しました。スクリーン画面上で。

試しにここで、

list と打ってみます。

list
There are 0/5 players online:

このような感じで、5人中0人がオンラインだよというような表示になります。

繰り返しますが、今はスクリーン画面をTeratermに召喚(アタッチ)している状態になります。

この状態で、Teratermを終了させてしまうと、召喚していたスクリーン画面は落ちてしまいます。

マイクラサーバが落ちてしまうという事ですね。

ではどうすればいいか。

召喚していたスクリーン画面にお帰り頂く必要があります。あちらの世界へ。帰っていただくことをデタッチといいます。

そのコマンドがこちら。

ちょっとわかりにくいですが、
①まずctrlを押しながらaを一回だけ押します。
②ctrlも離します。
③dを押します。
やってみましょう。

[detached from 2167745.minecraft_server]
[root /home/opc]#

赤矢印のところで、上記①~③を実施すると、デタッチなんちゃらと表示されました。

echo $TERM

試しにechoを打ったところ、今度は「xterm」と表示されました。

「screen」ではないので、これはスクリーン画面ではありません。

screen -ls

[root /home/opc]#screen -ls
There is a screen on:
2167745.minecraft_server (Detached)
1 Socket in /run/screen/S-root.
[root /home/opc]#

今度は、screen -lsを打ってみました。

これでスクリーン画面がどこかに存在しているかどうかがわかります。

上記のキャプチャでは、2167745.minecraft_serverというスクリーン画面が存在し

デタッチ状態である(誰も召喚してない状態)という事がわかります。

誰も召喚していない。もちろんTeraterm画面にも召喚していない。よってTeratermを落としてもマイクラサーバは落ちない。

ちなみに、誰かがアタッチ状態だとこのように表示されます。

この場合、アタッチしているTeratermを落とすとマイクラサーバは落ちます。

しつこ~く落ちる落ちないを呪文のように言いまくりましたが、わかりましたかね(汗

基本デタッチ状態にしておく

マイクラ用のコマンドを打ちたいときは、アタッチしてコマンドが打てる

抜けるときは、ちゃんとデタッチしてから抜ける

これで、サーバからクライアントへのアクションもできるようになりました。

次回は、これを踏まえて簡単に操作できるシェルを作ってみましたので、ご紹介します。

最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。

-Minecraft, 統合版マルチ