ぱすてる
2008年05月23日
19:04
● きっかけ
私: 米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)を試してみる
・スタンドアロンから、グリッドモードに移行
・パケット、セッションを解析してみる
・データベースの中を探検してみる。
などなどです。