3.Cent OS 7 lobby 設定

Cent OS lobby の設定

実行用フォルダ作成

server portの変更
telnet より実行

# su spiadmin
# cd /opt
# su
passward:(root パスワード入力)
# mkdir lobby
# chown spiadmin:spiadmin /opt/lobby

lobby 起動に必要なファイルを順番にコピーする

minecra_lobby01
ここでは、WinSCPを使ってアップロードする。
下記のフォルダ
1)world
2)world_nether
3)world_end
下記ファイル
4)server.properties
5)eula.txt
6)spigot-1.11.2.jar

terminal より権限変更

root(パスワード)
# cd /opt/lobby # chmod 644 server.properties

テスト実行

#java -Xms512M -Xmx512M -jar spigot-1.11.2.jar nogui

テスト結果

[13:10:05 INFO]: Starting minecraft server version 1.11.2
[13:10:05 INFO]: Loading properties
[13:10:05 WARN]: server.properties does not exist
[13:10:05 INFO]: Generating new properties file
[13:10:05 INFO]: Default game type: SURVIVAL
[13:10:05 INFO]: This server is running CraftBukkit version git-Spigot-d4f98a3-cb61ac0 (MC: 1.11.2) (Implementing API version 1.11.2-R0.1-SNAPSHOT)
[13:10:05 INFO]: Unable to find file banned-players.json, creating it.
[13:10:05 INFO]: Unable to find file banned-ips.json, creating it.
[13:10:05 INFO]: Unable to find file ops.json, creating it.
[13:10:05 INFO]: Unable to find file whitelist.json, creating it.
[13:10:05 INFO]: Server Ping Player Sample Count: 12
[13:10:05 INFO]: Using 4 threads for Netty based IO
[13:10:05 INFO]: Debug logging is disabled
[13:10:05 INFO]: Generating keypair
[13:10:05 INFO]: Starting Minecraft server on *:25565
[13:10:05 INFO]: Using epoll channel type
[13:10:05 INFO]: **** Beginning UUID conversion, this may take A LONG time ****
[13:10:05 INFO]: Preparing level "world"
[13:10:05 WARN]: java.io.FileNotFoundException: ./world/session.lock (Permission denied)
[13:10:05 WARN]: at java.io.FileOutputStream.open0(Native Method)
[13:10:05 WARN]: at java.io.FileOutputStream.open(FileOutputStream.java:270)
[13:10:05 WARN]: at java.io.FileOutputStream.(FileOutputStream.java:213)
[13:10:05 WARN]: at java.io.FileOutputStream.(FileOutputStream.java:162)
[13:10:05 WARN]: at net.minecraft.server.v1_11_R1.WorldNBTStorage.i(WorldNBTStorage.java:53)
[13:10:05 WARN]: at net.minecraft.server.v1_11_R1.WorldNBTStorage.(WorldNBTStorage.java:47)
[13:10:05 WARN]: at net.minecraft.server.v1_11_R1.ServerNBTManager.(SourceFile:21)
[13:10:05 WARN]: at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:264)
[13:10:05 WARN]: at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:272)
[13:10:05 WARN]: at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:544)
[13:10:05 WARN]: at java.lang.Thread.run(Thread.java:748)
[13:10:05 ERROR]: Encountered an unexpected exception java.lang.RuntimeException: Failed to check session lock for world located at ./world, aborting. Stop the server and delete the session.lock in this world to prevent further issues. at net.minecraft.server.v1_11_R1.WorldNBTStorage.i(WorldNBTStorage.java:63) ~[spigot-1.11.2.jar:git-Spigot-d4f98a3-cb61ac0] at net.minecraft.server.v1_11_R1.WorldNBTStorage.(WorldNBTStorage.java:47) ~[spigot-1.11.2.jar:git-Spigot-d4f98a3-cb61ac0] at net.minecraft.server.v1_11_R1.ServerNBTManager.(SourceFile:21) ~[spigot-1.11.2.jar:git-Spigot-d4f98a3-cb61ac0] at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:264) ~[spigot-1.11.2.jar:git-Spigot-d4f98a3-cb61ac0] at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:272) ~[spigot-1.11.2.jar:git-Spigot-d4f98a3-cb61ac0] at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:544) [spigot-1.11.2.jar:git-Spigot-d4f98a3-cb61ac0] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141]
[13:10:05 ERROR]: This crash report has been saved to: /opt/lobby/./crash-reports/crash-2017-07-24_13.10.05-server.txt
[13:10:05 INFO]: Stopping server
[13:10:05 INFO]: Saving players
[13:10:06 INFO]: Saving worlds

 

server.properties編集

#Minecraft server properties
#Mon Jul 24 13:10:05 JST 2017
generator-settings=
use-native-transport=true
op-permission-level=4
level-name=world
allow-flight=false
announce-player-achievements=true
prevent-proxy-connections=false
server-port=25565 -> ここを25557 に変更
level-type=DEFAULT

 

world session lock の権限を変更

server portの変更
telnet より実行

# su (root にて実行)
# cd /opt/lobby/world
# chmod 777 session.lock
# chmod 777 session.lock

# cd /opt/lobby/world_nether
# chmod 777 session.lock
# cd /opt/lobby/world_end
# chmod 777 session.lock
# cd /opt/lobby/world/region
# chmod 777./world/region/*.mca

 

(参考) world 配下の uid をコピー

/opt/lobby/world_the_end にある uid.dat を
/opt/lobby/world にコピー


# su (root にて実行)
# cd /opt/lobby/world_the_end
# cp uid /opt/lobby/world

 

(参考) 各配下の権限を一括変更

# su (root にて実行)
# chmod -R 777 /opt/lobby/world/region
# chmod -R 777 /opt/lobby/world/playerdata
# chmod -R 777 /opt/lobby/world/stats

# chmod -R 777 /opt/lobby/world_the_end/region
# chmod -R 777 /opt/lobby/world_the_end/playerdata
# chmod -R 777 /opt/lobby/world_the_end/stats

 

再実行


ava -Xms512M -Xmx512M -jar spigot-1.11.2.jar nogui


以下は一部のパラメータを除き、spigot と同じ。

起動・停止スクリプト作成

「systemd」で管理し自動起動できるようにするため、起動と停止用のスクリプト
作成していきます。

変数 設定内容
USERNAME spigot実行ユーザを設定
SERVICE spigot実行ファイルを設定(spigot-x.x.jarファイル名を指定)
SCNAME screenに指定する名前を設定(spigot-x.x.jarファイル名を指定)
MC_PATH spigotがインストールされているディレクトリを設定
XMX spigot最大メモリ使用量を設定
XMS spigot初期メモリ使用量を設定

※「XMX」と「XMS」については、「spigot」が使用するメモリの量となります。
この値を変更する場合は、かならずOSが使用するメモリ分は残るように設定指定ください。

起動スクリプト

#!/bin/bash

USERNAME='spiadmin'
SERVICE='spigot-1.11.2.jar'
SCNAME='spigot'
SPI_PATH='/opt/lobby'

XMX="512M"
XMS="512M"

cd $SPI_PATH

ME=`whoami`

if [ $ME == $USERNAME ] ; then
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is already running!"
else
echo "Starting $SERVICE..."
screen -AmdS $SCNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui
fi
else
echo "Please run the minecraft user."

使用頻度は少ないと思われるが、停止のスクリプトも同様に作成。

停止スクリプト作成

「spi_stop.sh」という名前で停止スクリプトを作成していきます。

#cd /opt/spigot
#vi spi_stop.sh

 

変数 設定内容
USERNAME spigot実行ユーザを設定
SERVICE spigot実行ファイルを設定(spigot-x.x.jarファイル名を指定)
SCNAME screenに指定する名前を設定(spigot-x.x.jarファイル名を指定)
MC_PATH spigotがインストールされているディレクトリを設定

停止スクリプト

#!/bin/bash

USERNAME='spiadmin'
SERVICE='spigot-1.11.2.jar'
SCNAME='spigot'
SPI_PATH='/opt/lobby'

cd $SPI_PATH

ME=`whoami`

if [ $ME == $USERNAME ] ; then
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "Stopping $SERVICE"
screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..."\015'
screen -p 0 -S $SCNAME -X eval 'stuff "save-all"\015'
sleep 10
screen -p 0 -S $SCNAME -X eval 'stuff "stop"\015'
sleep 10
echo "Stopped minecraftserver"
else
echo "$SERVICE was not runnning."
fi
else
echo "Please run the minecraft user."
fi

パーミッション変更

spigot実行ユーザのみが起動・停止シェルを実行できるように、パーミッションの設定を行います。

#chmod 744 lobby_start.sh
#chmod 744 lobby_stop.sh

 

パーミッション確認

spigot起動ユーザのみが、実行できるようになっていることを確認します。

$ ls -l lobby_*
-rwxr--r-- 1 spiadmin spiadmin 406 Jul 25 1X:X6 lobby_start.sh
-rwxr--r-- 1 spiadmin spiadmin 561 Jul 25 1X:X1 lobby_stop.sh

スクリプト動作確認

起動スクリプト実行確認

# ./lobby_start.sh

 

screenの確認

「spi_start.sh」から起動された「spigot」はスクリプト内の「SCNAME」で設定された
名前のscreen上で実行されています。
「screen -ls」コマンドでscreenの状態を確認できます。

[16:33:51 INFO]: Using locale en_US
[16:33:51 INFO]: [Vault][Economy] Essentials Economy hooked.
[16:33:51 INFO]: Essentials: Using PermissionsEx based permissions.
[16:33:51 INFO]: [TablistPrefix] Enabling TablistPrefix v2.3.0
[16:33:51 INFO]: [TablistPrefix] Vault found!.
[16:33:51 INFO]: [WorldGuard] Enabling WorldGuard v6.1.3-SNAPSHOT;c904242
[16:33:51 INFO]: [WorldGuard] (world) TNT ignition is PERMITTED.
[16:33:51 INFO]: [WorldGuard] (world) Lighters are PERMITTED.
[16:33:51 INFO]: [WorldGuard] (world) Lava fire is blocked.
[16:33:51 INFO]: [WorldGuard] (world) Fire spread is UNRESTRICTED.
[16:33:51 INFO]: [WorldGuard] Loaded configuration for world 'world'
[16:33:51 INFO]: [WorldGuard] (world_the_end) TNT ignition is PERMITTED.
[16:33:51 INFO]: [WorldGuard] (world_the_end) Lighters are PERMITTED.
[16:33:51 INFO]: [WorldGuard] (world_the_end) Lava fire is blocked.
[16:33:51 INFO]: [WorldGuard] (world_the_end) Fire spread is UNRESTRICTED.
[16:33:51 INFO]: [WorldGuard] Loaded configuration for world 'world_the_end'
[16:33:51 INFO]: [WorldGuard] Loading region data...
[16:33:51 INFO]: [ChestCommands] Enabling ChestCommands v3.1.4
[16:33:51 INFO]: [LunaChat] Enabling LunaChat v2.8.8
[16:33:51 INFO]: Server permissions file permissions.yml is empty, ignoring it
[16:33:52 INFO]: Done (3.074s)! For help, type "help" or "?"
[16:33:52 INFO]: [Vault] Checking for Updates ...
[16:33:53 INFO]: [Vault] No new version available


正常に起動が完了すると「Done」と表示されて、コマンド入力待ちになっており正常に起動されています。
minecraftのクライアントから接続できるか試してみてください。
動作確認が終了したましたら、今接続している「screen」から抜けて(Dtach)ください。
正常に起動が完了すると「Done」と表示されて、コマンド入力待ちになっており正常に起動されています。
minecraftのクライアントから接続できるか試してみてください。
動作確認が終了したましたら、今接続している「screen」から抜けて(Dtach)ください。

screenからの抜け方(Detach)

「Ctrl」+「a」を押下した後に「d」を押下することで「screen」から抜ける(Detach)ことができます。

停止スクリプト実行確認

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

停止スクリプト実行

# ./lobby_stop.sh


「spigot」が無事停止できているか、「screen -ls」コマンドで確認してください。

正常にスクリプトが実行されると、「spigot」が停止し起動スクリプトで作成された「screen」も終了します。