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
./configure --prefix=/opt/mono
- makeする。
make
- インストールする。
make install
- 完了したら実行してみる。
- prefixに/opt/monoを指定したのなら。
/opt/mono/bin/mono --version
- バージョン情報が表示されたらひとまず成功。
TShockのインストール
- ここから最新版のTShockが落とせる。
- Downloadsのtshock_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の準備は完了。
ポート解放
- デフォルトなら以下のポートを解放する。鯖の起動時に使用するポートを聞かれる。
- TCP: 7777
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 args) [0x00000] in
at Terraria.ProgramServer.Main (System.String: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
- 通信がタイムアウトすんぞと怒られてる。
- ワールドを生成し、遊べる状態にした直後に発生した。
- アップデータがアップデートがないか確認しようとして失敗しているみたい。
- 鯖そのものの動作には問題なさそう。
ログアウト時にエラーが出る
- 既知のバグ? 対処法不明。鯖が落ちたりはしないのでいまのところ問題ない。