OpenSimとWebの連携(moodle+modlos)

OpenSimとWebの連携(moodle+modlos)

- Shinobar Martinek の投稿
返信数: 14

もとちゃさんのブログをなぞってハイパーグリッドモード(スタンドアロンではありません。MySqlとROBUSTを動かしてのグリッドモード)を立ち上げました。これとWebの連携に取り組んでいます。いろいろやってみましたが、うまくいきません。現在の到達点> http://hg.shinobar.server-on.net/moodle/

トップページ右側にJOGのページと同様の グリッドのONLINE/OFFLINEとユーザー数、SIM数などの統計が、ちゃんと表示されています。「ステータス」をクリックし、ゲストとしてログインすると、同じものが表示されます。しかし、ワールドマップやリージョンリストでは MySQLエラーが出ます。

MySQL ERROR: Table 'opensim.estate_map' doesn't exist (1146)
Session Halted.

なお、ユーザー登録してアバターを作成できることも確認しました。

moodle および modlos のバージョンについてはいろいろ試しました。moodle は 2.7.12, 2.8.10, 3.0.2。modlos は 2.7.0 と 2.8.4 です。

これらの組み合わせのうち、いちばんましだったものが上記のもの。moodle 2.8.10 + modlos 2.7.0 です。moodle 3.0.2 + modlos 2.7.0 では別のエラーが出ました(記憶あいまい)。

JOGのサイトは moodle 3.0.x + modlos 2.8.4 とのことです。modlos 2.8.4 をcvn から取得して試してみましたが、moodle のバージョンによらず、 トップページの統計表示はちゃんとできているのに、「ステータス」をクリックすると「データーベースエラー」とだけ表示されてしまいます。ワールドマップやリージョンリストでは 2.7.0と同様の MySQLエラーが出ます。modlos 2.8.4 は cvn からの取得で、私の操作の誤まりで、おかしなものになっているのかもしれません。

何か設定の問題ではないかと、modlosのドキュメント http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?Modlos (E)  とにらめっこしております。パーミッションの問題で、 modlosのディレクトリの所有者を wwwサーバーにするようにとあります。( http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?Modlos (E)%2FGetting Start ) いっぽうで「wwwサーバーから読めるように」との記述もありますので、root 所有にして 755 にセットすれば良いのではないかと? wwwサーバー所有も実験しましたが、変わりは無かったようです。

OpenSimは 0.8.2.1 です。OpenSIMサイトよりダウンロードしたもので、 .dll の入れ替えはしておりません。OpenSim.ini で WorldMapModule = "WorldMap" と MapImageModule = "MapImageModule" を設定せよとあったので、設定してあります。

Shinobar Martinek への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

>> MySQL ERROR: Table 'opensim.estate_map' doesn't exist (1146)

OpenSim は時々データベースの構造が変わるのですが,古いテーブルがそのまま残っていたりします.

私の開発環境はアップデートを繰り替えているのでが estate_map テーブルはもう使われなくなっているのかもしれません.

チェックしてみます.

後,エラーメッセージは全て提示してもらえるとデバックし易いです.

moodle は全てのデバッグコードが出力されるように設定してください.

modlos は最新版の使用をお勧めします.

Iseki Fumikazu への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

DBのテーブルをチェックしました.

estate_map はリージョンがどのエステートに属するか決定する大事なテーブルなので OpenSimの最新版でも使用すると思うのですが,もしかするとデファオルトのエステートが一種類しかない場合は作成されないのかもしれません.

estate_map テーブルが無くても動作するように変更してみますが,念のためテーブルの一覧が取得可能でしたらここに投稿して貰えないでしょうか.

よろしくお願いします.

Iseki Fumikazu への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Shinobar Martinek の投稿

お世話さまです。

mysql> show tables from opensim;
+-------------------+
| Tables_in_opensim |
+-------------------+
| AgentPrefs        |
| Avatars           |
| Friends           |
| GridUser          |
| Presence          |
| UserAccounts      |
| assets            |
| auth              |
| hg_traveling_data |
| im_offline        |
| inventoryfolders  |
| inventoryitems    |
| migrations        |
| regions           |
| tokens            |
+-------------------+
15 rows in set (0.00 sec)

modlos 2.8.4 固有のエラー 'moodle3.mdl_sloodle_users' は、 sloodleがインストールされていないからみたいですね。テーブル一覧は省略します。

Shinobar Martinek への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

テーブルがすごく少ないように思います.

estate関連のテーブルが全くありませんね.

JOGのテーブルは以下のようになっています.(古いテーブルも交じっています)

 

MariaDB [jogrid_db]> show tables;
+--------------------------+
| Tables_in_jogrid_db      |
+--------------------------+
| AgentPrefs               |
| Avatars                  |
| Friends                  |
| GridUser                 |
| Presence                 |
| UserAccounts             |
| assets                   |
| auth                     |
| balances                 |
| estate_groups            |
| estate_managers          |
| estate_map               |
| estate_settings          |
| estate_users             |
| estateban                |
| hg_traveling_data        |
| im_offline               |
| inventoryfolders         |
| inventoryitems           |
| land                     |
| landaccesslist           |
| migrations               |
| os_groups_groups         |
| os_groups_invites        |
| os_groups_membership     |
| os_groups_notices        |
| os_groups_principals     |
| os_groups_rolemembership |
| os_groups_roles          |
| primitems                |
| prims                    |
| primshapes               |
| regionban                |
| regionenvironment        |
| regionextra              |
| regions                  |
| regionsettings           |
| regionwindlight          |
| spawn_points             |
| terrain                  |
| tokens                   |
| transactions             |
| userinfo                 |
+--------------------------+
43 rows in set (0.00 sec)
Iseki Fumikazu への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

たぶん,一部のテーブルが MySQL対応になっていないのでは?

Iseki Fumikazu への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Shinobar Martinek の投稿

お忙しいところを恐縮です。最新版のセットも用意しました。moodle 3.0.2 + modlos 2.8.4。各ディレクトリは WWWサーバー所有にしています。

http://hg.shinobar.server-on.net/moodle3/

トップページにグリッドの状況が正しく表示されていますが、「ステータス」で以下のエラーが出ます。

データベースの読み込み中にエラーが発生しました。

このエラーに関する詳細情報

Debug info: Table 'moodle3.mdl_sloodle_users' doesn't exist
SELECT * FROM mdl_sloodle_users
[array (
)]
Error code: dmlreadexception
Stack trace:
  • line 443 of /lib/dml/moodle_database.php: dml_read_exception thrown
  • line 1080 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
  • line 306 of /blocks/modlos/jbxl/jbxl_moodle_tools.php: call to mysqli_native_moodle_database->get_records_sql()
  • line 1066 of /blocks/modlos/include/modlos.func.php: call to jbxl_db_exist_table()
  • line 52 of /blocks/modlos/class/show_status.class.php: call to modlos_sync_sloodle_users()
  • line 26 of /blocks/modlos/actions/show_status.php: call to ShowStatus->execute()ま
Shinobar Martinek への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Shinobar Martinek の投稿

上記「ステータス」でのエラーは、 modlos 2.7.0 では生じなかったものです。

「ワールドマップ」では以下のエラー:

function regionwin(uuid) { window.open("http://hg.shinobar.server-on.net/moodle3/blocks/modlos/helper/sim.php?course=1®ion="+uuid, null, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=800,height=450'); } function loadmap() { mapInstance = new ZoomSize(64); mapInstance = new WORLDMap(document.getElementById('map-container'), {hasZoomControls: false, hasPanningControls: true}); mapInstance.centerAndZoomAtWORLDCoord(new XYPoint(1000, 1000), 1); DB ERROR : Invalid SQL: SELECT regions.uuid,regionName,locX,locY,sizeX,sizeY,serverIP,serverURI,serverHttpPort,owner_uuid,estate_map.EstateID,EstateOwner,EstateName,firstname,lastname FROM regions LEFT JOIN estate_map ON RegionID=regions.uuid LEFT JOIN estate_settings ON estate_map.EstateID=estate_settings.EstateID LEFT JOIN UserAccounts ON EstateOwner=UserAccounts.PrincipalID
MySQL ERROR: Table 'opensim.estate_map' doesn't exist (1146)
Session Halted.

「ワールドマップ」でのエラーは modlos 2.8.4, 2.7.0 共通です。

なお、 moodle 2.8.10 + modlos 2.7.0 の組み合わせのもの従来の場所に残してあります。

http://hg.shinobar.server-on.net/moodle/

Shinobar Martinek への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

Sloodle 関連は,設定で 「Sloodleとの連携」 のチェックを外してください.

デフォルトでチェックが入っていますが,これは間違いですね.orz

デフォルトでは Sloodleは入っていないので....

Iseki Fumikazu への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

恐らく,modlos のエステート管理機能が追加されたバージョンでは estate_mapのエラーが出ます.

エステート管理機能の無いバージョン(2.7.x) は estate_map を見ないので,エラーが出ないのだと思います.

 

Iseki Fumikazu への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Shinobar Martinek の投稿

最新版 moodle 3.0.2 + modlos 2.8.4 http://hg.shinobar.server-on.net/moodle3/ において、modlosの設定から 「Sloodleとの連携」 のチェックを外すことにより、ステータスやアバター表示などが正常に動作するようになりました。ありがとうございます。

残るは 「リージョンリスト」と「ワールドマップ」です。moodle や modlos のバージョンに関わりなく 'opensim.estate_map' が無いとのエラーなので、OpenSim側のどこかの設定なのかもしれませんね。

Shinobar Martinek への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

投稿が分散してしまったので,再投稿します.

多分これではないですか ↓

>> リージョンサーバの bin/config-include/GridCommon.ini でも MySQLデータベースを使用するように設定していますか?

Iseki Fumikazu への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Shinobar Martinek の投稿

>> リージョンサーバの bin/config-include/GridCommon.ini でも MySQLデータベースを使用するように設定していますか?

そのとおりでした。無事ワールドマップ等も正常に動作するようになりました。ありがとうございました。

http://hg.shinobar.server-on.net/moodle3/

私の頭の中は「ハイパーグリッド=ROBUSTサーバー」みたいな発想があって、当初はROBUSTサーバーだけVPSで立ち上げ、各SIMは自宅サーバーという構成を考えていました。でも、Welcom Ariaとして1つはSIMが必要だと考え、同じVPS上で sqliteで立ち上げたのでした。そこのところを失念していました。

Shinobar Martinek への返信

Re: OpenSimとWebの連携(moodle+modlos)

- Iseki Fumikazu の投稿

modlos のドキュメントが貧弱で申し訳ありません.

Shinobar さんの元の設定でも間違いではありませんが,Webでデータ一括で管理するために modlos ではリージョンのデータもデータベース上にないといけない仕様になっています.

現バージョンも Sloodleの最新バージョンとの連携が正確にとれたらリリースしようと思っていたのですが,いつのまにか Sloodle の方か開発休止状態になって,Sloodle連携機能も中途半端で 2.8.x はずーとリリースしていませんでした.

ドキュメント化していない機能もありますので,なにか有りましたらお尋ねください.

 

>> moodle は全てのデバッグコードが出力されるように設定してください.

それから,設定が完了して運用に問題が無ければ,デバッグメッセージは一切出力しないようにした方が良いです.