あけおめことよろの略ですが、毎年流行らそうとしてはや五年、一向に流行りません。
さて、今年のゲーム納め/ゲーム初めに選んだゲームは「MineCraft」。
ブロックを集めて建物を作ったり、モンスターと戦ったりできるPCの箱庭ゲームです。
パネキットを崇める私からするとドツボにはまってしまったゲームであります。
これは今後日本でもヒットしそう。(既にしている)
山頂の鳥居とか、山肌を切り抜いて作ったお堂とか作れます。
▼Minecraft

そして、このブログで何度も出てくるサーバ用OS「Solaris 10」。
その堅牢性からプロフェッショナルなEnterprise分野では滅法強いのに、
Entertainment分野では滅法弱いこのOS。
このOSを使ってPCゲーム「MineCraft」のマルチプレイ用サーバを立ててみようというお話です。
前述する通りエンターテイメント分野には滅法弱いので、
MineCraftの為に新たにSolarisを導入するのはただの苦行です。
「MineCraftの鯖を立てたい・・でも家にSolarisしかない!」っていう人のための記事です。
そんな人、俺以外にこの世に存在するのかどうかは知りませんけど。
サーバを建てるに当たって必要となるのは以下。
・MineCraft本体ファイル(.jar)
・Java5より上のバージョン
・MineCraft起動スクリプト
・screen(コマンド)
上1つは当たり前ですが、今回の問題は下の3つ。
特に起動スクリプトとscreenコマンドについて解説します。
Javaに関してはimoten導入時にSolarisのjava最新化について触れていますので、そちらを参照して下さい。
実際MineCraft導入時には何もしていません。
なお、Solaris標準のJavaで起動しようとすると起動時にMemory関連でエラーとなります。
MineCraftはサーバプログラムを起動すると、専用の対話型プロンプトが立ち上がり、
そこから起動停止などの制御コマンドを発行します。
また、起動している間コンソールを占有し続けます。
つまりWindowsからTelnet/SSH接続で起動した場合、ずっとその端末を起動しておく必要があります。
&付与やnohupでバックグラウンド実行した場合起動し続けますが、
停止もコンソールで行う必要があるため、今度は停止コマンドを発行する術が無くなります。
そこでscreenコマンドを使って、サーバ上で仮想端末を持たせてそこで起動させておけば解決します。
screenコマンド上の端末には、screenコマンドにオプションを指定してメッセージ送信することが出来るのです!
で、この超便利なscreenコマンド。Solarisには標準非搭載です。
こんな部分でもやはりSolarisはエンターテイメントには向かない。
なのでソースを拾ってきてコンパイルします。
パッケージ管理だぁ?Solarisにそんなもんねぇよ!(注:普通にあります。筆者が使い方わからないだけ。)
0)makeとかにPATH通しておいてくださいね。
参考:Solaris 10サーバにscreenをインストール
LD_LIBRARY_PATH=/usr/lib:/usr/sfw/lib::/usr/sfw/lib:/usr/local/lib:/etc/lib:/usr/local/ssl/lib:
/usr/X11/lib:/usr/lib:/lib ; export LD_LIBRARY_PATH
1)最新版を拾ってくる
http://ftp.gnu.org/gnu/screen/
2)解凍・展開
gunzip screen-4.0.3.tar.gz
tar -xvf screen-4.0.3.tar
3)misc.cの613行目を以下の通り編集
# if defined(linux) || defined(__convex__) || (BSD >= 199103)
↓
# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(__sun__)
4)make & Compile
./configure
make
5)同じディレクトリにscreenコマンドが出来上がるので採取、PATHの通った場所へコピー。
cp -p ./screen /opt/sfw/bin
※make installでも良い・・っていうか普通はmake installします。
これで下準備その1「screenコマンド」が完了。
続いて起動スクリプト。
作っておくと安全・確実にMineCraftを起動停止出来ます。
また、登録すればサーバの起動時・シャットダウン時に自動的に起動停止してくれます。
Linux用の起動スクリプトが配布されていますのでこれをそのまま使用する・・・と起動しません。
スクリプト「su - minecraftユーザ」の処理が上手くいっていないようです。
何故かという調査はしていませんが、どーせSolaris固有の問題なので運用回避する方向という逃げ腰に。
発想を変えて「起動スクリプト内でsuする」のではなく、「suしてから起動スクリプトを叩く」ことにし、
結果うまく行きました。
2ステップ要るけどな・・・。
なお、rootであれば特に考えずに起動できますが、一般ユーザ権限でサーバアプリを起動しておかないと、
万が一脆弱性からサーバが攻撃されたときのリスクが超増大します。
ついでにコマンド発行引数が"command"と長ったらしいので"cmd"に変更。
ここまで準備できてやっと公開可能なのです。ああ疲れた。
なお起動スクリプトについては長ったらしいので続きで記載しておきます。
適宜書き換えてください。
あ、「公開」って言ってますけどウチは身内のみで遊んでます。
ノウハウだけ公開。
サバイバル/クリエイティブモードの切り替えが自由にできたり、
バックアップなども任意のタイミングで取れるのが良いところですね。
↓↓↓起動スクリプト↓↓↓


