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

【使用しているVPS】さくらのVPS 2G

「CentOS7」環境にminecraftマルチサーバをインストールする手順を解説しています。

上記ページで解説した作業で、CentOS7のインストールとOS関連設定が完了しましたので、いよいよminecraftマルチサーバのインストール作業を行っていきます。

※マルチサーバのインストール手順はこちらのページを参考に作成しています。

事前準備

はじめにminecraftマルチサーバをインストールするために必要なアプリケーションの準備をしていきます。

javaのインストール

minecraftを動作させるために必要な「java」を「yum」コマンドを使用してインストールしていきます。

# yum -y install java

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

Minecraftマルチサーバのバージョン1.12からシステム要求が変更となり、javaはバージョン1.8以上が必要となりましたので、yumでインストール後にバージョンの確認を忘れずに行ってください。

# java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-b16)
OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)

【システム要件】 https://help.mojang.com/customer/en/portal/articles/325948-minecraft-system-requirements

screenインストール

今回は「screen」の仮想端末上でminecraftマルチサーバを動作させる為に、「screen」をインストールします。

# yum -y install screen

wgetインストール

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

# yum -y install wget

minecraftマルチサーバインストール

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

minecraftマルチサーバ動作用ユーザの作成

rootユーザでminecraftマルチサーバを動作させてしまうとセキュリティ上問題があるので、専用のユーザを作成します。

今回は「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マルチサーバのデータを格納したいので「/opt/minecraft」というディレクトリを作成します。

ディレクトリが作成出来たら、ディレクトリの所有者を先ほど作成したマルチサーバ動作用ユーザに変更しておきます。

# mkdir /opt/minecraft
# chown minecraft:minecraft /opt/minecraft/

別のディレクトリを使用する場合は、ディレクトリ名を適宜読み変えて作業を行ってください。

ダウンロード

「wget」コマンドで、先ほど確認したダウンロードURLから「minecraft_server.x.x.x.jar」ファイルをダウンロードしてきます。

# su - minecraft
$ cd /opt/minecraft/
$ wget https://s3.amazonaws.com/Minecraft.Download/versions/1.12.1/minecraft_server.1.12.1.jar

minecraft_serverのコピー

ダウンロードしてきたファイルの名前を、「minecraft_server.jar」という名前でコピーをし、ダウンロードしてきたファイルはバックアップとして保存しておきます。

$ cp -p minecraft_server.1.12.1.jar minecraft_server.jar

EULA(使用許諾契約)同意

マイクラのマルチサーバを動作させるためには「EULA」(使用許諾契約)への同意が必要となります。

「eula.txt」作成

「EULA」(使用許諾契約)への同意は「eula.txt」といるファイルを編集して行うのですが、初期状態ではこのファイルは存在していませんが、「minecraft_server.jar」を実行することで、「eula.txt」というファイルが作成されます。

「minecraft_server.jar」は下記の要領で実行します。

java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui

「eula.txt」が無い状態で「minecraft_server.jar」を起動すると、「Stopping server」と表示され「minecraft_server.jar」は自動的に停止しますが問題はありません。

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

「minecraft_server.jar」が停止したあとに、「ls」コマンドで確認してみると「eula.txt」と「server.properties」というファイルと「logs」というディレクトリが作成されているはずです。

$ ls
eula.txt  logs  minecraft_server.1.12.1.jar  minecraft_server.jar  server.properties

それぞれの役割は以下の通りとなります。

  • eula.txt (EULAについてのファイル)
  • server.properties (minecraft_serverの設定ファイル)
  • logs (ログ格納ディレクトリ)

EULAの確認

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

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Fri Aug 11 21:05:32 JST 2017
eula=false

EULAへの同意

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

$ vi eula.txt
編集内容

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

変更前

eula=false

変更後

eula=true

minecraftマルチサーバへの接続確認

EULAへの同意設定が完了すると、minecraftのマルチサーバを起動することが出来るようになるので、クライアントからの接続確認を行っていきます。

「minecraft_server.jar」実行

下記コマンドで「minecraft_server.jar」を実行します。

java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui

実際に起動させた際のログが以下となります。

$ java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui
[21:23:22] [Server thread/INFO]: Starting minecraft server version 1.12.1
[21:23:22] [Server thread/INFO]: Loading properties
[21:23:22] [Server thread/INFO]: Default game type: SURVIVAL
[21:23:22] [Server thread/INFO]: Generating keypair
[21:23:22] [Server thread/INFO]: Starting Minecraft server on *:25565

     中略

[21:23:32] [Server thread/INFO]: Preparing spawn area: 87%
[21:23:33] [Server thread/INFO]: Preparing spawn area: 99%
[21:23:33] [Server thread/INFO]: Done (10.905s)! For help, type "help" or "?"

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

minecraftマルチサーバへの接続確認

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

マルチサーバへの接続方法

Minecraftのクライアントを立ち上げて「マルチプレイ」ボタンを押下します。

その際に画面左下のバージョンを確認し、接続するサーバとバージョンがあっているか確認してください。
マルチサーバとクライアントのバージョンが異なると接続できないので注意してください。

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

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

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

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

Minecraftマルチサーバの停止

クライアントから正常に接続できることを確認できましたら、「stop」と入力することでMinecraftマルチサーバを停止させます。

stop
[21:54:16] [Server thread/INFO]: Stopping the server
[21:54:16] [Server thread/INFO]: Stopping server
[21:54:16] [Server thread/INFO]: Saving players
[21:54:16] [Server thread/INFO]: Saving worlds
[21:54:16] [Server thread/INFO]: Saving chunks for level 'world'/overworld
[21:54:16] [Server thread/INFO]: Saving chunks for level 'world'/the_nether
[21:54:16] [Server thread/INFO]: Saving chunks for level 'world'/the_end
[21:54:17] [Server Shutdown Thread/INFO]: Stopping server

Minecraftマルチサーバの自動起動設定

現状は、サーバを再起動するたびに手動で「minecraft_server.jar」を実行しなければいけないという、非常に面倒な状況なので「systemd」で管理しサーバが起動した際に自動起動できるようにするための仕掛けを作成していきます。

メンテナンス用スクリプトの作成

まずは「systemd」に登録するための事前準備として、minecraftマルチサーバの起動や停止を行えるスクリプトを作成していきます。(バックアップ機能も追加しました)

mc_script.shといった名前でメンテナンス用のスクリプトを作っていきます。

$ vi mc_script.sh

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

変数説明

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

変数 設定内容
USERNAME minecraft_server実行ユーザ設定
SCNAME screenに指定する名前を設定
MC_PATH minecraft_serverがインストールされているディレクトリを設定
SERVICE minecraft_server実行ファイルを設定
XMX minecraft_server最大メモリ使用量を設定
XMS minecraft_server初期メモリ使用量を設定
BK_DIR バックアップしたデータを保管するディレクトリ
BK_TIME バックアップを取得した日時
FULL_BK_NAME 完全バックアップで取得したデータにつける名前
HOUR_BK_NAME 簡易バックアップで取得したデータにつける名前
BK_FILE 簡易バックアップ対象データ
BK_GEN バックアップしたデータの保管数

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

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

起動・停止スクリプト

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

#!/bin/bash
#
# mincraft_server start/stop/backup script
#

# mincraft_server.jar 実行ユーザ
USERNAME='minecraft'

# screen名
SCNAME='minecraft'

# minecraft_serverディレクトリ
MC_PATH='/opt/minecraft'

# 実行するminecraft_server.jar
SERVICE='minecraft_server.jar'

# メモリ設定
XMX='1024M'
XMS='1024M'

## バックアップ用設定
# バックアップ格納ディレクトリ
BK_DIR="/home/$USERNAME/mc_backup"

# バックアップ取得時間
BK_TIME=`date +%Y%m%d-%H%M%S`

# 完全バックアップデータ名
FULL_BK_NAME="$BK_DIR/mc_backup_full_${BK_TIME}.tar.gz"

# 簡易パックアップデータ名
HOUR_BK_NAME="$BK_DIR/mc_backup_hourly_${BK_TIME}.tar"

# 簡易バックアップ対象データ
BK_FILE="$MC_PATH/world \
  $MC_PATH/banned-ips.json \
  $MC_PATH/banned-players.json \
  $MC_PATH/ops.json \
  $MC_PATH/server.properties \
  $MC_PATH/usercache.json \
  $MC_PATH/whitelist.json"

# バックアップデータ保存数
BK_GEN="3"

cd $MC_PATH

if [ ! -d $BK_DIR ]; then
  mkdir $BK_DIR
fi

ME=`whoami`

if [ $ME != $USERNAME ]; then
  echo "Please run the $USERNAME user."
  exit
fi

start() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
    echo "$SERVICE is already running!"
    exit
  fi
  echo "Starting $SERVICE..."
  screen -AmdS $SCNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui
}

stop() {
  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"
    exit
  else
    echo "$SERVICE is not running!"
    exit
  fi
  screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. "\015'
  sleep 10
  screen -p 0 -S $SCNAME -X eval 'stuff "exit"\015'
}

h_backup() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
    echo "Backup start minecraft data..."
    screen -p 0 -S $SCNAME -X eval 'stuff "save-all"\015'
    sleep 10
    screen -p 0 -S $SCNAME -X eval 'stuff "save-off"\015'
    tar cfv $HOUR_BK_NAME $BK_FILE
    sleep 10
    screen -p 0 -S $SCNAME -X eval 'stuff "save-on"\015'
    echo "minecraft_server backup compleate!"
    gzip -f $HOUR_BK_NAME
    find $BK_DIR -name "mc_backup_hourly_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
  else
    echo "$SERVICE was not runnning."
  fi
}

f_backup() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
    echo "Full backup start minecraft data..."
    screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..."\015'
    sleep 10
    screen -p 0 -S $SCNAME -X eval 'stuff "save-all"\015'
    screen -p 0 -S $SCNAME -X eval 'stuff "stop"\015'
    echo "Stopped minecraft_server"
    echo "Full Backup start ..."
    tar cfvz $FULL_BK_NAME $MC_PATH
    sleep 10
    echo "Full Backup compleate!"
    find $BK_DIR -name "mc_backup_full*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
    echo "Starting $SERVICE..."
    screen -AmdS $SCNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui
  else
    echo "$SERVICE was not runnning."
  fi
}

status() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
    echo "$SERVICE is already running!"
    exit
  else
    echo "$SERVICE is not running!"
    exit
  fi
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  h_backup)
    h_backup
    ;;
  f_backup)
    f_backup
    ;;
  status)
    status
    ;;
  *)
    echo  $"Usage: $0 {start|stop|h_backup|f_backup|status}"
esac
使用方法

スクリプトを実行する際に「start」「stop」「h_backup」「f_backup」「status」を引数として指定します。

mc_script.sh 引数
引数 動作 説明
start サーバ起動 minecraftマルチサーバを起動します
stop サーバ停止 minecraftマルチサーバを停止します
h_backup 簡易バックアップ サーバを起動したままバックアップを実行するため、BK_FILEで指定したデータのみのバックアップとなります
f_backup フルバックアップ サーバを停止後、マルチサーバが格納されているディレクトリ丸ごとバックアップをとります
status 起動状況確認 マルチサーバの起動状況を確認します
変更履歴
  • 2015.04.27 minecraftユーザでのみ起動できるように変更
  • 2016.03.07 変数追加
  • 2017.08.11 起動・停止・バックスクリプトを統合
  • 2017.08.17 バックアップ処理の不具合を修正

パーミッションの変更

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

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

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

$ ls -la mc_script.sh
-rwxr--r-- 1 minecraft minecraft 3867 Aug 11 22:52 mc_script.sh

スクリプトの動作確認

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

スクリプトを実行する際に「-x」オプションをつけて実行すると、スクリプトの実行状況が確認できるので、正常に動作しない場合の問題切り分けに役立ててください。

起動確認

スクリプトを実行して、正常にマルチサーバが起動するか確認していきます。

$ sh -x /opt/minecraft/mc_script.sh start

スクリプトを実行すると「screen」からスクリプトの「SCNAME」で設定した名前の仮想端末が起動して、そこでminecraftマルチサーバが起動されます。

screenの仮想端末が起動しているかは「screen -ls」で確認することができます。

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

「16801.minecraft (Detached)」と表示されているので、仮想端末が起動していることが分かります。

仮想端末へ接続(Attach)

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

$ screen -r minecraft
[22:58:15] [Server thread/INFO]: Starting minecraft server version 1.12.1
[22:58:15] [Server thread/INFO]: Loading properties
[22:58:15] [Server thread/INFO]: Default game type: SURVIVAL
[22:58:15] [Server thread/INFO]: Generating keypair
[22:58:15] [Server thread/INFO]: Starting Minecraft server on *:25565
[22:58:15] [Server thread/INFO]: Using epoll channel type
[22:58:15] [Server thread/INFO]: Preparing level "world"
[22:58:16] [Server thread/INFO]: Loaded 488 advancements
[22:58:16] [Server thread/INFO]: Preparing start region for level 0
[22:58:17] [Server thread/INFO]: Preparing spawn area: 40%
[22:58:17] [Server thread/INFO]: Done (1.853s)! For help, type "help" or "?"

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

仮想端末から抜ける(Detach)

正常に起動していることが確認できましたら、「Ctrl」+「a」を押下した後に「d」を押下して現在接続している「screen」から抜けて(Detach)ください。

停止確認

正常に起動することが確認できましたら、停止機能の動作確認を行っていきます。

$ sh -x ./mc_script.sh stop

正常に停止すると起動時に作成された仮想端末がなくなります。

$ screen -ls
No Sockets found in /var/run/screen/S-minecraft.

「No Sockets found」と表示されているので、何も仮想端末が起動していないことが分かります。

systemd用設定ファイル作成

メンテナンス用スクリプトの動作確認が完了しましたら、次にsystemdでminecraftマルチサーバを管理する設定を行って自動起動を出来るように、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_script.sh start
ExecStop=/opt/minecraft/mc_script.sh stop

[Install]
WantedBy=multi-user.target

minecraftマルチサーバの実行ユーザを変更している場合は、「User=minecraft」の部分を適宜変更してください。

自動起動設定

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

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

自動起動動作確認

systemdの設定が終わりましたら、サーバの再起動を行って自動的にminecraftサーバが起動してくることを確認してください。

# reboot

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

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

シェアする

フォローする

コメント

  1. なっとうまき より:

    サーバーは立てたのですが、気に入らないワールドでしたのでワールドデータを消して再生成させたいと思うのですがどうすればよいですか?
    VPSは初めてなのでどうぞよろしくお願いいたします。

    • tamohiko より:

      なっとうまき さん
      ご質問ありがとうございます。

      今あるワールドを削除・再作成する方法は、ワールドデータが保存されているフォルダ(「world」フォルダ)の削除or名前変更の実施となります。

      作業手順は下記のとおりとなります。

      1.minecraftの停止
      現在動作しているminecraftを停止します。

      2.ワールドデータの削除
      minecraftをインストールしたフォルダ内にworldというフォルダがあるので、「rm」コマンドを使ってworldフォルダを削除するか、「mv」コマンドで名前を変更します。

      ・フォルダ削除
        rm -R world

      ・フォルダの名前変更
        mv world world_yyyymmdd

      ※「server.properties」で使用するワールドフォルダを変更している場合はそのフォルダを削除するか名前を変更してください。

      3.minecraft起動
      minecraftを起動します。

      以上で、古いワールドは削除されて、新しいワールドが作成されます。

      作業で分からない点がありましたら、またご連絡ください。

  2. なっとうまき より:

    現在512MBのプランでマインクラフトサーバーを立てて、友人3人でプレイをしているのですが、あまりにもタイムアウトが多いため2GBのプランへの変更を考えています。

    そこで今現在使っているワールドデータを移行したいのですがそれは可能でしょうか?
    どうぞよろしくお願いいたします。

    • tamohiko より:

      なっとうまきさん

      ご質問ありがとうございます。

      >そこで今現在使っているワールドデータを移行したいのですがそれは可能でしょうか?

      ワールドデータの移動は可能です。

      手順の方を簡単に説明させていただきます。

      2Gのサーバででminecraft_serverが動作する環境まで作成できましたら、512Mのサーバからworldフォルダを2Gのサーバにコピーすることで、ワールドデータの移行は行えます。

      worldフォルダのコピーは「scp」等を使用すれば簡単に行えます。

      【scpコマンド実行例】
      下記の条件での「scp」実行例となります。
      minecraftのインストールディレクトリが異なる場合は、適宜読み替えてください。

      ・2Gのサーバ側で実行
      ・minecraft_serverインストールユーザで実行
      ・minecraft_serverは停止状態
      ・minecraftインストールディレクトリは「/opt/minecraft」を想定

      ■既存のwoldディレクトリの名前を変更
      $ mv /opt/minecraft/world /opt/minecraft/world_old

      ■512Mのサーバからworldディレクトリをコピー
      $ scp -r -P SSHポート番号 ユーザ名@512MのサーバIP:/opt/minecraft/world /opt/minecraft

      ※ユーザ名は「/opt/minecraft」ディレクトリの所有者を指定してください。
      ※データ移行の前に念のため、512Mサーバworldディレクトリをバックアップしてください。

      以上となります。

      データを移行する際、ご存知かもしれませんが、現在さくらのVPSには無料お試し期間がありますので、まずは無料お試し期間を利用して動作確認を行ってみてください。

      ちなみに、私も2Gのサーバでminecraftを動作させていますが、3名程度であれば特にタイムアウトなどは発生してません。

      何かわからない点がありましたら、またご連絡ください。

  3. JK より:

    mc_stop.shの記述は誤りがあるように思えます。

    screen -p 0 -S minecraft -X eval ‘stuff “/say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map…”15’
    screen -p 0 -S minecraft -X eval ‘stuff “/save-all”15’
    sleep 10
    screen -p 0 -S minecraft -X eval ‘stuff “/stop”15’

    1行目はコメントとして/sayコマンドを使っていますが、
    2行目、3行目のコマンドについては”/”は不要かと思うのですが。
    むしろコンソールから/save-all , /stopを使うと存在しないコマンドとして何も起きないため、screenも残ります。残りました。
    修正お願いします。

    • tamohiko より:

      JK さん

      コメントありがとうございます。
      また、お返事がおそくなりすいません。

      >2行目、3行目のコマンドについては”/”は不要かと思うのですが。

      ご指摘いただきました件を「mc_stop.sh」とコンソールで直接コマンドを実行し検証してみたところ、私の環境では「/」をつけてもコマンドは正常に実行され、ワールドデータのセーブとサーバの停止が行われました。
      (「/」なしでも動作することも確認させていただきました。)

      また、screenも「No Sockets found」になり、ソケットは終了していました。

      $ screen -ls
      No Sockets found in /var/run/screen/S-minecraft.

      もしかすると、minecraft_serverのバージョンによって動作が異なるのかもしれませんので、もしよろしければ、JKさんが使用しているminecraft_serverのバージョンをお教えいただけますでしょうか?

    • tamohiko より:

      「/」の削除の件あれから色々と確認してみました。

      http://minecraft.gamepedia.com/Commands

      で確認したところ、マルチサーバのコンソールからコマンドを入力する際は、「/」必要ないみたいですね。

      ご指摘ありがとうございました。

      スクリプトの方修正させていただきました。
      また、修正に時間が掛かってしまい申し訳ありませんでした。

  4. くるちゃ より:

    マインクラフトサーバー(1.8.9)をダウンロードすることが出来ません。アドレスはあってると思うのですが…

    Cannot write to ‘minecraft_server.1.8.9.jar’ (Success).

    となり、ディレクトリに書き込めない?ようです。
    何か間違っているのでしょうか?
    初心者で申し訳ありませんが、よろしくお願いします。

    • くるちゃ より:

      別階層にDlできました…
      /opt/minecraft/
      に移動はできませんが…いじってみます…

      • tamohiko より:

        くるちゃさん

        ご質問ありがとうございます。

        >Cannot write to ‘minecraft_server.1.8.9.jar’ (Success).

        これの原因として考えられるのは、「/opt/minecraft/」の所有者と、ダウンロードしているユーザが違うために、この現象が起こっているのではないかと思われます。

        「/opt/minecraft」ディレクトリの所有者を「ls -l /opt」コマンドを実行して確認してみてください。下記に私の環境で実行した例を記述させていただきます。

        【実行例】
        $ ls -l /opt
        total 4
        drwxr-xr-x 5 minecraft minecraft 4096 Jan 11 14:55 minecraft

        「ls -l /opt」を実行すると、こんな感じで「/opt」ディレクトリにあるフォルダやファイルの情報が表示されます。

        念のために表示される内容を左から簡単に説明いたしますと、「パーミッション」「ディレクトリ内のディレクトリ数」「所有者」「グループ」「サイズ」「更新日時」「ディレクトリ or ファイル名」といったようになります。

        ここから、「/opt/minecraft」ディレクトリは、所有者とグループがminecratというユーザであることが分かります。

        ですので、この場合は「minecraft」というユーザでダウンロードを行わないと、書き込み権限がないため「Cannot write」というように、書き込みが失敗してしまいます。

        >/opt/minecraft/
        >に移動はできませんが…いじってみます…

        これも、ダウンロードしたデータを「/opt/minecraft」ディレクトリの所有者以外のユーザで移動させようとしていないでしょうか?

        私のサイトにある手順でインストールを行っていると仮定して説明しますが、この場合は、「/opt/minecraft」の所有者とグループは「minecraft」というユーザになっているので、すでにダウンロードしてあるデータの所有者とグループをrootユーザか何かでminecraftユーザに変更し、それを「/opt/minecraft」に移動すと、データの移動ができると思います。

        もしくは、minecraftユーザで再度「/opt/minecraft」ディレクトリにデータをダウンロードしてみてください。(こっちが簡単でおすすめです)

        もし、これでもダメなようならば再度ご連絡いただけますでしょうか?

        以上、よろしくお願いいたします。

  5. なっとうまき より:

    こちらのサイトで24時間サーバーを立てました。
    Ver.1.9がリリースされて、現在使用している1.8.9から1.9へのアップグレードは可能ですか?よろしくお願いします。

    • tamohiko より:

      なっとうまき さん

      ご質問ありがとうございます。

      > Ver.1.9がリリースされて、現在使用している1.8.9から1.9へのアップグレードは可能ですか?よろしくお願いします。

      アップグレードは可能です。

      私の環境でver1.9へバージョンアップを行ってみましたが、今のところ問題は発生していません。
      ただし、すべての動作を試してみたわけではないので、バージョンアップの際にはバックアップを必ず行ってから作業をお願いいたします。

      手順等はこちらのページで解説していますので、参考にしてください。

      以上、よろしくお願いいたします。

      • なっとうまき より:

        わかりやすい説明ありがとうございます。
        おかげさまでアップグレードできました!

        • tamohiko より:

          なっとうまきさん

          アップグレード無事出来てよかったです!

          ver1.9では色々な変更点があるみたいなので楽しみですよね。
          私もこれから色々と試してみようと思います。

  6. yutaka より:

    ./mc_start.sh
    で起動させてみようと思っているのですがうまくいきません。
    >please run the minecraft user
    のelse側に処理が入ります。
    stop.shも試してみましたが同様です。

    ユーザはminecraftでログインできているはずです
    フォルダやファイルのパーミッションも設定できていると
    思います。

    こうなると文章の入力間違いを疑った方が良いですか?
    何が原因でelse側に入ってしまうのか判らず困っています。
    ※現在手動で起動するまではできます。
    スクリプトのところでつまづいています

    • yutaka より:

      解決しましたのでご報告です。
      ME変数とUSERNAME変数に入っているものがヒントになればとelse側でechoさせました。
      MEにはwhoamiという文字が入っていました。
      >ME=`whoami`
      ここの`の部分が判らないので
      >ME=$(whoami)
      として入力により無事解決です。

      ありがとうございました

      • tamohiko より:

        yutakaさん

        ご返信が遅くなってしまいすいません。

        起動スクリプトの件、コメントありがとうございました。
        また、今回はお役に立てず申し訳ありませんでした。

        もうすでに解決されているという事ですが、ご質問いただきました点につきまして、ご回答させていただきます。

        > MEにはwhoamiという文字が入っていました。

        確認していただきたい点としましては、ME=`whoami`の部分がバッククォート(`)で囲われているかという点です。

        もしシングルクォート(’)や、ダブルコート(”)で囲ってしまっていたのならば、囲った中身を文字列として変数に格納してしまうので、変数MEにwhoamiという文字列が格納されていた原因ではないかと推測されます。

        >>ME=`whoami`
        >ここの`の部分が判らないので

        ここの部分の処理は、「whoami」コマンドでシェルを実行したユーザ名を取得して、MEという変数に格納しているという処理となります。

        以上、なにかのご参考になれば幸いです。

      • yutaka より:

        tamohikoさま
        バッククォートが判らず、原因が分かったら当然過ぎて赤面です。
        処理のイメージは私の想像と合っていたようで良かったです。
        ディレクトリの形やshの中身などはtamohiko様の形です。
        記事いつも楽しみにしています。

        これからはspigotなど様々な事に
        挑戦(エラー&トライ)していきます。
        見てくれて有難うございました。

        • tamohiko より:

          yutakaさん
          コメントありがとうございます。
          少しはお役に立てたようで、とてもうれしく思っています。

          バッククォートとシングルクォートは、パッと見web上で見分けがつきづらかったりすので、私もよく見間違えることがあります。

          spigotについては、とてもたくさんプラグインがあり、私も色々と試している最中です。
          試してみたことは、記事にまとめて行きたいと思いますので、お気づきの点などがあればまたコメント頂けると嬉しいです。

          これからも、お互い色々と試しながら一緒にマイクラを楽しんでいきましょう!

  7. toki より:

    自分のホームページで同じような説明をしようと思っているんですが、「起動・停止スクリプトの作成」のソースを一部または完全コピーしたいのですが、それは完全に禁止ですか?または、参考サイト等で書いた場合のみ可能ですか?

    • tamohiko より:

      tokiさん

      コメントありがとうございます。
      お返事が遅くなり申し訳ありませんでした。

      お問い合わせのありましたスクリプトの件ですが、ご自由に説明のサイトに記述していただいてかまいませんよ。
      多くの方がマイクラを楽しむのに少しでも役立つのでしたらうれしい限りですので。

      もし可能でしたら、参考サイトとしてリンクを張って頂けると嬉しいです!

      では、これからも楽しいマイクラライフをお過ごしください!!

  8. JeremyFut より:

    cannazon market links – cannazon market, cannazon market links