2008年05月23日

OpenSimサーバ構築記録その1(Linuxに導入編)


● きっかけ

私:     米IBMと米Linden Labが去年提携しましたね。
       これからはWebアプリケーションも仮想世界との連携とか必要になるかもしれませんね~
私のボス: テスト用サーバに余裕があれば、OpenSim入れてもいいよ。
私:     マジですか~!!!、仕事中に堂々とセカンドライフができる~ ^^
私のボス: 仕事だからね。 ちゃんと仕組みを勉強してよ。
私:     わ~いわ~い ^^/  (聞いてない)

というわけで、最近仕事中に堂々とOpenSimサーバを構築して、遊んでます。



● テスト用サーバ仕様

 CPU: Pentium4 3.2GHz
 メモリ: 2GB
 OS:  Ubuntu8.04 (Debian/GNU Linux系OS)

元々は、ホームページ、Webアプリケーションの動作確認用のサーバ機です。
テスト用とはいえ、DMZ上に配置された、立派な外部公開サーバ。
最初の頃はただの利用者だったのに、一番使う私が、いつの間にやら管理者に。。。 ーー;



● OpenSimインストール手順書の入手

(URL) http://opensimulator.org/wiki/User_Documentation

なんと、テスト機と同じOS(Ubuntu8.04)の手順が書かれているではないですか~。
すばらしい。 英語も(たぶん)簡単そうだ。 ^^;



● 手順書を参考に、各種パッケージのインストール

(1) 職場のテスト機にSSHでリモートログイン。
  rootユーザになって、/usr/local ディレクトリに移動して作業します。
  Linux/Unixでは、ソースからコンパイル・インストールするときは、/usr/local 配下に作成する事が多いので。

root@sv:/root# cd /usr/local

  Ubuntu、Knoppixなど、Debian系Linuxのパッケージは、apt-get または aptitudeコマンドで
  ネットワーク経由でパッケージのサイトからインストールします。



(2) subversion のインストール
  subversionは、ソースファイルなどのリポジトリ管理のツールです。
  OpenSim本体は、subversionを利用してリポジトリサイトからダウンロード(チェックアウト)します。

root@sv:/usr/local# apt-get install subversion
Suggested packages:
db4.6-util patch subversion-tools
The following NEW packages will be installed:
subversion
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 0B/243kB of archives.
After this operation, 3482kB of additional disk space will be used.

(以下省略)



(3) nant のインストール
  NAntは、JavaのAntを.NETで利用できるように移植したオープンソースのビルドツールです。

root@sv:/usr/local# apt-get install nant
The following extra packages will be installed:
libgdiplus libgif4 libglib2.0-dev libmono-accessibility1.0-cil libmono-dev
libmono-winforms1.0-cil libnunit2.2.6-cil mono-gmcs
Suggested packages:
libglib2.0-doc libnunit-doc
The following NEW packages will be installed:
libgdiplus libgif4 libglib2.0-dev libmono-accessibility1.0-cil libmono-dev
libmono-winforms1.0-cil libnunit2.2.6-cil mono-gmcs nant
0 upgraded, 9 newly installed, 0 to remove and 1 not upgraded.
Need to get 5997kB of archives.
After this operation, 23.0MB of additional disk space will be used.
Do you want to continue [Y/n]?

(以下省略)



(4) mono-gmcs のインストール
  Linux上で、.NETアプリケーションを動かすために、Monoランタイムを利用します。

root@sv:/usr/local# apt-get install mono-gmcs
mono-gmcs is already the newest version.
mono-gmcs set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.


※ nantのインストール時に、依存パッケージとして既にインストールされてました。



(5) libmono-microsoft8.0-cil のインストール
  こんな名前のファイルを入れるのは、イヤだ~。><

root@sv:/usr/local# apt-get install libmono-microsoft8.0-cil
The following NEW packages will be installed:
libmono-microsoft8.0-cil
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 130kB of archives.
After this operation, 422kB of additional disk space will be used.

(以下省略)



(6) libmono-system-runtime2.0-cil のインストール

root@sv:/usr/local# apt-get install libmono-system-runtime2.0-cil
The following NEW packages will be installed:
libmono-system-runtime2.0-cil
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 69.6kB of archives.
After this operation, 238kB of additional disk space will be used.

(以下省略)



(7) libgdiplus のインストール

root@sv:/usr/local# apt-get install libgdiplus
libgdiplus is already the newest version.
libgdiplus set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.


※ これも、nantが依存パッケージとして既にインストール済み。



● OpenSimの構築

(1) /usr/local 配下に、opensimディレクトリを作成し、その配下にOpenSIMを
  インストールします。

root@sv:/usr/local# mkdir opensim
root@sv:/usr/local# cd opensim/



(2) subversionで、OpenSIMリポジトリからチェックアウト(ダウンロード)します。

(URL) http://opensimulator.org/svn/opensim/tags/

(今日現在)版数が一番大きい、0.5.6-release を入れてみます。
ディスクに余裕があれば、0.4.5.3-stable(安定版)も入れておけばいいですね。

root@sv:/usr/local/opensim# svn co http://opensimulator.org/svn/opensim/tags/0.5.6-release 0.5.6
root@sv:/usr/local/opensim# ls
./  ../  0.4.5.3/  0.5.6/



(3) runprebuildスクリプトを実行して、NAnt用のビルドファイルを作ります。
  TarBall版からフリーソフトをコンパイルする時の./configureの代わりでしょうか。

root@sv:/usr/local/opensim# cd 0.5.6/
root@sv:/usr/local/opensim/0.5.6# ls *.sh
add-copyright.sh* runprebuild.sh*

root@sv:/usr/local/opensim/0.5.6# ./runprebuild.sh
Prebuild v2.0.3
Copyright (c) 2004-2008
Matthew Holmes (matthew@wildfiregames.com),
Dan Moorehead (dan05a@gmail.com),
David Hudson (jendave@yahoo.com),
Rob Loach (http://www.robloach.net),
C.J. Adams-Collier (cjac@colliertech.org),
See 'prebuild /usage' for help

(途中省略)
Creating Visual C# 2005 solution and project files
...Creating project: Prebuild




(4) OpenSIMのビルド
  ビルドファイルが正常に作成されたら、後はnantを実行するだけです。

root@sv:/usr/local/opensim/0.5.6# nant
NAnt 0.85 (Build 0.85.2478.0; release; 2006/10/14)
Copyright (C) 2001-2006 Gerry Shaw
http://nant.sourceforge.net

Buildfile: file:///usr/local/opensim/0.5.6/OpenSim.build
Target framework: Mono 2.0 Profile
Target(s) specified: build

(途中省略)
BUILD SUCCEEDED
Total time: 69.1 seconds.




(5) binディレクトリ配下に、OpenSIM.exe本体と、iniファイル見本ができてる事を確認します。

root@sv:/usr/local/opensim/0.5.6# cd bin
root@sv:/usr/local/opensim/0.5.6/bin# ls *.exe
OpenSim.32BitLaunch.exe*    OpenSim.Grid.InventoryServer.exe* OpenSim.Grid.UserServer.exe*
OpenSimExport.exe*        OpenSim.Grid.AssetServer.exe*   OpenSim.Grid.MessagingServer.exe*
OpenSim.TestSuite.exe*      Prebuild.exe*           OpenSim.Grid.GridServer.exe*
OpenSim.Grid.ScriptServer.exe* OpenSim.exe*            pCampBot.exe*

root@sv:/usr/local/opensim/0.5.6/bin# ls *ini*
OpenSim.ini.example mssql_connection.ini.example mysql_connection.ini.example



(6) 環境ファイル(OpenSim.ini)の雛形をコピーして、viエディタで修正します。
  フィジクスは当然、ODE(Open Dynamics Engine)を有効にします。

root@sv:/usr/local/opensim/0.5.6/bin# cp OpenSim.ini.example OpenSim.ini
root@sv:/usr/local/opensim/0.5.6/bin# vi OpenSim.ini

; Choose one of the physics engines below
;physics = basicphysics  ←これを無効にする
;physics = POS
physics = OpenDynamicsEngine  ←これを有効にする
;physics = modified_BulletX



● OpenSimの起動と初期設定

(1) binディレクトリ配下で、OpenSIM.exeを起動します。
  とうぜん、exeファイルはLinuxでは動きませんので、mono経由で起動させます。

root@sv:/usr/local/opensim/0.5.6/bin# mono OpenSim.exe
OpenSim 0.5, SVN build
Performing compatibility checks... Environment is compatible.
Starting...
12:42:28 - [OPENSIM MAIN]: Running in sandbox mode

(途中省略)



(2) 初回起動時、途中にたずねてくる質問項目に答えます。
  テスト機といえども、グローバルIPとDNSで外部公開しているので、
  アカウント、パスワードはデフォルトは使わない。

DEFAULT REGION CONFIG: Region Name [OpenSim Test]:
DEFAULT REGION CONFIG: Grid Location (X Axis) [1000]:
DEFAULT REGION CONFIG: Grid Location (Y Axis) [1000]:
DEFAULT REGION CONFIG: Internal IP Address for incoming UDP client connections [0.0.0.0]:
221.XXX.XXX.XXX <--- サーバのグローバルIPアドレスを指定。
DEFAULT REGION CONFIG: Internal IP Port for incoming UDP client connections [9000]:
DEFAULT REGION CONFIG: External Host Name [127.0.0.1]:
XXXXXXXX <--- サーバのホスト名(DNSに登録されている)を指定。
DEFAULT REGION CONFIG: First Name of Master Avatar [Test]:
XXXXXXXX <--- ファーストネーム
DEFAULT REGION CONFIG: Last Name of Master Avatar [User]:
XXXXXXXX <--- ラストネーム
DEFAULT REGION CONFIG: (Sandbox Mode Only)Password for Master Avatar account [test]:
XXXXXXXX <--- パスワード
(途中省略)
12:43:07 - [!]:STARTUP COMPLETE
Region# :

コマンド入力待ちになれば、起動完了




● Oracleモジュールのインストール ******** 2009/3/24 追加 ********

以下の警告が出て、OpenSimが起動できなかった場合は、libmono-oracleモジュールを
インストールしてください。(0.6.3-releaseで発生)

** (OpenSim.exe:6932): WARNING **: The following assembly referenced from
 /usr/local/opensim/0.6.3/bin/NHibernate.dll could not be loaded:
  Assembly:  System.Data.OracleClient  (assemblyref_index=4)
  Version:  2.0.0.0
  Public Key: b77a5c561934e089
The assembly was not found in the Global Assembly Cache, a path listed in the
 MONO_PATH environment variable, or in the location of the executing assembly

# apt-get install libmono-oracle2.0-cil




● ファイアウォールの設定(ポート開放)

(1) ポート番号の確認
  Mono (OpenSIM) のプロセス番号から、使用しているポート番号を確認します。
  (9000番ってわかってるけど、念のため)

root@sv:~# ps ax | grep mono
8257 pts/0 Sl+ 0:03 mono OpenSim.exe

root@sv:~# lsof -p 8257 | grep IP
mono 8257 root 6u IPv4 41525 TCP *:9000 (LISTEN)
mono 8257 root 10u IPv4 41526 UDP サーバ名:9000

Mono (OpenSIM) は、TCP/UDPの9000番を使用している事がわかります。



(2) ポートの開放
  このテスト用サーバは、Linuxカーネルが標準装備しているNetfilterで、ファイアウォールを動作させています。
  Netfilterの設定コマンド(iptables)で、TCP/UDPの9000番を開放(ACCEPT)します。

/sbin/iptables -A INPUT -i $WANPORT -p tcp -m state --state NEW -s $TRUSTWAN --dport 9000 -j ACCEPT
/sbin/iptables -A INPUT -i $WANPORT -p udp -s $TRUSTWAN --dport 9000 -j ACCEPT

※ $TRUSTWAN は、私の自宅のパソコンのIPアドレス
※ $WANPORTは、サーバのインターネット側のLANカードの事です。
(シェルスクリプトの先頭で、シェル変数として指定してます。)



(3) 設定の確認

root@sv:~# # iptables -L | grep 9000
ACCEPT tcp -- ホスト名/29 anywhere state NEW tcp dpt:9000
ACCEPT udp -- ホスト名/29 anywhere udp dpt:9000



● クライアントから接続~OpenSim終了

(1) 職場のLANからはつながりましたので、自宅に帰って、このテストサーバに接続確認。
  クライアントソフトのオプションに、接続先URL・ポートを指定して、接続テスト。

D:\SecondLife\SecondLife.exe -loginuri http://ホスト名:9000/ -loginpage http://ホスト名:9000/?method=login

文字ばかりの記事だと寂しいので、とりあえずSS。 ^^;



でも、SSの風景も寂しい。。。 ><;



(2) OpenSIMの終了
  コンソールから、shutdownを実行します。

Region# :shutdown

17:04:46 - [COMMANDFILE]: Running shutdown_commands.txt
17:04:46 - [COMMANDFILE]: Running 'backup'
17:04:46 - [SHUTDOWN]: Closing all threads
17:04:46 - [SHUTDOWN]: Killing listener thread
17:04:46 - [SHUTDOWN]: Killing clients
17:04:46 - [SHUTDOWN]: Closing console and terminating
17:04:46 - [SCENE]: Closing down the single simulator: OpenSim Test
17:04:46 - [Region]: Shutdown at 5/18/2008 5:04:46 PM
17:04:46 - [ScriptEngine.DotNetEngine]: ThreadAbortException while executing function.
17:04:46 - [ScriptEngine.DotNetEngine]: ThreadAbortException while executing function.

** (OpenSim.exe:8257): WARNING **: unknown MONO_PATCH_INFO_INTERNAL_METHOD
**
** ERROR:(mini.c:9326):mono_resolve_patch_target: code should not be reached
Aborted




● 予定は未定

さて、次はグリッドモード前準備で、データベースをSQLiteからMySQL5.0に変更してみよう。

他にも
 ・自宅の余っているMacOSXにもインストール。
 ・アカウントの作り方
 ・土地造成のお勉強
 ・アドオン(OpenLibrary)を試してみる
 ・スタンドアロンから、グリッドモードに移行
 ・パケット、セッションを解析してみる
 ・データベースの中を探検してみる。

などなどです。



同じカテゴリー(OpenSim)の記事
 再掲:OpenSim構築手順 (Linux版&OSGrid) (2009-04-18 19:33)
 OpenSimサーバ構築記録10/OSX版MySQLで動かす (2008-12-07 18:25)
 OpenSimサーバ構築記録9(MacOSXコンパイル編) (2008-11-30 16:10)
 OpenSimサーバ構築記録8 (手作りファイアウォール編) (2008-09-07 11:14)
 OpenSimサーバ構築記録その7(暗号化しなくちゃ編) (2008-08-03 11:52)
 OpenSimサーバ構築記録その6(ブレンダーで土地作り編) (2008-07-19 00:07)

Posted by ぱすてる at 19:04│Comments(11)OpenSim
この記事へのコメント
わあ!
仕事でSLできるなんて・・・
いい・・・のかな?
Posted by Moo at 2008年05月23日 19:49
(^^) モーさん、どもども。

>いい・・・のかな?
いいのです~。
仕事中に堂々と、ものづくりするための野望が進行中です。
いつまでも、スカルプ作って喜んでいるだけでは食べていけませんからね~(謎)
Posted by ぱすてるぱすてる at 2008年05月24日 12:57
お久しぶりです♪
SNSから久々にとんできました。

バリバリのエンジニアですね!
それにしても下火になっちゃったと思っていたSLもまだまだ企業がなんらかの試みをしていたりして、逆に落ち着いてきたと見るべきなのかなと思ったりしています。

ぱすてるさんのような才能を持った人もまだまだ沢山いるし、コミュニケーションインフラとしてちゃんと定着して育っていってくれたらいいな
Posted by CROSS Kline at 2008年05月28日 00:37
ご参考

http://blogs.yahoo.co.jp/netkasai/3876492.html
Posted by netkasai at 2008年05月28日 21:34
(^^) CROSSさん、いつもコメントありがとー。

>バリバリのエンジニアですね
かんちがいです~ ><
ただのしがない(元)Webデザイナーでございます。
といいつつ、お仕事してる間にイロイロ覚えちゃいましたけど。。(^^ゞ
SLでのものづくりももちろん楽しいけど、それだけじゃあ、いつまでも
ただの利用者ですから。。。
サービスを提供する側、サーバ構築みたいな基盤・インフラ系の知識も
身につけておくと、末永くSLが楽しめるだろうな~と思ってます。

(^^) netkasaiさん、お初です~。
OpenSim研究会ですか~ ちゃんとそういうのあるんですね。^^
一見しましたが、よくまとまっていて役立ちそうなHPです。
今、英語の手順書と格闘してますので、わからないことがあれば参考に
させていただきます~。 ^^/
Posted by ぱすてるぱすてる at 2008年05月28日 23:31
なんか、かわったコメントですねぇ~ W
Posted by tory burch shoes at 2011年09月15日 18:31
うわー、これはかなり面白いです。感動だけでなく、。私達が付いているような感動体験を共有していただきありがとうございます。素晴らしいブログ、おめでとう!
Posted by fat burning foods for men at 2013年08月11日 04:12
私は長い時間ウォッチャーだと私はちょうど私が立ち寄るとあなたの非常に最初の時間のためにそこにこんにちはと言うだろうと信じていた。
Posted by Obat Pelangsing at 2013年08月11日 04:16
すごい迫力!私は本当にこのサイトのテンプレート/テーマを楽しんでいます。それは、簡単です
Posted by Produk k link at 2013年08月11日 04:17
まだ効果的な。多くの時間は、それは素晴らしい使いやすさと外観の間にその "完璧なバランス"を得ることは困難です。私は、あなたはこれで素晴らしい仕事をしていると言わなければ
Posted by foods that increase metabolis at 2013年08月11日 04:19
ならない。さらに、ブログは、Firefox上で、私にとって非常に迅速にロードします。ブログ格別!
Posted by foods that boost metabolism at 2013年08月11日 04:21
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。