server-memo.net

さくらのVPSでminecraftサーバを構築 minecraft_serverインストール編

      2016/11/20

私はさくらVPSを使ってマイクラのサーバをたてています


更新履歴

  • 2015.04.27 minecraft_server起動・停止スクリプトの変更
  • 2016.03.07 minecraft_server起動・停止スクリプトの変更

メニュー

インストール関連
運用関連

CentOS7のインストールと設定が完了したので、いよいよminecraftサーバのインストールを行っていきます。
今回は、http://minecraft.gamepedia.com/Tutorials/Server_startup_scriptの記述を参考にして、作業を行いました。

javaのインストール

まずは、minecraftを動作させるのに必要な「java」のインストールを「yum」で行っていきます。

# yum -y install java

minecraftではjavaのバージョン1.6以上が必要なので、念のためバージョンを確認します。

# java -version
java version "1.7.0_75"
OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

screenインストール

今回は、minecraftサーバをバックグラウンドで動作させる為に、「screen」というソフトを使用していきますので、インストールを行っていきます。

# yum -y install screen

wgetインストール

minecraft本体をダウンロードする際に必要な「wget」もインストールします。

# yum -y install wget

minecraftインストール

minecraftサーバインストールの準備が整いましたので、minecraftサーバのインストールを始めていきます。

ユーザの作成

rootユーザでminecraft_serverを動作させてしまうと、セキュリティ上問題があるので、専用のユーザを作成します。
今回はminecraftというユーザを作成していきます。

ユーザ作成

# adduser minecraft
# passwd minecraft
Changing password for user minecraft.
New password:
Retype new password:

minecraft_serverダウンロード

Minecraftのダウンロードページで、minecraft_server.jarのダウンロードURLを確認「wget」コマンドでダウンロードしてきます。 (2016.06.14 ダウンロード用のURLが変更されていたので、リンク先を変更しました。)

Minecraftのマルチサーバ用ダウンロードページで、「minecraft_server.x.x.jar」ファイルのURLを確認し、「wget」コマンドでダウンロードしてきます。

これは、好みの問題ですが、私は/opt/ディレクトリの下でminecraft_serverを動作させたいので、それようのディレクトリを作成します。

# mkdir /opt/minecraft
# chown minecraft:minecraft /opt/minecraft/
# su - minecraft

$ cd /opt/minecraft/ $ wget https://s3.amazonaws.com/Minecraft.Download/versions/1.10/minecraft_server.1.10.jar

minecraft_Serverのコピー

ダウンロードしてきたファイルの名前を、「minecraft_server.jar」とう名前で複製します。もとのファイルはバックアップとして保存しておき、今後はこちらの方を使用していきます。

$ cp -p minecraft_server.1.8.3.jar minecraft_server.jar

minecraft_server初回起動

minecraft_serverの起動は下記コマンド行えますが、一番最初の起動は必ずEULA(使用許諾契約)の関係で必ず失敗し、「Stopping server」と表示されるはずです。

$ java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui
[19:09:40] [Server thread/INFO]: Starting minecraft server version 1.8.3
[19:09:40] [Server thread/INFO]: Loading properties
[19:09:40] [Server thread/WARN]: server.properties does not exist
[19:09:40] [Server thread/INFO]: Generating new properties file
[19:09:40] [Server thread/WARN]: Failed to load eula.txt
[19:09:40] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[19:09:40] [Server thread/INFO]: Stopping server

EULA(使用許諾契約)同意

最初の起動に失敗すると、「minecraft_server.jar」があるディレクトリを「ls」コマンドで確認してみると、「eula.txt」と「server.properties」というファイルと「logs」というディレクトリが作成されているはずです。それぞれの役割は下記のようになっています。

  • eula.txt EULAについてのファイル
  • server.properties minecraft_serverの設定ファイル
  • logs ログ格納ディレクトリ
$ ls -la
total 19112
drwxr-xr-x 3 minecraft minecraft 116 Mar 24 19:09 .
drwxr-xr-x. 3 root root 22 Mar 24 19:02 ..
-rw-rw-r-- 1 minecraft minecraft 181 Mar 24 19:09 eula.txt
drwxrwxr-x 2 minecraft minecraft 23 Mar 24 19:09 logs
-rw-rw-r-- 1 minecraft minecraft 9778206 Feb 20 23:22 minecraft_server.1.8.3.jar
-rw-rw-r-- 1 minecraft minecraft 9778206 Feb 20 23:22 minecraft_server.jar
-rw-rw-r-- 1 minecraft minecraft 59 Mar 24 19:09 server.properties

EULAの確認

「eula.txt」ファイルを「cat」コマンド等で確認してみると、EULAについての説明が書いてあることが分かりますので、記述されているURLの内容に目を通してみてください。

$ cat eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Tue Mar 24 19:09:40 JST 2015
eula=false

EULAへの同意

EULAの内容を確認しましたら、「eula.txt」を編集しEULAに同意します。

$ vi eula.txt
編集内容

「eula=false」を「eula=true」に変更することで、EULAに同意したこととなります。

変更前

eula=false

変更後

eula=true

minecraftサーバの起動

EULAへの同意設定が完了すると、minecraftサーバを起動することが出来るようになるので、下記のコマンドで起動させます。

起動コマンド

$ java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui
[19:14:09] [Server thread/INFO]: Starting minecraft server version 1.8.3
[19:14:09] [Server thread/INFO]: Loading properties
[19:14:10] [Server thread/INFO]: Default game type: SURVIVAL
[19:14:10] [Server thread/INFO]: Generating keypair
[19:14:10] [Server thread/INFO]: Starting Minecraft server on *:25565

     中略

[19:14:29] [Server thread/INFO]: Preparing spawn area: 89%
[19:14:30] [Server thread/INFO]: Preparing spawn area: 95%
[19:14:31] [Server thread/INFO]: Done (20.519s)! For help, type "help" or "?"

正常に起動が完了すると「Done」と表示され、コマンド入力待ちうけ状態になります。

minecraftサーバへの接続確認

minecraftサーバの起動に成功しましたら、minecraftサーバに接続できるか、クライアント側から接続できるかの動作確認を行います。

サーバへの接続方法

Minecraftのクライアントを立ち上げて「マルチプレイ」ボタンを押下します。
その際、画面左下のバージョンを確認し、接続するサーバとバージョンがあっているか確認してください。サーバとクライアントのバージョンが異なると、接続できないので注意してください。

sakura-minecraft059

マルチプレイで遊ぶ画面が表示されるので、「サーバ追加」ボタンを押下します。

sakura-minecraft061

サーバ情報の編集画面が表示されるので、「サーバ名」欄にサーバの名前を入力し、「サーバアドレス」欄にはサーバのIPアドレスまたは、FQDNを入力し「完了」ボタンを押下します。

sakura-minecraft062

追加したサーバを選択し「サーバに接続」ボタンを押下し、サーバにログインします。

sakura-minecraft064

無事ログイン処理が完了すると、いつもMinecraftの画面が表示されます。

sakura-minecraft067

Minecraftサーバの停止

正常に接続できることを確認できましたら「stop」と入力することでMinecraftサーバを停止させます。

stop
[19:45:10] [Server thread/INFO]: Stopping the server
[19:45:10] [Server thread/INFO]: Stopping server
[19:45:10] [Server thread/INFO]: Saving players
[19:45:10] [Server thread/INFO]: Saving worlds
[19:45:10] [Server thread/INFO]: Saving chunks for level 'world'/Overworld
[19:45:10] [Server thread/INFO]: Saving chunks for level 'world'/Nether
[19:45:10] [Server thread/INFO]: Saving chunks for level 'world'/The End
[19:45:11] [Server Shutdown Thread/INFO]: Stopping server
[19:45:11] [Server Shutdown Thread/INFO]: Saving players
[19:45:11] [Server Shutdown Thread/INFO]: Saving worlds
[19:45:11] [Server Shutdown Thread/INFO]: Saving chunks for level 'world'/Overworld

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

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

こちらのサイトのスクリプトを参考にしてCentOS7用のスクリプトを作成しました。

起動用スクリプトの作成

mc_start.shといった名前でminecraftサーバの起動用のスクリプトを作っていきます。

$ vi mc_start.sh
変数説明

起動スクリプトで設定が必要な変数の説明です。

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

「XMX」と「XMS」については、「minecraft_server」が使用するメモリの量となりますので、サーバのメモリと相談して設定するのですが、サーバに積んでいるメモリ全部割り当ててしまうと、OS(システム)が使用する分なくなってしまうので、この値を変更する場合は、かならずOSが使用するメモリ分は残るように設定指定ください。

※よくわからない場合は、とりあえず「1024M」のままにしておいて、動作が重いといった場合変更してみてください。

起動スクリプト

変数部分に変更が必要な場合は、適宜変更願います。

#!/bin/bash

USERNAME='minecraft'
SERVICE='minecraft_server.jar'
SCNAME='minecraft'
MC_PATH='/opt/minecraft'

XMX="1024M"
XMS="1024M"

cd $MC_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

変更履歴
  • 2015.04.27 minecraftユーザでのみ起動できるように変更
  • 2016.03.07 変数追加

パーミッションの変更

スクリプトを作成したminecraftユーザのみが実行できるように、作成した起動スクリプトのパーミッションを変更します。

$ chmod 744 mc_start.sh
パーミッションの確認

スクリプトを作成したminecraftユーザのみが、実行できるようになっていることを確認します。

$ ls -la mc_start.sh
-rwxr--r-- 1 minecraft minecraft 288 Apr  3 17:38 mc_start.sh

停止用スクリプトの作成

起動用のスクリプトを作りましたので、ついでに停止用のスクリプトも作ってしまいます。

$ vi mc_stop.sh
変数説明
変数 設定内容
USERNAME minecraft_server実行ユーザを設定
SERVICE minecraft_server実行ファイルを設定
SCNAME screenに指定する名前を設定
MC_PATH minecraft_serverがインストールされているディレクトリを設定
停止スクリプト

サーバを停止する前に、停止することをみんなに通知しデータのセーブを行ってから停止する流れになっています。

#!/bin/bash

USERNAME='minecraft'
SERVICE='minecraft_server.jar'
SCNAME='minecraft'
MC_PATH='/opt/minecraft'

cd $MC_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
変更履歴
  • 2015.04.27 minecraftユーザでのみ停止できるように変更
  • 2016.03.07 スクリプト変更 変数追加・screenに渡すコマンド変更「/」を削除

パーミッションの変更

こちらもminecraftユーザのみが実行できるように、パーミッションを変更します。

# chmod 744 mc_stop.sh
パーミッションの確認

スクリプトを作成したminecraftユーザのみが、実行できるようになっていることを確認します。

$ ls -la mc_stop.sh
-rwxr--r-- 1 minecraft minecraft 553 Apr  3 17:39 mc_stop.sh

起動スクリプトの実行確認

$ ./mc_start.sh

screenの確認

スクリプトから起動されたminecraftサーバはminecraftという名前のscreen上で実行されています。

$ screen -ls
There is a screen on:
15677.minecraft (Detached)
1 Socket in /var/run/screen/S-minecraft.

minecraft screenへ接続

「screen -r minecraft」と実行することで接続することができるので、minecraftが実行されているscreenに接続(Attach)し、正常にminecraftが起動されているかどうか確認します。

$ screen -r minecraft
[17:41:14] [Server thread/INFO]: Starting minecraft server version 1.8.3>
[17:41:14] [Server thread/INFO]: Loading properties
[17:41:14] [Server thread/INFO]: Default game type: SURVIVAL
[17:41:14] [Server thread/INFO]: Generating keypair
[17:41:15] [Server thread/INFO]: Starting Minecraft server on *:25565
[17:41:15] [Server thread/INFO]: Using epoll channel type
[17:41:15] [Server thread/INFO]: Preparing level "world"
[17:41:15] [Server thread/INFO]: Preparing start region for level 0
[17:41:16] [Server thread/INFO]: Preparing spawn area: 78%
[17:41:16] [Server thread/INFO]: Done (1.417s)! For help, type "help" or "?"

「Done」と表示されて、コマンド入力待ちになっていれば正常に起動されていますので、minecraftのクライアントから接続できるか試してみてください。

minecraft screenから抜けるには

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

minecraftサーバの停止

$ /opt/minecraft/mc_stop.sh

minecraft 自動起動設定

このままでは、サーバの再起動を行った場合など手動でminecraftを起動しなくては行けないので、サーバ起動時に自動的にminecraftサーバを起動させる設定を行っていきます。

systemd用ファイル作成

CentOS7からサービスの管理が変わって「systemd」での管理へ変更となっています。

ですので、systemd用の設定ファイルを「/etc/systemd/system」ディレクトリに作成していきます。ファイル名は「minecraft.service」として作成していきます。

$ su -
# vi  /etc/systemd/system/minecraft.service
設定内容
[Unit]
Description=Minecraft Server
After=network.target local-fs.target

[Service]
Type=forking
User=minecraft
ExecStart=/opt/minecraft/mc_start.sh
ExecStop=/opt/minecraft/mc_stop.sh

[Install]
WantedBy=multi-user.target

自動起動設定

「systemctl」コマンドを使用して、「minecraft.service」の自動起動設定を行います。

# systemctl enable minecraft
ln -s '/etc/systemd/system/minecraft.service' '/etc/systemd/system/multi-user.target.wants/minecraft.service'

minecraftユーザ設定

minecarftユーザの環境設定ファイルである「/home/minecraft/.bash_profile」を編集し、「/opt/minecraft」へのパスを通しておきます。

# su - minecraft
$ cd
$ cp -p .bash_profile .bash_profile_yyyymmdd
$ vi .bash_profile
編集内容

「PATH」の部分に「/opt/minecraft」を追加します。

編集前
PATH=$PATH:$HOME/.local/bin:$HOME/bin
編集後
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/minecraft

サーバ再起動

最後にサーバの再起動を行って、自動的にminecraftサーバが起動してくることを確認してください。

$ su -
# reboot

サーバの再起動後、minecraftクライアントから接続して、無事接続できればインストール作業はひとまず完了となります。

 - インストール