Image
Top
Navigation

チュートリアル03 : OrientDBをサービスとして起動する(windows)

チュートリアル02 : Orient studioで遊ぶ(windows))からの続きです。

チュートリアル01 : OrientDBをinstallする(windows)で、windowsでとりあえずOrientDBを起動させる方法を紹介しました。

インストールしたディレクトリィ配下に’bin’ディレクトリの’server.bat’をダブルクリックすればOKということです。

windows directory

終了の方法

終了は、’bin’ディレクトリの’shutdown.bat’をダブルクリックすればOKです。

windows directory

終了すると、起動時に開いたウィンドウは自動で閉じられます。

また、起動時に開いたウィンドウを閉じても正常に終了します。

ログを確認する

正常に起動したり、終了したり出来ているかとか、サーバーに異常がないかは、ログファイルで確認できます。

ログは、インストールしたディレクトリィ配下の’log’ディレクトリに出力されます。

windows directory

windows directory

正常に起動された場合のログは以下の通りです。


2014-09-09 20:22:34:021 INFO Loading configuration from: C:/orientdb/config/orientdb-server-config.xml... [OServerConfigurationLoaderXml]
2014-09-09 20:22:34:167 INFO OrientDB Server v1.7.8 (build UNKNOWN@r${buildNumber}; 2014-08-13 15:56:07+0200) is starting up... [OServer]
2014-09-09 20:22:34:172 INFO Databases directory: C:\orientdb\databases [OServer]
2014-09-09 20:22:34:197 INFO Listening binary connections on 0.0.0.0:2424 (protocol v.21, socket=default) [OServerNetworkListener]
2014-09-09 20:22:34:199 INFO Listening http connections on 0.0.0.0:2480 (protocol v.10, socket=default) [OServerNetworkListener]
2014-09-09 20:22:34:208 INFO Installing dynamic plugin 'studio-1.7.8.zip'... [OServerPluginManager]
2014-09-09 20:22:34:250 INFO Installing GREMLIN language v.2.5.0 - graph.pool.max=50 [OGraphServerHandler]
2014-09-09 20:22:34:254 INFO Installing Script interpreter. WARN: authenticated clients can execute any kind of code into the server by using the following allowed languages:  [OServerSideScriptInterpreter]
2014-09-09 20:22:34:254 INFO OrientDB Server v1.7.8 is active. [OServer]

最後の


2014-09-09 20:22:34:254 INFO OrientDB Server v1.7.8 is active. [OServer]

で確認出来ます。

正常に終了した場合のログは以下の通りです。


2014-09-09 20:28:15:205 INFO Received shutdown command from the remote client /192.168.2.30:64613 [ONetworkProtocolBinary]
2014-09-09 20:28:15:205 INFO Remote client /192.168.2.30:64613 authenticated. Starting shutdown of server... [ONetworkProtocolBinary]
2014-09-09 20:28:15:207 INFO OrientDB Server is shutting down... [OServer]
2014-09-09 20:28:15:207 INFO Shutting down listeners: [OServer]
2014-09-09 20:28:15:208 INFO - ONetworkProtocolBinary /0.0.0.0:2424: [OServer]
2014-09-09 20:28:15:208 INFO - ONetworkProtocolHttpDb /0.0.0.0:2480: [OServer]
2014-09-09 20:28:15:209 INFO Shutting down protocols [OServer]
2014-09-09 20:28:15:209 INFO Shutting down plugins: [OServerPluginManager]
2014-09-09 20:28:15:210 INFO - studio [OServerPluginManager]
2014-09-09 20:28:15:210 INFO - automaticBackup [OServerPluginManager]
2014-09-09 20:28:15:211 INFO - script-interpreter [OServerPluginManager]
2014-09-09 20:28:15:211 INFO - jmx [OServerPluginManager]
2014-09-09 20:28:15:237 INFO - graph [OServerPluginManager]
2014-09-09 20:28:15:237 INFO Shutting down databases: [OServer]
2014-09-09 20:28:15:239 INFO OrientDB Engine shutdown complete [Orient]
2014-09-09 20:28:15:239 INFO OrientDB Server shutdown complete [OServer]

最後の


2014-09-09 20:28:15:237 INFO Shutting down databases: [OServer]
2014-09-09 20:28:15:239 INFO OrientDB Engine shutdown complete [Orient]
2014-09-09 20:28:15:239 INFO OrientDB Server shutdown complete [OServer]

で確認出来ます。

正常に終了した場合は、拡張子が’.lck’であるプロセスのロックファイルが消えていますね。

Windowsサービスとして起動・終了する

試している間はこれでも良いのですが、運用しようとすると、こうはいきません。
やはりwindowsサービスとして起動・終了できるようにしないといけないですな。

今回はそれにトライしてみましょう。

Apache commons daemon の取得

下記のURLより、commons-daemon-1.0.14-bin-windows.zipをダウンロードしてください。

http://archive.apache.org/dist/commons/daemon/binaries/windows/

※Apache commons daemonの最新バージョンは1.0.15なのですが、バグがあるようなので1.0.14を使用します。

ダウンロードしたファイルをwindows上のどこかのディレクトリィで解凍して下さい。

内容は以下の通りです。

    \---amd64
        |
        \---prunsrv.exe <======64bitの場合はこれを利用します。
    |
    \---ia64
        |
        \---prunsrv.exe
    |
    \---LICENCE.txt
    |
    \---NOTICE.txt
    |
    \---prunmgr.exe <======いずれの場合でもこれを利用します。
    |
    \---prunsrv.exe <======32bitの場合はこれを利用します。
    |
    \---RELEASE-NOTES.txt

「prunmgr.exe」は、Windowsサービスを監視したろ設定したりするGUIアプリです。「prunsrv.exe」は、アプリケーションをサービスとして動作させるためのアプリケーションです。

  • amd64 : x86-64 マシン用の「prunsrv.exe」があります。32bitマシン出ない限りはこちらを使用します。
  • ia64 : Itanium 64 マシン用の「prunsrv.exe」です。こちらは使いません。

 必要なファイルをコピーしてrenameする

  • OrientDBをインストールしたディレクトリィ配下に、(binやlogディレクトリィと横並びで)serviceというディレクトリィを作成します。
  • そこに「prunmgr.exe」と「prunsrv.exe」をコピーします。
  • serviceディレクトリィにコピーした「prunsrv.exe」を「OrientDB.exe」にrenameします。
  • serviceディレクトリィにコピーした「prunmgr.exe」を「OrientDBw.exe」にrenameします。
  • installService.batファイルをserviceディレクトリィに以下の内容で作成します。
:: OrientDB Windows Service Installation
rem @echo off
rem Remove surrounding quotes from the first parameter
set str=%~1
rem Check JVM DLL location parameter
if "%str%" == "" goto missingJVM
set JVM_DLL=%str%
rem Remove surrounding quotes from the second parameter
set str=%~2
rem Check OrientDB Home location parameter
if "%str%" == "" goto missingOrientDBHome
set ORIENTDB_HOME=%str%

pause

rem Install service
OrientDB.exe //IS//OrientDB ^
--DisplayName="OrientDB" ^
--Description="OrientDB ver1.7.8" ^
--StartClass="com.orientechnologies.orient.server.OServerMain" ^
--StopClass="com.orientechnologies.orient.server.OServerShutdownMain" ^
--Classpath=%ORIENTDB_HOME%\lib\* ^
--JvmOptions "-XX:+UseParallelGC;-XX:+AggressiveOpts;-XX:CompileThreshold=200;-Djava.util.logging.config.file="%ORIENTDB_HOME%\config\orientdb-server-log.properties";-Dorientdb.config.file="%ORIENTDB_HOME%\config\orientdb-server-config.xml";-Dorientdb.www.path="%ORIENTDB_HOME%\www";-Dlog.console.level=info;-Dlog.file.level=fine;-Dorientdb.build.number=@BUILD@;-DORIENTDB_HOME=%ORIENTDB_HOME%" ^
--StartMode=jvm ^
--StartPath="%ORIENTDB_HOME%\bin" ^
--StopMode=jvm ^
--StopPath="%ORIENTDB_HOME%\bin" ^
--Jvm="%JVM_DLL%" ^
--LogPath="%ORIENTDB_HOME%\log" ^
--Startup=auto


EXIT /B

:missingJVM
echo Insert the JVM DLL location
goto printUsage

:missingOrientDBHome
echo Insert the OrientDB Home
goto printUsage

:printUsage
echo usage:
echo     installService JVM_DLL_location OrientDB_Home
EXIT /B
  • jvm.ddlがどこにあるかを特定します。通常は、%JAVA_HOME%\jre\bin\serverの配下にあります。

  • javaが「C:\Program Files\Java\jdk1.6.0_31」にインストールされていて、OrientDBが「c:\orientdb」にインストールされているとします。

  • 以下のコマンドをコマンドプロンプトから実行します。
installService.bat "C:\Program Files\Java\jdk1.6.0_31\jre\bin\server\jvm.dll" "c:\orientdb"

windows command

サービスから削除する場合は、例えばuninstall.batファイルをserviceディレクトリィに以下の内容で作成して実行します。

OrientDB.exe //DS//OrientDB
pause

サービスとしての登録結果を確認する。

serviceディレクトリィにある「OrientDBw.exe」をクリックして下さい。

windows service

こちらからサービスの起動・停止や、自動起動にしたり、手動起動にしたり、各種起動パラメータを変更できます。

windowsのコントロールパネルから、「管理ツール」>「サービス」でも同じことができます。

サービスとしての起動・終了ログを確認する。

logディレクトリィにcommons-daemon.YYYY-MM-DD.logの形式でログが出力されています。

起動時はこちら。


[2014-09-10 14:53:38] [info]  [ 6500] Commons Daemon procrun (1.0.14.0 64-bit) started
[2014-09-10 14:53:38] [info]  [ 6500] Service OrientDB name OrientDB
[2014-09-10 14:53:38] [info]  [ 6500] Service 'OrientDB' installed
[2014-09-10 14:53:38] [info]  [ 6500] Commons Daemon procrun finished
[2014-09-10 14:53:49] [info]  [ 5772] Commons Daemon procrun (1.0.14.0 64-bit) started
[2014-09-10 14:53:49] [info]  [ 5772] Running 'OrientDB' Service...
[2014-09-10 14:53:49] [info]  [ 4288] Starting service...
[2014-09-10 14:53:50] [info]  [ 4288] Service started in 1244 ms.

終了時はこちら。


[2014-09-10 14:59:10] [info]  [ 5676] Stopping service...
[2014-09-10 14:59:10] [error] [ 7332] Failed to set service status
[2014-09-10 14:59:10] [error] [ 7332] ハンドルが無効です。

あれ、変なエラーメッセージが出ていますね。これは今度調べます。