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を落とすとマイクラサーバは落ちます。
しつこ~く落ちる落ちないを呪文のように言いまくりましたが、わかりましたかね(汗
基本デタッチ状態にしておく
マイクラ用のコマンドを打ちたいときは、アタッチしてコマンドが打てる
抜けるときは、ちゃんとデタッチしてから抜ける
これで、サーバからクライアントへのアクションもできるようになりました。
次回は、これを踏まえて簡単に操作できるシェルを作ってみましたので、ご紹介します。
最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。