ひとり勉強ログ

ITエンジニアの勉強したことメモ

CentOS7 で Minecraft1.16.5 の spigot サーバーを立てる方法

Spigot 実行ユーザーを作成

adduser spigotadmin
passwd spigotadmin

Buildtoools のダウンロード

インストールディレクトリの作成

mkdir /opt/spigot

所有者の変更

ディレクトリの所有者を「spigotadmin」ユーザーに変更。

chown spigotadmin:spigotadmin /opt/spigot

所有者が変更されていることを確認。

drwxr-xr-x 2 spigotadmin spigotadmin 6  1月 23 11:14 spigot

Buildtoools のダウンロード

「su」コマンドで「spigot」実行ユーザーへ変更して作業を行う。

su - spigotadmin

「spigot」インストールディレクトリに移動し、そこで Buildtoools をダウンロード。

$ cd /opt/spigot
$ wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

BuildTools.jar がダウンロードされる。

BuildTools.jar

spigot ビルド

git 設定

git で改行コードを設定しないようにするため行う。

$ git config --global --unset core.autocrlf

spigot ビルド実行

$ java -jar BuildTools.jar

ビルド完了。

Success! Everything completed successfully. Copying final .jar files now.
Copying spigot-1.16.5-R0.1-SNAPSHOT.jar to /opt/spigot/./spigot-1.16.5.jar
  - Saved as ./spigot-1.16.5.jar

以下のようにファイルが生成される。

$ ls
BuildData       BuildTools.log.txt  CraftBukkit  apache-maven-3.6.0  work
BuildTools.jar  Bukkit              Spigot       spigot-1.16.5.jar

spigot 起動

eula.txt を作成するために spigot を起動させる。

$ java -Xms1024M -Xmx1024M -jar spigot-1.16.5.jar nogui
Loading libraries, please wait...
[14:51:55] [main/ERROR]: Failed to load properties from file: server.properties
[14:51:55] [main/WARN]: Failed to load eula.txt
[14:51:55] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

eula.txt を編集

eula=false」から「eula=true」に変更。

$ vi eula.txt

変更前

eula=false

変更後

eula=true

spigot の動作確認

再度 spigot を起動し、minecraft クライアントからログインして動作確認する。

$ java -Xms1024M -Xmx1024M -jar spigot-1.16.5.jar nogui
Loading libraries, please wait...
[14:57:47] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[14:57:47] [main/INFO]: Found new data pack file/bukkit, loading it automatically
[14:57:48] [main/INFO]: Reloading ResourceManager: Default, bukkit
[14:57:48] [Worker-Main-4/INFO]: Loaded 7 recipes
[14:57:47] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[14:57:47] [main/INFO]: Found new data pack file/bukkit, loading it automatically
[14:57:48] [main/INFO]: Reloading ResourceManager: Default, bukkit
[14:57:48] [Worker-Main-4/INFO]: Loaded 7 recipes
[14:57:51] [Server thread/INFO]: Starting minecraft server version 1.16.5
[14:57:51] [Server thread/INFO]: Loading properties
[14:57:51] [Server thread/INFO]: This server is running CraftBukkit version 2995-Spigot-5bde311-0bad58f (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)
[14:57:51] [Server thread/INFO]: Server Ping Player Sample Count: 12
[14:57:51] [Server thread/INFO]: Using 4 threads for Netty based IO
[14:57:51] [Server thread/INFO]: Debug logging is disabled
[14:57:51] [Server thread/INFO]: Default game type: SURVIVAL
[14:57:51] [Server thread/INFO]: Generating keypair
[14:57:52] [Server thread/INFO]: Starting Minecraft server on *:25565
[14:57:52] [Server thread/INFO]: Using epoll channel type
[14:57:53] [Server thread/INFO]: Preparing level "world"
[14:57:53] [Server thread/INFO]: -------- World Settings For [world] --------
[14:57:53] [Server thread/INFO]: Experience Merge Radius: 3.0
[14:57:53] [Server thread/INFO]: Mob Spawn Range: 6
[14:57:53] [Server thread/INFO]: Cactus Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Cane Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Melon Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Mushroom Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Pumpkin Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Sapling Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Beetroot Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Carrot Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Potato Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Wheat Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: NetherWart Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Vine Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Cocoa Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Bamboo Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: SweetBerry Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Kelp Growth Modifier: 100%
[14:57:53] [Server thread/INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[14:57:53] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[14:57:53] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645
[14:57:53] [Server thread/INFO]: Max TNT Explosions: 100
[14:57:53] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[14:57:53] [Server thread/INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[14:57:53] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[14:57:53] [Server thread/INFO]: View Distance: 10
[14:57:53] [Server thread/INFO]: Item Despawn Rate: 6000
[14:57:53] [Server thread/INFO]: Item Merge Radius: 2.5
[14:57:53] [Server thread/INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[14:57:53] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[14:57:53] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
[14:57:58] [Server thread/INFO]: -------- World Settings For [world_nether] --------
[14:57:58] [Server thread/INFO]: Experience Merge Radius: 3.0
[14:57:58] [Server thread/INFO]: Mob Spawn Range: 6
[14:57:58] [Server thread/INFO]: Cactus Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Cane Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Melon Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Mushroom Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Pumpkin Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Sapling Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Beetroot Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Carrot Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Potato Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Wheat Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: NetherWart Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Vine Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Cocoa Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Bamboo Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: SweetBerry Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Kelp Growth Modifier: 100%
[14:57:58] [Server thread/INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[14:57:58] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[14:57:58] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645
[14:57:58] [Server thread/INFO]: Max TNT Explosions: 100
[14:57:58] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[14:57:58] [Server thread/INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[14:57:58] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[14:57:58] [Server thread/INFO]: View Distance: 10
[14:57:58] [Server thread/INFO]: Item Despawn Rate: 6000
[14:57:58] [Server thread/INFO]: Item Merge Radius: 2.5
[14:57:58] [Server thread/INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[14:57:58] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[14:57:58] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
[14:57:58] [Server thread/WARN]: Unable to find spawn biome
[14:58:00] [Server thread/INFO]: -------- World Settings For [world_the_end] --------
[14:58:00] [Server thread/INFO]: Experience Merge Radius: 3.0
[14:58:00] [Server thread/INFO]: Mob Spawn Range: 6
[14:58:00] [Server thread/INFO]: Cactus Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Cane Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Melon Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Mushroom Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Pumpkin Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Sapling Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Beetroot Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Carrot Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Potato Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Wheat Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: NetherWart Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Vine Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Cocoa Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Bamboo Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: SweetBerry Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Kelp Growth Modifier: 100%
[14:58:00] [Server thread/INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[14:58:00] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[14:58:00] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645
[14:58:00] [Server thread/INFO]: Max TNT Explosions: 100
[14:58:00] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[14:58:00] [Server thread/INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[14:58:00] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[14:58:00] [Server thread/INFO]: View Distance: 10
[14:58:00] [Server thread/INFO]: Item Despawn Rate: 6000
[14:58:00] [Server thread/INFO]: Item Merge Radius: 2.5
[14:58:00] [Server thread/INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[14:58:00] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[14:58:00] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
[14:58:00] [Server thread/WARN]: Unable to find spawn biome
[14:58:00] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[14:58:00] [Worker-Main-6/INFO]: Preparing spawn area: 0%
[14:58:01] [Worker-Main-7/INFO]: Preparing spawn area: 0%
[14:58:01] [Worker-Main-5/INFO]: Preparing spawn area: 0%
[14:58:02] [Worker-Main-6/INFO]: Preparing spawn area: 0%
[14:58:02] [Worker-Main-7/INFO]: Preparing spawn area: 0%
[14:58:03] [Worker-Main-7/INFO]: Preparing spawn area: 2%
[14:58:03] [Worker-Main-6/INFO]: Preparing spawn area: 2%
[14:58:04] [Worker-Main-6/INFO]: Preparing spawn area: 6%
[14:58:04] [Worker-Main-6/INFO]: Preparing spawn area: 9%
[14:58:05] [Worker-Main-7/INFO]: Preparing spawn area: 11%
[14:58:05] [Worker-Main-5/INFO]: Preparing spawn area: 11%
[14:58:06] [Worker-Main-6/INFO]: Preparing spawn area: 15%
[14:58:06] [Worker-Main-5/INFO]: Preparing spawn area: 15%
[14:58:07] [Worker-Main-5/INFO]: Preparing spawn area: 15%
[14:58:07] [Worker-Main-5/INFO]: Preparing spawn area: 15%
[14:58:08] [Worker-Main-7/INFO]: Preparing spawn area: 23%
[14:58:08] [Worker-Main-6/INFO]: Preparing spawn area: 24%
[14:58:09] [Worker-Main-6/INFO]: Preparing spawn area: 27%
[14:58:09] [Worker-Main-7/INFO]: Preparing spawn area: 29%
[14:58:10] [Worker-Main-6/INFO]: Preparing spawn area: 31%
[14:58:10] [Worker-Main-7/INFO]: Preparing spawn area: 33%
[14:58:11] [Worker-Main-6/INFO]: Preparing spawn area: 33%
[14:58:11] [Worker-Main-6/INFO]: Preparing spawn area: 35%
[14:58:12] [Worker-Main-7/INFO]: Preparing spawn area: 35%
[14:58:13] [Worker-Main-6/INFO]: Preparing spawn area: 41%
[14:58:13] [Worker-Main-5/INFO]: Preparing spawn area: 44%
[14:58:14] [Worker-Main-5/INFO]: Preparing spawn area: 46%
[14:58:14] [Worker-Main-6/INFO]: Preparing spawn area: 46%
[14:58:14] [Worker-Main-7/INFO]: Preparing spawn area: 51%
[14:58:15] [Worker-Main-5/INFO]: Preparing spawn area: 57%
[14:58:15] [Worker-Main-5/INFO]: Preparing spawn area: 57%
[14:58:16] [Worker-Main-6/INFO]: Preparing spawn area: 63%
[14:58:16] [Worker-Main-5/INFO]: Preparing spawn area: 63%
[14:58:17] [Worker-Main-5/INFO]: Preparing spawn area: 69%
[14:58:17] [Worker-Main-6/INFO]: Preparing spawn area: 71%
[14:58:18] [Worker-Main-6/INFO]: Preparing spawn area: 77%
[14:58:18] [Worker-Main-7/INFO]: Preparing spawn area: 81%
[14:58:19] [Worker-Main-7/INFO]: Preparing spawn area: 83%
[14:58:19] [Worker-Main-7/INFO]: Preparing spawn area: 86%
[14:58:20] [Worker-Main-6/INFO]: Preparing spawn area: 90%
[14:58:20] [Worker-Main-6/INFO]: Preparing spawn area: 94%
[14:58:21] [Worker-Main-7/INFO]: Preparing spawn area: 98%
[14:58:21] [Server thread/INFO]: Time elapsed: 20647 ms
[14:58:21] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether
[14:58:21] [Worker-Main-7/INFO]: Preparing spawn area: 0%
[14:58:21] [Worker-Main-7/INFO]: Preparing spawn area: 0%
[14:58:22] [Worker-Main-7/INFO]: Preparing spawn area: 1%
[14:58:22] [Worker-Main-7/INFO]: Preparing spawn area: 3%
[14:58:23] [Worker-Main-7/INFO]: Preparing spawn area: 5%
[14:58:23] [Worker-Main-5/INFO]: Preparing spawn area: 8%
[14:58:24] [Worker-Main-6/INFO]: Preparing spawn area: 15%
[14:58:24] [Worker-Main-5/INFO]: Preparing spawn area: 17%
[14:58:25] [Worker-Main-5/INFO]: Preparing spawn area: 24%
[14:58:25] [Worker-Main-5/INFO]: Preparing spawn area: 30%
[14:58:26] [Worker-Main-7/INFO]: Preparing spawn area: 33%
[14:58:26] [Worker-Main-5/INFO]: Preparing spawn area: 42%
[14:58:27] [Worker-Main-7/INFO]: Preparing spawn area: 48%
[14:58:27] [Worker-Main-5/INFO]: Preparing spawn area: 55%
[14:58:28] [Worker-Main-5/INFO]: Preparing spawn area: 59%
[14:58:28] [Worker-Main-7/INFO]: Preparing spawn area: 70%
[14:58:29] [Worker-Main-5/INFO]: Preparing spawn area: 76%
[14:58:29] [Worker-Main-7/INFO]: Preparing spawn area: 84%
[14:58:30] [Worker-Main-6/INFO]: Preparing spawn area: 93%
[14:58:30] [Server thread/INFO]: Time elapsed: 9356 ms
[14:58:30] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end
[14:58:30] [Worker-Main-5/INFO]: Preparing spawn area: 0%
[14:58:31] [Worker-Main-5/INFO]: Preparing spawn area: 15%
[14:58:31] [Worker-Main-7/INFO]: Preparing spawn area: 49%
[14:58:32] [Worker-Main-7/INFO]: Preparing spawn area: 90%
[14:58:32] [Server thread/INFO]: Time elapsed: 1580 ms
[14:58:32] [Server thread/INFO]: Done (39.180s)! For help, type "help"

minecraft にログインして動作確認。

spigot 停止

サーバーのコンソールから「stop」コマンドを実行して spigot を停止させる。

>stop
[15:08:57] [Server thread/INFO]: Stopping the server
[15:08:57] [Server thread/INFO]: Stopping server
[15:08:57] [Server thread/INFO]: Saving players
[15:08:57] [Server thread/INFO]: Saving worlds
[15:08:57] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld
[15:08:58] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
[15:08:58] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether
[15:08:59] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
[15:08:59] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end
[15:08:59] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
[15:08:59] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
[15:08:59] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
[15:08:59] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved

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

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

起動スクリプト作成

spigot_start.sh というファイル名で起動スクリプトを作成する。

$ vi spigot_start.sh

起動スクリプト

#!/bin/bash
# spigot 実行ユーザー
USERNAME='spigotadmin'
# spigot 実行ファイル
SERVICE='spigot-1.16.5.jar'
# screen に使用する名前
SCNAME='spigot'
# spigot がインストールされているディレクトリ
SPI_PATH='/opt/spigot'
# spigot 最大メモリ使用量
XMX="2048M"
# spigot 初期メモリ使用量
XMS="2048M"
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."
fi

停止スクリプト作成

spigot_stop.sh というファイル名で起動スクリプトを作成する。

$ vi spigot_stop.sh
#!/bin/bash
# spigot 実行ユーザー
USERNAME='spigotadmin'
# spigot 実行ファイル
SERVICE='spigot-1.16.5.jar'
# screen に使用する名前
SCNAME='spigot'
# spigot がインストールされているディレクトリ
SPI_PATH='/opt/spigot'
 
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

パーミッションの変更

$ chmod 744 spigot_start.sh
$ chmod 744 spigot_stop.sh

パーミッションの確認

$ ls -l spigot_*
-rwxr--r-- 1 spigotadmin spigotadmin 639  1月 23 15:28 spigot_start.sh
-rwxr--r-- 1 spigotadmin spigotadmin 794  1月 23 15:31 spigot_stop.sh

スクリプト動作確認

起動スクリプト実行

$ ./spigot_start.sh
Starting spigot-1.16.5.jar...

screen へ接続

$ screen -r spigot
[16:15:39] [Server thread/INFO]: Time elapsed: 11265 ms
[16:15:39] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether
[16:15:40] [Server thread/INFO]: Preparing spawn area: 0%
[16:15:40] [Server thread/INFO]: Preparing spawn area: 0%
[16:15:40] [Server thread/INFO]: Preparing spawn area: 0%
[16:15:41] [Worker-Main-4/INFO]: Preparing spawn area: 83%
[16:15:41] [Worker-Main-6/INFO]: Preparing spawn area: 83%
[16:15:42] [Worker-Main-4/INFO]: Preparing spawn area: 83%
[16:15:42] [Worker-Main-4/INFO]: Preparing spawn area: 83%
[16:15:43] [Server thread/INFO]: Preparing spawn area: 84%
[16:15:43] [Worker-Main-6/INFO]: Preparing spawn area: 86%
[16:15:44] [Worker-Main-4/INFO]: Preparing spawn area: 92%
[16:15:44] [Server thread/INFO]: Time elapsed: 4786 ms
[16:15:44] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end
[16:15:45] [Server thread/INFO]: Preparing spawn area: 0%
[16:15:45] [Server thread/INFO]: Preparing spawn area: 0%
[16:15:45] [Worker-Main-4/INFO]: Preparing spawn area: 83%
[16:15:46] [Server thread/INFO]: Time elapsed: 1292 ms
[16:15:46] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[16:15:46] [Server thread/INFO]: Done (17.897s)! For help, type "help"

screen からの抜け方 「Ctrl」+ 「a」を押下 → 「d」を押下で screen から抜けることができる。

停止スクリプト実行確認

停止スクリプト実行

$ ./spigot_stop.sh
Stopping spigot-1.16.5.jar
Stopped minecraftserver

自動起動設定

サーバーの再起動を行っても spigot が起動してくるように自動起動の設定を行う。

自動起動ファイルの作成

vi /etc/systemd/system/spigot.service

設定ファイル

[Unit]
Description=Minecraft Server (spigot)
After=network.target local-fs.target
[Service]
Type=forking
# spigot 実行ユーザー
User=spigotadmin
# spigot 実行スクリプト
ExecStart=/opt/spigot/spigot_start.sh
# spigot 停止スクリプト
ExecStop=/opt/spigot/spigot_stop.sh
[Install]
WantedBy=multi-user.target

自動起動設定

systemctl コマンドで自動起動の設定を行う。

systemctl enable spigot.service

自動起動設定

systemctl コマンドで自動起動の設定を行う。

systemctl enable spigot.service
Created symlink from /etc/systemd/system/multi-user.target.wants/spigot.service to /etc/systemd/system/spigot.service.

CentOS7 の RAM ディスクの容量を増やす方法

$ df -h

ファイルシス サイズ 使用 残り 使用% マウント位置
(省略)
tmpfs   4.0G   37M  4.0G    1% /mnt/ram
(省略)

マウント解除

$ umount /mnt/ram/

マウント解除されたことを確認

$ df -h

サイズを5Gにしてマウント

$ mount -t tmpfs -o size=5120m tmpfs /mnt/ram

マウントされていることを確認

$ df -h
(省略)
tmpfs                     5.0G     0  5.0G    0% /mnt/ram
(省略)

再起動後も自動マウントするよう fstab を編集

$ vi /etc/fstab

編集前

tmpfs /mnt/ram tmpfs defaults,size=4096m 0 0

編集後

tmpfs /mnt/ram tmpfs defaults,size=5120m 0 0

CentOS7 に最新版の Git をインストールする方法

依存関係のあるライブラリをインストール

sudo yum -y install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf

ダウンロード対象を確認

https://git-scm.com/download/linux から The latest version is 2.30.0. のリンクをコピー。

Git パッケージをダウンロード

# インストールに適切な場所に移動
cd /usr/local/src/

# Git の圧縮ファイルをダウンロード
sudo wget https://www.kernel.org/pub/software/scm/git/git-2.30.0.tar.gz

# ファイル解凍
sudo tar xzvf git-2.30.0.tar.gz

Git をインストール

# 解凍した Git ディレクトリに移動
cd git-2.30.0

# make コマンドでインストール
sudo make prefix=/usr/local all
sudo make prefix=/usr/local install

インストールされたか確認

# バージョン確認
$ git --version
git version 1.8.3.1
# TeraTerm等を立ち上げ直して再度確認
$ git --version
git version 2.30.0

Git基本コマンド

git init

リモートリポジトリの追加

git remote add origin [URL]

ファイルの追加

git add *

ファイル名を指定して追加

git add [ファイル名]

addを取り消す

git reset

追加されたファイルの確認

git status

ファイルをコミット

git commit -m "任意のコメント"

直前のコミットを修正する

git commit --amend

ファイルをプッシュ。masterを更新。

git push origin master

ブランチ

ブランチの作成

git branch test_branch_01

ローカルブランチの一覧

git branch

リモートとローカルブランチの一覧

git branch -a

リモートブランチの一覧

git branch -r

ブランチへ移動

git checkout [ブランチ名]

リモートブランチにpush

git push origin HEAD

マージ

masterに移動

git checkout master

ブランチの差分をマージ

git merge [ブランチ名]

マージを取り消す

git merge --abort

ファイルの更新

git push origin master

【PHP】多次元配列の列のすべての値を合計する方法

以下のような多次元配列があります。

$array10 = array(
  array(
    "kill" => array(
      "zombie" => 10,
      "skeleton" => 15
    ),
    "killed" => array(
      "zombie" => 5,
      "skeleton" => 3
    )
  ),
  array(
    "kill" => array(
      "zombie" => 20,
      "skeleton" => 30
    ),
    "killed" => array(
      "zombie" => 10,
      "skeleton" => 6
    )
  )
);

killのzombie、killのskeleton及びkilledのzombie、killedのskeletonそれぞれ項目別に合計する方法。

foreach ($array10 as $subArray) {
  foreach ($subArray as $key => $values) {
    foreach ($values as $id => $value) {
      $array11[$key][$id] += $value;
    }
  }
}