読者です 読者をやめる 読者になる 読者になる

Ging Ring Activity Report

PCゲーマーグループ"Ging Ring"の活動報告、私的メモ、身内(+α)向けまとめ、日記、etc...です。ここ書かれている情報の正確性は保証しません。

質問受付中!

 ブログ内コメント、又はTwitter経由で質問を受付中です。
 記事に対するものでも、単に聞いてみたいことでも構いません。

 ※質問内容をテーマにブログ記事を作成することがあります。予めご了承下さい。

CentOS 6.5でTerraria鯖を立てた

mono経由でTerraria鯖を起動するまで

  • 近々アップデート(1.3)が来るらしいと聞いて、自鯖を立てようとしたら色々問題が起きたので、繰り返さないようにメモしておこう。

資料

monoのインストール

  • まずビルドする為の場所に行く。

cd /usr/local/src

  • ここからのソースをダウンロードする。
  • その時点での最新版で試したけど、いちおう問題なく動いた。
  • 色々試したけど、エラーが出たりで結局ソースから自分でビルドする手順が唯一成功した。

wget http://download.mono-project.com/sources/mono/mono-x.x.x.x.tar.bz2

  • ダウンロードしたら解凍する。

tar xvf mono-x.x.x.x.tar.bz2

  • バージョンに応じたmono-x.x.x.xみたいなディレクトリが作られるので、そこに入る。

cd mono-x.x.x.x

  • ビルドの準備をする。
  • prefixで指定したディレクトリに出力されるみたい。ディレクトリをあらかじめ作らなくても出力された。

./configure --prefix=/opt/mono

  • makeする。

make

  • インストールする。

make install

  • 完了したら実行してみる。
  • prefix/opt/monoを指定したのなら。

/opt/mono/bin/mono --version

  • バージョン情報が表示されたらひとまず成功。

TShockのインストール

  • ここから最新版のTShockが落とせる。
  • Downloadstshock_x.x.x.zipからダウンロードする。

wget https://github.com/NyxStudios/TShock/releases/download/vx.x.x/tshock_x.x.x.zip

  • ダウンロードしたら解凍。

unzip tshock_x.x.x.zip

  • これでTShockの準備は完了。

ポート解放

  • デフォルトなら以下のポートを解放する。鯖の起動時に使用するポートを聞かれる。

Terraria鯖の起動

  • monoのインストール時にprefixで指定したディレクトリが/opt/monoなら。

/opt/mono/bin/mono TerrariaServer.exe

  • screenを使用して起動するなら。
  • これもよく忘れるのでメモ。

screen -dmS terraria /opt/mono/bin/mono TerrariaServer.exe

エラー

  • 鯖立て中に直面したエラーに関して。

実行しようとするとエラーが出る

[Server API] Error Startup aborted due to an exception in the Server API initialization:
System.InvalidOperationException: Failed to load assembly "MySql.Web.dll". ---> System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool)
at System.Reflection.Assembly.GetExportedTypes () [0x00000] in :0
at TerrariaApi.Server.ServerApi.LoadPlugins () [0x00000] in :0
--- End of inner exception stack trace ---
at TerrariaApi.Server.ServerApi.LoadPlugins () [0x00000] in :0
at TerrariaApi.Server.ServerApi.Initialize (System.String commandLineArgs, Terraria.Main game) [0x00000] in :0
at Terraria.ProgramServer.Main (System.String
args) [0x00000] in :0

  • MySql.web.dllがねーぞと怒られてる。
  • 検索して見付けた解説ページからダウロードしたバージョンのTShockを使用したことで発生。
  • ここで最新版をダウンロードして実行すると上記のエラーは発生しなくなった。
  • MySQL系のデータがないのかとか、XMS? がインストールされてないからかとか色々調べたけど、最新版では問題なく起動したのでバージョンの問題かも。
  • 少なくともMySql.web.dllがねーぞ、とは本来は言われないみたい。

実行中にエラーが出る

: UpdateManager Exception: System.Net.WebException: The request timed out
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in :0
at System.Net.HttpWebRequest.GetResponse () [0x00000] in :0
at TShockAPI.Utils.GetResponseNoException (System.Net.HttpWebRequest req) [0x00000] in :0

  • 通信がタイムアウトすんぞと怒られてる。
  • ワールドを生成し、遊べる状態にした直後に発生した。
  • アップデータがアップデートがないか確認しようとして失敗しているみたい。
  • 鯖そのものの動作には問題なさそう。

ログアウト時にエラーが出る

  • 既知のバグ? 対処法不明。鯖が落ちたりはしないのでいまのところ問題ない。