2014年9月22日月曜日

opensim.exeのwindowsでのサービス起動

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:\Windows\System32\cmd /c C:\service\jogrid.bat
  
  ※C:\service以外のフォルダーの場合は、C:\serviceを書き換えてください。

  b) jogrid.bat
    SET OPENSIM_PATH=C:\projects\jogrid-opensim-08152014.v0.8.1.3a643e2\bin

  ※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すると、
  「指定されたサービスはインストールされたサービスとして存在しません。」
   と表示されますが、問題ありません。

2014年9月20日土曜日

Windows Azure Windows Server 2008の日本語化時のサービスプログラムのシステムロケールの挙動


Windows Server 2008R2 SP1複数言語ユーザー インターフェイス言語パック
http://www.microsoft.com/ja-jp/download/details.aspx?id=2634
 Windows言語設定変更
  地域と言語(display languag):
   形式、キーボードと言語
   管理 システムアカウント、システムロケール
  すべて日本語を選択
 
Windoすべて日本語を選択 Server 2008 R2 向け Internet Explorer 11 言語パック
http://www.microsoft.com/en-us/download/details.aspx?id=40904
  すべて日本語を選択

に設定したけど、サービスプログラムから起動したアプリは、システムロケールを日本としてくれない。

・ログインのコンソール画面から、crenahtml2jpg.exeを起動してWEB画面をキャプチャー:日本語キャプチャーされる。(正常)

【 タイトル:World of Tanks ? 無料オンラインゲーム】



・サービスプログラムからcrenahtml2jpg.exeを起動して、WEB画面をキャプチャー:英語圏からのようにキャプチャーされる。
WEBのタイトルも日本語が英語になってるので、英語圏からのアクセスとして認識されてしまってる。

【タイトル:World of Tanks ? Free Online Game】


たぶんアプリが、システムロケールを認識できてないと思われるが、解消方法は今のところ不明><。Azureでの運用はあきらめるか・・
逆に英語圏(US)から見た場合の日本のサイトということで使えるかも。



※サービスを「ログオン」-「アカウント」でいつもログインしている
  ユーザに設定したら、とりあえずOKとなった。(9/22追記)

2014年9月15日月曜日

MAC BootCampのwindows7でいつのまにか輝度変更できず。最高輝度になったままに。

MacBook (13-inch, Aluminum, Late 2008) BootCamp3.3のwindows7でいつのまにか輝度変更できず。
最高輝度になったままになってしまった。
F1,F2キーで輝度のバーはスライダーするものの画面は変わらず、BOOTCAMPのパネルの輝度調整でも同じで変化せず。
NVRAM/PRAM をリセット,SMCのリセットしてもだめ。
また、最高輝度の状態で長時間動かしていると画面が白っぽく霧がかかったようになり最後は真っ白になってしまう。
(何回かディスプレイの蓋を閉めて、開けると元にもどる。)
ディスプレイドライバーを古いバージョンに戻してみたら輝度調整できるようになり、画面が白くなる現象もなくなった。

コントロールパネルのデバイスドライバーでディスプレイの「ドライバーを元に戻す」としたら、
一つ前に戻ると思ったら削除状態と同じになってしまった。
=>仕方がないので、以前NVIDIAからダウンロードしてバックアップをとっておいた、
280.26-notebook-win7-winvista-64bit-international-whql.exe
をインストールしていたら正しく動作した。

バージョンダウン前のドライバー(このバージョンだと輝度調整できず、最高輝度のまま)
331.82-notebook-win7-winvista-64bit-international-whql.exe

バージョンを落とした。(このバージョンだと輝度調整OK)
280.26-notebook-win7-winvista-64bit-international-whql.exe