2009年04月18日

再掲:OpenSim構築手順 (Linux版&OSGrid)

(2008年05月23日)OpenSimサーバ構築記録その1(Linuxに導入編)
http://pastel.slmame.com/e243880.html

1年ほど前に、OpenSimサーバ構築の記事を投稿しました。
でも、最近手順が微妙に変わっていて、うまくできないHELPメールを時々頂くようになりましたので、
簡単にまとめて書き直してみました。
それに閉じたSIMではつまらないので、ついでに、OSGridに接続する設定も。




● こんな手順になってます。

 1.設定値を決めておく
 2.パッケージのインストール
 3.MySQLデータベースの設定
 4.OpenSimソースコードのダウンロード
 5.OpenSimのコンパイルビルド
 6.OpenSim Standaloneモードで起動
 7.DBをSQLiteからMySQLに変更して起動
 8.DB内のテーブルを確認
 9.GridモードでOSGridに接続する
10.OpenSim用ファイアウォールスクリプトを作る



● 1.設定値を決めておく

 Ubuntuのバージョン:8.10
 ホスト名:ubuntu
 PCのグローバルIPアドレスを確認
 OpenSimのバージョン:0.6.4

 OSGridユーザ登録はこちらで。
http://osgrid.org/index/php?page=create&btn=4

 登録したファースト、ラストネーム、パスワードはOpenSimのリージョン設定ファイルでも指定します。


 OSGridマップの空きエリア座標XYの確認は、こちらで。
http://osgrid.org/index/index.php?&page=smodul&id=20&btn=20

 Simの名前、XY座標も、OpenSimのリージョン設定ファイル内で指定する事になります。


 UUID Generator
 OpenSimで複数リージョンを立ち上げる場合は、このサイトからUUIDを取得してもいいです。
http://www.famkruithof.net/uuid/uuidgen




● 2.パッケージのインストール

 (1) OpenSim構築に必要なパッケージのインストール

 root権限で、OpenSimのコンパイル・実行に必要なパッケージをインストールします。
 最近のバージョンから、libmono-oracleが必要になりました。
root:# apt-get  install  subversion
root:# apt-get  install  nant
root:# apt-get  install  libmono-microsoft8.0-cil  libmono-oracle2.0-cil ruby


 (2) MySQLデータベースのインストール

 MySQL5.0をインストールします。
 最近のMySQLは、インストールの途中でのroot管理者パスワードを設定する手順があります。
root:# apt-get  install  mysql-server




● 3.MySQLデータベースの設定

 (1) MySQLにログインします。
root:# mysql  -u  root  -p
Enter password:
mysql>


 (2) デフォルトのMySQLユーザアカウントを確認

 ユーザアカウントは、mysql.userテーブル内で設定されてます。
mysql> use  mysql;
Database changed

mysql> select  host,user,password  from  user;





 (3) userの無い、匿名アカウントは危険なので削除します。
mysql> delete  from  user  where  user='';
Query OK, 2 rows affected (0.11 sec)

mysql> flush  privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> select  host,user,password  from  user;





 (4) データベース「opensim」の作成

 空のデータベース(データベース名:opensim)を作成します。
 データベース内のテーブルは、OpenSim起動時に自動的に作成されます。
mysql> create  database  opensim;
Query OK, 1 row affected (0.00 sec)

mysql> show  databases;



mysql> \q
Bye




● 4.OpenSimソースコードのダウンロード

 subversionコマンドで、リポジトリサイトからソースコードをダウンロードします。
 opensim構築は、一般ユーザー権限で作業します。
 脆弱性、セキュリティホールがあった場合、rootが所有者だと危険ですから。

 /home/foo/opensim/0.6.4/ ディレクトリ配下にインストールにします。

$ cd
$ mkdir  opensim
$ cd  opensim

opensim$
opensim$ svn  co  http://opensimulator.org/svn/opensim/tags/0.6.4-release  0.6.4

opensim$ cd  0.6.4
opensim/0.6.4$




● 5.OpenSimのコンパイルビルド

 (1) nant用のMakefileを作成します。 そのためのシェルスクリプト(runprebuild.sh)を実行します。
opensim/0.6.4$ ./runprebuild.sh

Creating Visual C# 2005 solution and project files
...Creating project: Prebuild


 (2) nantコマンドで、OpenSimをコンパイルします。 OpenSim本体は、bin配下にビルドされます。
opensim/0.6.4$ nant

BUILD SUCCEEDED
Total time: 161.6 seconds.

opensim/0.6.4$ cd  bin
opensim/0.6.4/bin$
 拡張子「.exe」のファイルがたくさんできます。




● 6.OpenSim Standaloneモードで起動

 (1) iniファイルのひな型をコピーします。
opensim/0.6.4/bin$ cp  OpenSim.ini.example  OpenSim.ini


 (2) iniファイルの物理エンジン(Open Dynamics Engine)の記述を有効にします。
;physics = basicphysics
physics = OpenDynamicsEngine


 (3) monoコマンドで、OpenSimを起動させてみます。
opensim/0.6.4/bin$ mono  OpenSim.exe


 (4) Sim情報の入力

 初回起動時にSim情報の入力を尋ねてきます。 あらかじめ、OSGrid用の値を入力しておきます。
 入力した値は、Region/defalut.xmlファイルに保存されます。
Region Name [OpenSim Test]: Simの名前
Grid Location (X Axis) [1000]:  OSGridマップで決めたX座標
Grid Location (Y Axis) [1000]:  OSGridマップで決めたY座標
Internal IP Address for incoming UDP client connections [0.0.0.0]: このまま
Internal IP Port for incoming UDP client connections [9000]:          このまま
External Host Name [127.0.0.1]:       OpenSIMを動かすPCのグローバルIPアドレス
First Name of Master Avatar [Test]:  OSGridに登録したファーストネーム
Last Name of Master Avatar [User]:   OSGridに登録したラストネーム
(Sandbox Mode Only)Password for Master Avatar account [test]: OSGridに登録したパスワード

 プロンプト(#)が表示されたらOK。
Currently selected region is Simの名前
22:38:53 - [STARTUP]: Startup took 0m 57s
Region (Simの名前) #


 (5) OpenSimをシャットダウンします。
Region (Simの名前) # shutdown




● 7.DBをSQLiteからMySQLに変更して起動

 (1) OpenSim.iniファイルをエディタで修正します。

 SQLiteの記述を無効(注釈)にして、MySQLの記述を有効にします。
 User ID は、root(MySQL管理者アカウント)
 Password は、rootのパスワードです。

; storage_plugin = "OpenSim.Data.SQLite.dll"
; storage_connection_string="URI=file:OpenSim.db,version=3";

storage_plugin="OpenSim.Data.MySQL.dll"
storage_connection_string="Data Source=localhost;Database=opensim;User ID=root;Password=パスワード;";

estate_connection_string="Data Source=localhost;Database=opensim;User ID=root;Password=パスワード;";

; asset_plugin = "OpenSim.Data.SQLite.dll"
asset_plugin = "OpenSim.Data.MySQL.dll" ; for mysql

asset_source = "Data Source=localhost;Database=opensim;User ID=root;Password=
パスワード;"

; inventory_plugin = "OpenSim.Data.SQLite.dll"
inventory_plugin = "OpenSim.Data.MySQL.dll"

inventory_source = "Data Source=localhost;Database=opensim;User ID=root;Password=
パスワード;"

; userDatabase_plugin = "OpenSim.Data.SQLite.dll"
userDatabase_plugin = "OpenSim.Data.MySQL.dll"

user_source = "Data Source=localhost;Database=opensim;User ID=root;Password=
パスワード;"

 DBへの接続文字列は、以前はmysql_connection.iniファイルに記述してましたが、
 最近はOpenSim.iniファイルに直接記述するようになりました。



 (2) 記述ミスさえなければ、問題なく立ち上がります。
opensim/0.6.4/bin$ mono  OpenSim.exe




● 8.DB内のテーブルを確認

 正常に起動できたら、データベース「opensim」の中身を確認してみます。
 SQLite内のデータが、MySQLに自動的に移行されています。
 Region/defalut.xmlファイルに記述したユーザアカウント情報も、データベースに登録されています。

opensim/0.6.4/bin$ mysql  -u  root  -p
Enter password:

mysql> use  opensim;
Database changed

mysql> show  tables;
mysql> select  username,lastname  from  users;





 閉じたネット環境で、テクスチャアップテストやSIM作りの勉強するなら、スタンドアロンモードで十分です。
 データベースも、MySQLに外出ししたので安心です。

 また、OSGridに登録したアカウント名を使っているので、Opensim.iniファイルを少し修正するだけで、
 すぐにOSGridに参加できます。




● 9.GridモードでOSGridに接続する

 OpenSim.iniファイルで、グリッドモードを有効にします。
 UGAIM(ユーザ・グリッド・アセット・インベントリ・メッセージ)サーバは、OSGridのサーバを指定します。

gridmode = true

asset_database = "grid"

grid_server_url = "http://osgrid.org:8001"
grid_send_key = "1234"
grid_recv_key = "1234"

user_server_url = "http://osgrid.org:8002"
user_send_key = "1234"
user_recv_key = "1234"

asset_server_url = "http://osgrid.org:8003"

inventory_server_url = "http://osgrid.org:8004"

messaging_server_url = "http://osgrid.org:8086"



 Hippo OpenSim Viewer初期画面にリージョンリストがあります。
 OpenSimを問題なく起動できたら、リージョンリストに登録されているのがわかります。
 OSGridホームページのマップにも表示されます。









● 10.OpenSim用ファイアウォールスクリプトを作る

 Linuxには、iptablesというファイアウォールのコマンドがありますので、OpenSim用のスクリプトを作ってみました。

 /etc/init.d/配下に、firewallという名前の空ファイルをつくります。
 所有者と実行権を与えます。
 update-rc.dコマンドで、firewallを有効にします。(/etc/rc2.d/配下にシンボリックリンクが作られる。)
root:# touch  /etc/init.d/firewall
root:# chown  root.root  /etc/init.d/firewall
root:# chmod  700  /etc/init.d/firewall
root:# update-rc.d  -f  firewall  defaults


 スクリプト「firewall」を記述します。
#!/bin/sh

# すべてのルールをクリアする
/sbin/iptables  -F
/sbin/iptables  -t  nat  -F
/sbin/iptables  -X
/sbin/iptables  -Z

# 全てのポリシー(パケット入力・出力・転送)を許可する
/sbin/iptables  -P  INPUT  ACCEPT
/sbin/iptables  -P  OUTPUT  ACCEPT
/sbin/iptables  -P  FORWARD  ACCEPT

# 引数に「clear」をつけて実行したら、スクリプト終了
if [ "$1" = "clear" ]; then
        exit
fi


# パケット入力を全て拒否する
/sbin/iptables  -P  INPUT  DROP

# ループバック(127.0.0.1)からの入力を許可する
/sbin/iptables  -A  INPUT  -i  lo  -j  ACCEPT

# 関連しているパケット、確立済みのパケットの入力は、必ず許可する
/sbin/iptables  -A  INPUT  -m  state  --state  RELATED,ESTABLISHED  -j  ACCEPT

# リモートメンテ用SSHのポートを開放する ( TCP/22)
/sbin/iptables  -A  INPUT  -p  tcp  -m  state  --state  NEW  --dport  22  -j  ACCEPT

# OpenSim用のポートを開放する
/sbin/iptables  -A  INPUT  -p  tcp  -m  state  --state  NEW  --dport  8001  -j  ACCEPT
/sbin/iptables  -A  INPUT  -p  tcp  -m  state  --state  NEW  --dport  8895  -j  ACCEPT
/sbin/iptables  -A  INPUT  -p  tcp  -m  state  --state  NEW  --dport  9000  -j  ACCEPT

# 1番目のリージョン用のポートを開放する(UDP/9000)
/sbin/iptables  -A  INPUT  -p  udp  --dport  9000  -j  ACCEPT

# 複数リージョンを立ち上げる場合は、通し番号でポート開放する
/sbin/iptables  -A  INPUT  -p  udp  --dport  9001  -j  ACCEPT
/sbin/iptables  -A  INPUT  -p  udp  --dport  9002  -j  ACCEPT


# 拒否されたINPUTパケットは、ログファイル(/ver/log/kern.log)に記録する
/sbin/iptables  -A  INPUT  -j  LOG  --log-prefix  '## UNDEFINED_INPUT ## '  --log-level=3


 本来はINPUTだけではなく、許可しないOUTPUTも拒否すべきなので、ちょっと手抜きのファイアウォールです。




● おしまい

 むかしはいくつも関連記事をダラダラ投稿しましたが、簡潔に書いたほうがわかりやすいですね。
 では、OSGridでお会いしましょう。 (って、ほとんど誰もいませんけど。。。 ^^;)



同じカテゴリー(OpenSim)の記事
 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)
 OpenSimサーバ構築記録その5(外部Simサーバ接続編) (2008-07-08 19:43)

Posted by ぱすてる at 19:33│Comments(2)OpenSim
この記事へのコメント
ぱすてるさんはじめまして。Kobumakiといいます。
サンドボックス用にOpenSim環境を整えたくて、ここひと月ほどずっと参考にさせて頂いてました。
当初はWindows上の環境で始めたんですが、なぜかGridモードが安定せず。こちらのUbuntu上での構築が比較的情報が新しく、しかも丁寧な解説だったのでLinuxは初めてでしたがやってみました。いまはOSXのparallel上ですごく安定して動いてます。(スタンドアローンGridモードです)
とても参考になりました。ありがとうございます。
それで僕なりにぱすてるさんの手順にプラスした部分があったりしまして、ぱすてるさんの手順を引用しながら自分のブログにメモしておこうと思いますが、構いませんでしょうか?(記事そのものはまだ下書き中です。)あと、リンクにも登録させて頂ければなあと。SIO2も興味深いですね。
Posted by Kobumaki at 2009年08月07日 14:36
(^^) Kobumakiさん。お初です。^^/

どうぞどうぞ。
オープンソースですから、役に立つ情報はみんなで共有しましょう。
それに、手順の解説を書いても、すぐに古くなってしまいますからねぇ。
最新の情報をアップしていただけるのは、大変ありがたいですヨ。 ^^v
Posted by ぱすてるぱすてる at 2009年08月07日 19:55
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。