• カテゴリー別アーカイブ OSgrid
  • 7.OpenSim » OSgrid
  • サーバーコマンドでRegionのバックアップをとる

    サーバーコマンドのつづきです。自分でバックアップをかんりしないといけないので、こまめなバックアップは必要です。ゆくゆくは、決まった時間に自動でやるようにするとして、とりあえず、なんかバックアップとっておこうと思いRegionのoarファイルを作っておきます。

    資料はOpensimulatorのwikiに説明されています。

    バックアップは
    save oar [--noassets] [-h|--home=] []

    サーバーコマンドを使ってRegionのバックアップをとる。
    Region># save oar michieisland.oar

    指定しなければopensim/bin/にファイルが作られた。
    島(Region)の地形から objectの配置やテクスチャーまですべてまとめられている。

    -- noassetsオプションはアセットの分を含まず
    --homeオプションは?
    -perm=CTオプションはコピー譲渡を許可する?リストアしたもののパーミッションに関係あるのかなー、oarファイルを他人に公開するときに関係あるのか、まだ未確認です。あとで調べることにしておきます。

    ファイルから復元するには
    load oar [--merge] []

    Region(Root)># load oar michieisland.oar
    注;ここでRootとなってたの気がつかず読み込んでしまったので、複数あるRegionの真ん中に読み込むはずが、最初のRegionに読み込まれてしまいました
    change region <region name>
    で対象regionを指定しましょう、メガリージョンの場合は[--merge] []のオプションなのかな?

    ためしに、DTIのサーバーで作ったOARファイルを、さくらVPS側のOpenSimで読み込んでみる。
    じゃじゃ~ん!

    あは!まったく同じシムが出現したー ミチエ


  • OpenSim.ConsoleClientを使ってサーバーコマンドを入力する。

    前回のスクリプトでRegionがバックグラウンドでうまく動いているでしょうか。
    ブラウザーでログインして、まず地形を編集すると思うのですが、遅延で思うように変化してくれません、そこでRegionサーバーを直接編集できるコマンドを使いたいのですが、バックグラウンドではコマンド入力出来ません、再起動してもいいのですが、便利なツールが用意されてます。OpenSim.ConsoleClient.exeを使って、必要な時だけRegionサーバーのコマンドラインにアクセスできます。立ち上げるとバッファーに残ったメッセージも表示されます。

    準備はOpenSim.iniとOpenSim.ConsoleClient.iniのユーザーとパスワードを設定します。

    OpenSim.iniの変更個所、コメントを解除してユーザーとパスワードを設定します。

    [Network]
        ;; Configure the remote console user here. This will not actually be used
        ;; unless you use -console=rest at startup.
        ConsoleUser = "username" ;;ここに名前を記入します。
        ConsolePass = "**********" ;;ここにパスワード登録
        console_port = 8003
    
        ;# {http_listener_port} {} {TCP Port for this simulator to listen on? (This must be unique to the simulator!)} {} 9000
        ;; Simulator HTTP port. This is not the region port, but the port the
        ;; entire simulator listens on. This port uses the TCP protocol, while
        ;; the region ports use UDP.
        ; http_listener_port = 9000
    
        ;# {ExternalHostNameForLSL} {} {Hostname to use for HTTP-IN URLs. This should be reachable from the internet.} {}
        ;; Hostname to use in llRequestURL/llRequestSecureURL
        ;; if not defined - default machine name is being used
        ;; (on Windows this mean NETBIOS name - useably only inside local network)
        ; ExternalHostNameForLSL = "127.0.0.1"
    
        ;# {shard} {} {Name to use for X-Secondlife-Shard header? (press enter if unsure)} {} OpenSim
        ;; What is reported as the "X-Secondlife-Shard"
        ;; Defaults to the user server url if not set
        ;; The old default is "OpenSim", set here for compatibility
        ;; The below is not commented for compatibility.
        shard = "OpenSim"
    
        ;# {user_agent} {} {User agent to report to web servers?} {} OpenSim LSL (Mozilla Compatible)
        ;; What is reported as the "User-Agent" when using llHTTPRequest
        ;; Defaults to not sent if not set here. See the notes section in the wiki
        ;; at http://wiki.secondlife.com/wiki/LlHTTPRequest for comments on adding
        ;; " (Mozilla Compatible)" to the text where there are problems with a web server
        ; user_agent = "OpenSim LSL (Mozilla Compatible)"

    OpenSim.ConsoleClient.iniは、OpenSim.ConsoleClient.ini.exampleから複製します。

    修正箇所は

    [Startup]
        ; Set here or use the -user command-line switch
        user = username ;;ここをOpenSim.iniに書いた名前にする
    
        ; Set here or use the -host command-line switch
        host = localhost
    
        ; Set here or use the -port command-line switch
        port = 8003
    
        ; Set here or use the -pass command-line switch
        ; Please be aware that this is not secure since the password is in the clear
        ; we recommend the use of -pass wherever possible
        pass = ********** ;;ここをOpenSim.iniに書いたパスワードにする

    準備が終わったら起動してみる。

    /usr/local/opensim/bin$ sudo mono OpenSim.ConsoleClient.exe

    うまくいけば OpenSim.exeの時と同じRegionサーバーのコマンド待ち状態になります。

    Region(MichieIsland)>

    ここでコマンドを入力するのですが、qはConsoleClientの終了になります、Region serverを止めるにはshutdownの方をつかいます。

    さて、サーバーコマンドはどのような物があるのでしょうか、詳細は本家を参照してください。

    私がすぐ使ったコマンドは土地の整地に関する物でした。

    とにかく平らな土地にしたかった(25mの平地をつくる)

    terrain fill 25

    全体をかさ上げする(全体を3m上げる)

    terrain elevate 3

    全体を一律に低くする(全体を1m下げる)

    terrain lower 1

    現在の地形に乗算する(現在の地形の高さを半分にする)

    terrain multiply 0.5

    指定したファイルから地形を読み込みます。(myterrain.bmpという地形ファイルを読み込みます)

    terrain load myterrain.bmp

    余談ですが、いろんなファイルフォーマットに対応してるのですが、私の環境ではBMPがいちばん綺麗に読み込めました、もっと調べる必要がありますね。

    9連シムなど簡単にできるのですから、それを大きな地形ファイル一つで管理したくなります。画像をシムの数で格子状に分割して一部を読み込むコマンド
    terrain load-tile <filename> <imageX> <imageY> <bottomleftsimX> <bottomleftsimY>
    これが理解しにくいのですが3x3の9連シムで考えると
    NW,N,NE
    W,C,E
    SW,S,SE
    このような配列の場合南西のはずれが原点となりますので
    SWのサーバーの場合

    terrain load-tile <filename> 3 3 0 0

    Wのサーバーの場合

    terrain load-tile <filename> 3 3 0 -1

    と3分割X3分割して画像の原点のXは同じ、Yが自分より一つ下の区画にあると指定すると理解したのですが、ウエーブ上を探してみると何種類かの説明がみつかるので、何度か仕様がかわってるのか、私が勘違いしてるのかなー未検証:-)


  • OpenSimのバックグラウンド起動

    東京情報大学の”OpenSimサーバシステム構築入門 (v0.7.2対応) PDF版v1.1.0″に詳しく書かれていますp58前後 たいへん参考になりました。ありがとうございます

    私はスクリプト書けないのでそのまま使わせて頂きました。
    screenコマンドでバックグラウンド起動できるが、あとあと地形をいじったりするときサーバーコマンドなど入力できるようにRestConsoleモードと合わせたスクリプトの方を使う。マニュアル内に書かれていますが、同大学が提供されているopensim.nsl.pach-0.7をダウンロードしてきて中のconfigデレクトリーにあるopensim_region_restを/etc/ini.d/にコピーして使っている。(opensim_server_restはOSgridではRoubust saverは使わないのでいらない)

    修正箇所は
    OpenSimをインストールしたところへのパスは正しかったのでそのまま
    MONOへのパスは/usr/bin/mono自分に合せて変更。
    マネーサーバーは使ってないので該当する部分を#でコメントアウトにした、自信がないんですが、start()のなかの最後の2行、stop()内の最初の2行。

    いっぽう、RestConsoleモードで利用するためOpensim.iniに書き加える変更だが、起動スクリプト内からコマンドラインのオプションで指定して起動するため書き加える必要はないみたい。その方がバックグラウンドを止めて通常に起動させるときも書き換え必要ないのでいい。

    準備がおわったら起動してみる

    sudo /etc/init.d/opensim_region_rest start

    終了は

    sudo /etc/init.d/opensim_region_rest stop

    これでssh接続切ってもopensimは動いてるので、いつでも遊べる ミチエ


  • OpenSimを起動してOSgridに接続

    OpenSimの最初の起動

    インストールしたopensim/binに移動

    cd /usr/local/opensim/bin
    sudo mono OpenSim.exe

    エラーが出ていなければRegionの設定になります、Regions.iniがあれば読み込まれRegionの管理者を訪ねてきますので、OSgridに登録したアバター名登録パスワードを順に記入します。また一番最初ときエステートの名前と管理者を訪ねてきたと思います。エステートとは自分のRegionのグループ名だと理解すればよいでしょう。2番目のRegion以降は**エステートに加えてもよいですか?と聞かれるようになります。そのときはYと認証することになります。入力後問題なければサービスが開始されてRegionのコマンド待ちの状態になるはずです。

    Region (Simの名前) #

    となってれば成功です。Simの名前のとこは複数Regionを設定してる場合はRootまたはそれぞれのSimの名前になります(サーバーコマンドで選択)。

    成功したら、終了方法です。

    Region (Simの名前) # shutdown

    このままでは、OpenSimを実行しているシェルウィンドウを閉じてしまうとサービスも終了してしまいます。VPS借りているのですから常時稼動してもらわないとこまります。次回はその設定 ミチエ


  • OpenSimのOSgrid用設定ファイルを準備

    設定ファイルは最初ないので、ひな形から複製します。

    /usr/local/opensim/bin# ls *ini*

    色々でてきますがOpenSim.ini.exampleをつかいますます

    cp OpenSim.ini.example OpenSim.ini
    vi OpenSim.ini[/cod]
    
    とここで編集してスンドアローンで立ち上げるテストをしてもいいですがOSgridにつなぐ目的なので省略、ログインサーバーなどの働きをするRoubustサーバーも省略前回ソースをとってきたwww.OSgrid.orgのダウンロードページに、設定ファイルもおいてあったので、それをコピペしちゃいました。あとで変更ヶ所がでてくるけど、最初はそのままでOK(GridHypergrid.iniを読み込む設定)。
    
    さらにconfig-includeに移動してGridCommon.iniとFlotsamCache.iniをコピー
    [code lang="js"]cd config-include
    cp GridCommon.ini.example GridCommon.ini
    cp FlotsamCache.ini.example FlotsamCache.ini

    これらもOSgridのテキストからコピペしました。

    GridCommon.iniは変更するとこがあります。
    先頭のセクションでデーターベースを指定します。

    ;[DatabaseService]
    ;
    ; ### Choose the DB
    ;
    ; SQLite
    ;Include-Storage = "config-include/storage/SQLiteStandalone.ini";コメントアウトします
    ; Unfortunately the current SQLite database plugin is not compatible with Mac OSX. You can still use the older
    ; legacy sqlite library if you are using Mono 2.4. Please see the notes in OpenSim.ini (search for sqlite)
    ; for more details
    ;Include-Storage = "config-include/storage/SQLiteLegacyStandalone.ini";
    ; MySql
    ; Uncomment these lines if you want to use mysql storage
    ; Change the connection string to your db details
    ;;コメントアウトをはずしてパスワードを設定します。MySQLにopensimと言うユーザー作ったのでそのパスワードです。
    StorageProvider = "OpenSim.Data.MySQL.dll"
    ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;"
    ; Uncomment this line if you are using MySQL and want to use a different database for estates
    ;下はエステートの管理を他のサーバーのデーターベースで管理するときか?とりあえずそのまま 
    ;EstateConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;";

    FlotsamCache.iniはそのまま

    さて、次はOSgridにつなげる自分のシムの情報を書いた設定ファイルを作成します
    予め用意しておかなくても、OpenSim起動したときに、聞いてくるので、それに答えていけば自動に製作されます。
    場所はbin\regions\Region.ini
    内容は、1SIMあたり下記のような内容で、複数SIMを作りたいときは、ここに追記するだけです。最初は1つで試してみました。

    [MichieIsland]
    RegionUUID = 122345ab-cdef-1234-5648-9abcdef12345
    Location = 10123,10123
    InternalAddress = 0.0.0.0
    InternalPort = 9000
    AllowAlternatePorts = False
    ExternalHostName = ***.***.***.***

    一番最初がRegionの名前(SIMの名前)
    2番目はRegionごとに設定するユニークなID 起動した際に入力しているならば、自動に生成されているとおもうけど、あらかじめ用意しておくときはuuidgen -tコマンドで生成しておく。
    3番目はOSgridのマップで探したあいてる場所の座標を指定する。中心は10000,10000なので離れすぎるとハイパーリンクで移動できない
    4番目はそのまま
    5番目はひとつ目はそのまま、追加するば場合はかぶらないように変更していく。
    6番目はそのまま。
    7番目に自分のサーバーのアドレスを指定する。

    現在、ひとつのRegionにたいしてこれだけのセットをしていしてあればいいみたいだ。
    管理者やエステートなどは初回に尋ねられるので、そのとき入力する。Regions.iniにはのこらないみたい。

    もう早く起動したい?回はOpenSimをスタートさせてOSgridにつなげてみます。ミチエ