ソラマメブログ
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
プロフィール
rikachann Aabye
rikachann Aabye
きままに遊んでます。
最近はものつくりをやりたいと思ってます。
なかなか思うように作れませんが試行錯誤の毎日です
よろしくね。

  
Posted by at

2012年05月26日

CentOS6でOpenSim MySQL編

前回のメガリージョン編に引き続き データベースを SQLite からMySQLに変更します

ただし、SQLiteでのデータが継承されません。
地形データも丸い初期島に^^;



バックアップが必要な場合は
バックアップしたいSIM(ここでは rika_island)に移り
change region rika_island
save oar rika_island として oar形式でバックアップします^^

MySQL移行後
change region rika_island
load oar rika_island で移行できると思います。

MySQLへの移行手順をメモします

ユーザーrootになります
$ su -
パスワード:


MySQLサーバーをyumでインストールします。
# yum -y install mysql-server

MySQLサーバーを起動します
# /etc/rc.d/init.d/mysqld start

自動起動の設定します。
# chkconfig mysqld on

自動起動設定の確認をします
# chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

MySQL rootパスワードを設定します(例:パスワードhogehoge)
# mysql -u root
mysql> SET PASSWORD FOR root@localhost=password('hogehoge');
Query OK, 0 rows affected (0.00 sec)

いったん終了し、MySQL rootパスワードで起動
mysql> quit

# mysql -u root -p
Enter password:hogehoge

登録ユーザーを見る
mysql> select host,user,password from mysql.user;



ユーザー名のないものは削除する
mysql> DELETE FROM mysql.user WHERE user='';

ユーザーrootでパスワードの無いホストにルートパスワードを設定
mysql> grant all on *.* to root@127.0.0.1 identified by 'hogehoge';

mysql> grant all on *.* to root@pengin.centos.com identified by 'hogehoge';

変更内容を確認します
mysql> select host,user,password from mysql.user;



データテーブルを確認します
mysql> SHOW DATABASES;



データベースtestは不要なので削除

mysql> DROP DATABASE test;

OpenSimのデータベース作成(文字コードをutf8で設定)
ここでは
 OpenSim用のデータベース名を opensim
 ユーザー名をopensim_user
 パスワードをhogehoge_opensim
として設定

データベース作成
mysql> create database opensim default character set utf8;

ユーザーとパスワード設定
mysql> grant all on opensim.* to opensim_user identified by 'hogehoge_opensim';

データテーブルを確認します
mysql> SHOW DATABASES;



MySQLデータベースの権限再読み込み

mysql> flush privileges;

終了します

mysql> quit

ユーザーに戻ります

# exit
logout

OpenSimのbin/config-includeに移動します

$ cd bin/config-include

StandaloneCommon.iniの設定で SQLiteからMySQLに設定変更します

$ vi StandaloneCommon.ini

Include-Storage = "config-include/storage/SQLiteStandalone.ini";  
コメントアウトします。先頭に;を追加
;Include-Storage = "config-include/storage/SQLiteStandalone.ini";  


;StorageProvider = "OpenSim.Data.MySQL.dll" 
先頭のコメント ; をはずします。
StorageProvider = "OpenSim.Data.MySQL.dll" 

;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;"
先頭のコメント ; をはずします
MySQLで設定した データベース名、ユーザー名、パスワードを設定します

ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim_user;Password=hogehoge_opensim;Old Guids=true;"



保存します

binに戻り OpenSimを起動します。

途中で質問されます
    ・
New estate name [My Estate]: rika_sim        ここでは rika_simとしました
    ・
    ・
Estate owner first name [Test]: rika           ここでは rika
Estate owner last name [User]: kayama        ここでは kayama
Password:                           ここではrika.kayamaのパスワード設定しました
Email []:                            単にEnter
    ・
    ・
Region (root) #

これでMySQLへの移行ができました


MySQLで作成されたデータベースをのぞいてみます

# mysql -u root -p
Enter password:

データベースをopensimに切り替えます
mysql> use opensim;

テーブル内容を表示します
mysql> show tables;



ユーザー定義 UserAccountsのテーブル定義を確認します
mysql> desc UserAccounts;



登録されているアバタの名前を確認します
mysql> select FirstName,LastName from opensim.UserAccounts;



いろいろとどんな定義がなされているか調べるのも面白そうです^^






  

Posted by rikachann Aabye at 17:50Comments(0)CentOS

2012年05月21日

CentOS6でOpenSim メガリージョン編

前回に続いて、CentOSでOpenSim、今回はさらに1SIMを追加して、メガリージョンで動作させてみたいとおもいます。

そのまえに、ビュア(SL Viewer)の設定です。
Win7を例に説明します。

まずデスクトップのSL Viewerのアイコンを右クリックして、プルダウンメニューから
ショートカットの作成を選択して、デスクトップ上にショートカットを作成します。

同じ名前だと紛らわしいので、右クリックでプルダウンメニューから名前の変更を
選んで、名前を変更します

名前を変更したアイコンを右クリックして、プロパティを選択します

リンク先の最後尾に 半角スペースを入れて、OpenSimのIPアドレス:ポート番号を追加します。
前回の設定の例ではCentOSサーバーのIP 192.168.1.50 ポートは9000なので

 -loginuri http://192.168.1.50:9000/ となります

適用を押して保存します。

OpenSimを起動して、接続します。



ここから、メガリージョンの設定をしてみます

メガリージョンは複数の連続したSIMを1つのSIMみたいにふるまう設定です。(この説明でいいのかな^^;)

ここでは2SIMをメガリージョンとして設定してみます。

まず、SIMのレイアウトを決めます。
現存しているSIM(ここではrika_island)の現在地は、(1000,1000)です
追加するSIM(ここでは oimo_island)を北側に連結します(地図では上部)

現在地(X,Y)で Xは東西、Yは南北の軸を取ります。

追加するSIM(oimo_island)の位置は、北側なので
(1000,1001)となります

rika_island (1000,1000)
oimo_island (1000,1001)

リージョン情報は、Regions.iniファイルに追記します。

$ cd Regions
$ vi Regions.ini

[rika_island]
RegionUUID = 87369d1d-6e02-45bc-9596-c9de11964791
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = 192.168.1.50

このブロックをそのまま コピーをとり、ブロックの下に一行空けて追加します。



1、リージョン名を変更します  例では rika_island → oimo_island

2、リージョンUUIDを変更します(この値は、ユニークでないといけません)
  ここでは、先頭2バイトを変更しましたが、実際の運用ではuuidgenコマンドでuuidを生成します。
  $ uuidgen
   18ee79b4-da71-4613-91b0-1c523673614c  ユニークなuuidが生成されます。
  生成された uuidをコピー、貼り付けします。


3、リージョンの位置を設定します。 1000,1000 → 1000,1001


4、ポート番号を設定します。 各SIMごと異なるポート番号の設定が必要です
      9000 → 9001

変更後はこのようになります。

[rika_island]
RegionUUID = 87369d1d-6e02-45bc-9596-c9de11964791
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = 192.168.1.50

[oimo_island]
RegionUUID = ba369d1d-6e02-45bc-9596-c9de11964791
Location = 1000,1001
InternalAddress = 0.0.0.0
InternalPort = 9001
AllowAlternatePorts = False
ExternalHostName = 192.168.1.50

次に各リージョンに
ClampPrimSize = False
を追加します。

[rika_island]
RegionUUID = 87369d1d-6e02-45bc-9596-c9de11964791
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = 192.168.1.50
ClampPrimSize = False

[oimo_island]
RegionUUID = ba369d1d-6e02-45bc-9596-c9de11964791
Location = 1000,1001
InternalAddress = 0.0.0.0
InternalPort = 9001
AllowAlternatePorts = False
ExternalHostName = 192.168.1.50
ClampPrimSize = False

保存します。

次にbinに戻り OpenSim.iniを編集します

$ cd ..
$ vi OpenSim.ini

118行 付近の
; CombineContiguousRegions = false を変更します



 ; CombineContiguousRegions = false  先頭のコメント;を消去して、falseをtrueに変更

 CombineContiguousRegions = true 

保存します


OpenSimを起動します
$ mono OpenSim.exe

途中に問い合わせがあります
Do you wish to join region oimo_island to an existing estate (yes/no)? [yes]:  Enterしました
Name of estate to join. Existing estate names are (rika_sim) [rika_sim]:     Enterしました
   ・
   ・
Region (root) #        OpenSimのコマンド待ち(リージョン名がrootになります)

ファイヤーウォール設定のためいったん終了します

rootになり、 iptables を編集します
新たに追加したリージョンのポート(9001)を追加します。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 9001 -j ACCEPT
を追加します


# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 9000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 9001 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

保存します

iptablesサービスを更新します
# service iptables restart

再度ユーザーに戻り opensimを立ち上げます
SIMがもうひとつ見えるでしょうか

SIMの地形を変えてみます

ここでは 以前製作した ハート島のデータを使ってみます。
opensimのbinディレクトリーに地形データをコピーします。
ここでは 地形データは heart_island.png とします

opensimを起動します
コマンド待ちになったら 変更したいSIMに変更します。
rootのままだとすべてのSIMが対象になります。

oimo_islandをハート島にします(change region SIM名(リージョン名))

Region (root) # change region oimo_island
Region (oimo_island) #

対象がoimo_islandになりました

地形データを読み込みます( terrain load 地形ファイル名)

Region (oimo_island) # terrain load heart_island.png

いったんopensimを終了し、再起動します。

あれ、地図には出ない、でもミニマップには表示されている^^;
(SL Viewer)



Imprudence Viewerでは地図の表示も正常です。



Phoenix Viewerでは SL Viewerと同様 地図の表示がでませんでした




Imprudence Viewerがいちばん 相性が良いようです^^




     

Posted by rikachann Aabye at 15:20Comments(2)CentOS

2012年05月20日

CentOS6でOpenSim 導入編

OpenSimのコンパイルの準備が整いましたので(まだって方は、導入編参考にしてね^^)早速、ソースを
取りに行きましょう

OpenSimulatorのwikiのダウンロードからソースをダウンロードします

今回は 
  opensim-0.7.3.1-source.tar.gz を選択しました

コンパイルはユーザーの権限で行います。

ユーザー homeにディレクトリー作成

$ mkdir opensim
$ cd opensim
ここに opensim-0.7.3.1-source.tar.gzを移動

$ tar zxvf opensim-0.7.3.1-source.tar.gz
$ cd opensim-0.7.3.1-source
$ ./runprebuild.sh

いつもはNantでビルドしてましたが、今回はmono実行環境にあるxbuildを使用しました
  (xbuildはmonoをコンパイルした際に生成されています) 
$ xbuild
      ・
      ・
201 Warning(s)
0 Error(s)

Time Elapsed 00:06:22.5528780
ワーニングは出ますがエラーは無いようです。

$ cd bin

OpenSim.iniはすでに用意されていますので、実行してます

$ mono OpenSim.exe

問い合わせに応答します(例です)
New region name []: rika_island                     simの名前
RegionUUID [e4386b33-d66e-4021-99de-530f09158805]:   値は変えないのでそのまま Enter
Region Location [1000,1000]:                      値は変えないのでそのまま Enter
Internal IP address [0.0.0.0]:                       値は変えないのでそのまま Enter 
Internal port [9000]:                             値は変えないのでそのまま Enter 
Allow alternate ports [False]:                       値は変えないのでそのまま Enter 
External host name [SYSTEMIP]: 192.168.1.50          サーバーのIPかサーバーネーム
  ・
  ・
New estate name [My Estate]: rika_sim                土地の管理名(たぶん^^)
  ・
  ・
Estate owner first name [Test]: rika                  アバター名
Estate owner last name [User]: kayama               アバター姓
Password:                                  パスワードを入力
Email []:                                    公開しないので そのままEnter
User ID [8f664132-cfd7-469a-b009-81a64c2a73ec]:       値は変えないのでそのまま Enter
  ・
  ・
Region (rika_island) #                           OpenSimコマンド待ち

コマンド待ちの表示がでたら 正常に起動できたみたいです。
※途中で”System.DllNotFoundException: gdiplus.dll”というエラーがでるかもしれません
  ライブラリーが登録されていないようです。
  次のコマンドをrootで実行し、何も帰ってこなかったらライブラリーの登録の設定ができていません
  #/sbin/ldconfig -p | grep libgdiplus
  設定ファイル"ld.so.conf"に”/usr/local/lib”を追加します

  # vi /etc/ld.so.conf

   /usr/local/lib     追加します

  ldconfigを実行します
  # /sbin/ldconfig

  先ほどの確認用コマンド実行し、次のような返事がかえればOKです(例)
  # /sbin/ldconfig -p | grep libgdiplus
libgdiplus.so.0 (libc6,x86-64) => /usr/local/lib/libgdiplus.so.0
libgdiplus.so (libc6,x86-64) => /usr/local/lib/libgdiplus.so


ファイヤウォールの設定のためにいったん終了します。

Region (rika_island) # shutdown                    quitでも終了します。


rootになってiptablesファイルにopensim用のポートをアクセス許可の追加をします

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 9000 -j ACCEPT
を追加します

# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 9000 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

iptablesサービスの反映をします

# service iptables restart

ユーザーに復帰して再度 opensimを立ち上げます。

接続できれば、丸い小島が確認できると思います





あつ、ビャアの設定がありました・・・・・ 次回に^^;



  

Posted by rikachann Aabye at 08:52Comments(0)CentOS

2012年05月19日

CentOS6でOpenSim 準備編

CentOS6OpenSimを構築しましたのでメモをします。

今回導入したCentOS6はインストール時に、最小ディスクトップ、開発で開発ツールを選択しています。
ハードはIntel Atomプロセッサー 2Gメモリです。

インストールされたCentOSのバージョンは
     $ cat /etc/redhat-release
     CentOS release 6.2 (Final)

インストール後の初期設定は 「CentOSサーバー構築マニュアル」さんのマニュアルを参考にしました
   ・yumによるアップデート
   ・SELinux無効化
   ・リポジトリインストール
等を実施しました

OpenSimは「opensim-0.7.3.1」です。 ソースからインストールします。

インストール後の実行結果はメガリージョンまで確認できました。(設定は次回に^^;)
(2SIMをメガリージョンとしました)



OpenSimの実行環境としてmonoが必要になりますが、簡単な方法として、バイナリーを入手して
展開するのが近道です。

CentOS6で下記のように、バイナリをyumよりダウンロードして展開し、実行することにしましたが
エラーが発生してしまします。

OpenSimのwikiで記載されている「Mono のリポジトリからインストールする 」方法では、
rpmファイルを解凍する時エラーとなりました。




解決方法が見つからないので、mono実行環境をソースからコンパイルしてみました


 libgdiplus拡張ライブラリーのコンパイル
 Mono実行環境のコンパイル

となります。

まず最初にmonoのコンパイルに必要なライブラリー、ツールを事前にyumでインストールします
こちらのPhonicUK Wikiさんのwikiを参考にインストールしてみました
(すでにインストール済みのものもあります)

# yum install bison gettext glib2 freetype fontconfig libpng libpng-devel libX11 libX11-devel glib2-devel libgdi* /
  libexif glibc-devel urw-fonts java unzip gcc gcc-c++ automake autoconf libtool make bzip2 wg

libgdiplus拡張ライブラリーのインストール
 mono-projectのダウンロードよりソースを入手します。

今回は libgdiplus-2.10.9.tar.bz2 を選択

/usr/local/src で展開
# tar jxvf libgdiplus-2.10.9.tar.bz2  
# cd libgdiplus-2.10.9
# ./configure
# make
# make install
# ldconfig

monoのインストール

 mono-projectのダウンロードよりソースを入手します。


今回は mono-2.10.9.tar.bz2 を選択

/usr/local/src で展開
# tar jxvf mono-2.10.9.tar.bz2
# cd mono-2.10.9
# ./configure --with-libgdiplus=/usr/local/lib/libgdiplus.la --prefix=/usr/local
# make
# make install

*コンパイルには1時間30分程度かかりました^^

バージョンを確認します

$ mono --version
Mono JIT compiler version 2.10.9 (tarball 2012年 5月 19日 土曜日 17:22:46 JST)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)

無事インストールできたみたいです。

次回 OpenSimのソースをコンパイルして実行してみます。

  

Posted by rikachann Aabye at 20:18Comments(0)CentOS