Windows Azureの仮想サーバ(Windows 2008 Server R2)で、opensim.exeを使い、JOGRID(Japan Open Grid)に接続しているのですが、Windows Azureでは保守メンテで月1回程度また不定期にサーバがリブートされます。
リブート後は、都度ログインして手動でopensim.exeを起動して面倒なので、サービス起動するようにしました。
最初、sc createで無理からサービス登録しましたが起動せず。
しょうがないので、昔作った「サービスからプログラムを自由に起動できる」アプリを使用しました。
(自分用のメモを兼ねていますので分かりずらいかも。上級者向けです><)
用意するもの、
http://icebar.cloudapp.net/service.zip
ダウンロード後、c:serviceに展開する。
(展開フォルダーはどこでも良いですが、以下の説明は、c:service配下に置いた場合として説明しています。)
==梱包内容==
simple.exe —– simpleサービス本体プログラム
kill.exe —– プロセス停止プログラム
process.lst —– 自動起動したいプロセス一覧リスト(simple.exeが参照する)
install.bat —– インストール
uninstall.bat —- アンインストール
startup.bat —– サービスプログラム起動
stop.bat —– サービスプログラム停止
jogrid.bat —– OpenSim.32BitLaunch.exeの起動
事前にopensimの環境設定がされていることが前提です。(OSは64ビットです。)
1) opensimの設定変更
opensimを停止し、以下の2ファイルを修正して、opensimをREST コンソールモードに変更します。
(サービスで起動するためコンソール画面は出てきません。そのかわりに、サーバを操作したい時は、OpenSim.ConsoleClient.exeでサーバに接続して操作します。)
OpenSim.ini
[Network]
ConsoleUser = “xxxx”
ConsolePass = “zzzzzz”
console_port = 8003
OpenSim.ConsoleClient.ini
[Startup]
user = xxxx
host = localhost
pass = zzzzzz
・xxxxとzzzzzzはOpenSim.iniとOpenSim.ConsoleClient.ini同じに設定
・hostはlocalhostで認識しなければローカルIPアドレスを記載する。
私の場合は、10.0.0.12
・ポートは、使っていないTCPポートを指定。通常8003で可
2) simpleサービスのインストール
●インストール前に以下の設定ファイルを確認。
a) process.lst
C:WindowsSystem32cmd /c C:servicejogrid.bat
※C:service以外のフォルダーの場合は、C:serviceを書き換えてください。
b) jogrid.bat
SET OPENSIM_PATH=C:projectsjogrid-opensim-08152014.v0.8.1.3a643e2bin
※opensim.exeがあるフォルダーにOPENSIM_PATH=以下を書き換えて下さい。
[メモ] cdで、opensim.exeのある場所にディレクトリー移動しています。
opensim.exeはサービスから起動することを想定していませんので、
これをしないと、opensim.*.iniが見つけられずエラーとなります。
c)install.bat
sc config simpleservice type= own start= auto depend= MySQL
※データベースにsqliteを使っている場合は、depend= MySQLの指定は外す。
私は、MySQLを使っているので、MySQLが起動した後に、simpleserviceが起動するようにします。
そうしないと、先にopensimが立ち上がると、データベース接続エラーがでるので。
●install.batの実行
cmd.exeでDOS窓を出して、
c:>
c:>cd service
c:service>insatll 実行
「OpenService failed – 指定されたサービス・・存在しません」
と表示されても無視して下さい。(インストール済みの場合は削除後にインストールされます。)
※サンプル画面では、jogrid.batの次にSMAILでメール送信しています。
無くて構いません。最後に、ChangeServiceConfig SUCCESSと表示されればOKです。
サービスの登録確認と設定変更
「管理ツール」-「サービス」で「Simple Service」をダブルクリックし
プロパティーー「ログオン」を表示し、アカウントにログインユーザとパスワードを設定してOKとする。
※普通は、ローカルシステムアカウントのままで良いのですが、Windows Azureの Windwos 2008 Server R2を日本語化して使うと、
SYSTEMアカウントのシステムロケールが日本にならないので、ローカルユーザのアカウントを使います。
※サービスに登録されただけでまだこの段階では OpenSim.32BitLaunch.exeは起動していません。
3) サービスを起動して、OpenSim.32BitLaunch.exeを動かす。
「サービス」から開始としても良いのですが、ここではDOS窓から
startup.batを実行してみます。
※起動後、process.lstを変更した場合は、
stop.bat / startup.batを実行する必要があります。
※サービス画面から開始はできますが停止はできません。
OpenSim.32BitLaunch.exeが停止できないためsimpleserviceが
ずっと待ち状態となります。
stop.batで止めて下さい。
3) 動作確認
1分ぐらい待ってから、OpenSim.ConsoleClient.exeを起動してプロンプトが出ればOK
※早すぎると、opensimが起動しきれていないので、ポート8003で待ち状態
となっていないためOpenSim.ConsoleClient.exeがエラー落ちしますが、
問題ありません。時間を空けて再度OpenSim.ConsoleClient.exeを起動して
ください。
以上で完了です。サーバが起動すればログオンしなくても自動起動します。
4) 停止方法:stop.bat
simpleserviceを停止させます。
OpenSim.32BitLaunch.exeのプロセスを強制停止します。
※OpenSim.32BitLaunch.exeを複数動かしている場合、全て停止します
5) アンインストール方法:uninstall.bat
サービスの登録を削除します。
※stop.batを実行した後、uninstallすると、
「指定されたサービスはインストールされたサービスとして存在しません。」
と表示されますが、問題ありません。