Minecraftにはまっています.
昔は自宅サーバなどでマイクラサーバを動かしていたわけなのですが
VPSが流行ってきたこともあり全環境をVPSに移行しました.
しかし,自宅サーバとは違い,CPUリソース,メモリ容量に制限があるため,
普通に起動したのでは満足いくようなパフォーマンスが得られません.
実際に,ただ動かしただけのサーバ環境だと,ラグを感じたり,それこそ,ブロックが遅れて壊れる・配置するといった現象が発生します.
で,さくらのVPS上で満足行くパフォーマンスで動かすための手法なんかを試行錯誤した内容を記しておきます.
まず,海外マインクラフトWikiからサーバ管理スクリプトを拝借します.
実際にVPS側にスクリプトを動作させるためには,そこに書いてあることをそのままやればいいのですが,
手順としては
- 仮想端末ソフトであるscreenをダウンロード・インストールする.
- 管理スクリプトをダウンロードする
- 管理スクリプトを編集する
- 管理スクリプトによりマインクラフトサーバを実行する
では,さくらのVPSの標準OSであるCentOSを用いているものとして順番に見ていきます.
あと,以降は管理者権限で操作していきます.
1.仮想端末ソフトであるscreenをダウンロード・インストールする.
まず次のコマンドを実行します.分かっている人であればscreenでもtmuxでもなんでもいいですがscreenを使わない場合,スクリプトに変更が必要となります.
ここではWiki通り進めます.
yum -y install screen
2.管理スクリプトをダウンロードする
管理スクリプトをダウンロードします.
ここで続く3.の作業のためにダウンロードする場所を覚えておきます.
私は管理者のホームディレクトリで行いました.
cd wget -O minecraft "http://www.minecraftwiki.net/Server_startup_script/Script?action=raw"
これでminecraftというファイル名でホームディレクトリに保存されます.
3.管理スクリプトを編集する
2,の作業の後,他にコマンド入力せず,エディタでダウンロードしたファイルを編集します.
私はvi使いなのでviを使います.emacsがいいのなら適当に読み替えてください.
次のコマンドを入力します.
vi minecraft
ここで書き換えるべき箇所は17行目以降にある#Settingsの項目を編集します.
とりあえずデフォルトの状態は次のような感じになっていると思います.
SERVICE='minecraft_server.jar' OPTIONS='nogui' USERNAME='minecraft' WORLD='world' MCPATH='/home/minecraft/minecraft' BACKUPPATH='/media/remote.share/minecraft.backup' CPU_COUNT=1 INVOCATION="java -Xmx1024M -Xms1024M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $SERVICE $OPTIONS"
では1つずつ解釈していきます.
SERVICE:マイクラサーバの本体(変更する必要無し)
OPTIONS:マイクラサーバ起動時のオプション(これも変更する必要無し)
USERNAME:マイクラサーバを起動するためのユーザ(デフォルトでは’minecraft’というユーザで上記のサーバ本体を動作させる設定)
WORLD:マイクラのワールドデータ(変更しているのであれば適切な名前に変更)
MCPATH:上記マイクラサーバ本体のある場所(適切な記述に変更する必要あり)
BACKUPPATH:バックアップディレクトリの場所(これも適切な場所に変更しておくとよい)
CPU_COUNT:マイクラサーバで使いたいCPUの数(この項目がパフォーマンス改善に効果あり)
INVOCATION:起動するためのコマンド列(見て分からない人は触ってはいけない)
といった項目になっています.
項目内にも書きましたがサーバのパフォーマンスに最も影響があると感じたのはCPU_COUNTです.
とりあえず私は’さくらのVPS2G’を契約したので仮想コアで3コアある状態です.その内の1つは別用途に残しておこうと考え,上記の設定は2にしてあります.この項目を適当に変更して動作を確かめてみるのもいいと思います.
4.管理スクリプトによりマインクラフトサーバを実行する
この管理スクリプトはLinuxサーバ管理側のスクリプトディレクトリに移動します.
/etc/init.d以下の場所となります.
コマンドは次のようにうちます.
mv minecraft /etc/init.d/
これで準備が完了しました.
あとはマイクラサーバを動作させるとき
/etc/init.d/minecraft start
マイクラサーバを止めるとき
/etc/init.d/minecraft stop
バックアップデータを作るとき
/etc/init.d/minecraft backup
マイクラサーバのアップデートを行うとき
/etc/init.d/minecraft update
といったコマンドあたりがよく使うのではないでしょうか?
あとsaveon,saveoff,commandなんていうコマンドもありますが,ここでは説明しません.
では,マイクラを楽しんでください.
ーーー2012年5月17日追記ーーー
マイクラをマルチで楽しんでおり,エンダードラゴンを狩りに行き,見事討伐したわけなんですがヤツは1匹だけしか存在していない様子.マルチでやっている以上,1回で終了するのは味気ない.そこで管理者権限をフル活用しエンダードラゴン復活の儀式を行います.
[儀式]
Worldディレクトリ内のDIM1ディレクトリをまるごと消去し,サーバを再起動.
必要ならバックアップをとっておくといいかと思います.あと似た名前でDIM-1ディレクトリというモノもありますがおそらくネザーの情報だろうと(未確認).あと消し間違いに注意.
で,見事エンダードラゴン復活となりました.
毎日データのバックアップをとっているのですが,それと同時に上記のエンダードラゴン復活の儀式を行っています.
ーーー2012年11月29日追記ーーー
定期的にマイクラサーバを上記スクリプトでrestartコマンドにより再起動をしているのですが,stop処理まで完了するもののstart処理が機能していないことがあることを確認しました.
管理スクリプトでのrestartはstop,startの順で処理するようになっています.
なんらかの都合により後半のstartが処理されないということです.
そこで管理スクリプトを改良します.
165行目付近にある記述
mc_stop
mc_start
を
mc_stop && mc_start
という形に変更
&&の意味は直前の処理が正常に完了したら,続く後ろの処理を行う,という意味です.
意味あるのかどうかわかりませんが,とりあえず今のところ期待通りの動作しています.
ピンバック:さくらのVPS運用記録 ー導入編ー | IT-ystm.net