Windowsサービス設定方法

目次

Tomcatモニターアプリケーション

Tomcat11w は、Tomcatサービスを監視および設定するためのGUIアプリケーションです。

コマンドライン指示子

各コマンドライン指示子は //XX[//ServiceName] の形式です。

//ServiceName コンポーネントが省略された場合、サービス名はファイル名から 'w' サフィックスを除いたものとみなされます。したがって、デフォルトのサービス名は Tomcat11 です。

利用可能なコマンドライン指示子:

//ES サービス設定の編集 これはデフォルトの操作です。オプションが指定されていない場合に呼び出されます。GUIアプリケーションを起動し、サービス設定の変更、開始、停止を可能にします。
//MS サービスを監視 GUIアプリケーションを起動し、システムトレイに最小化します。
//MR サービスを監視 & 実行 GUIアプリケーションを起動し、システムトレイに最小化します。サービスが現在実行されていない場合は、サービスを開始します。
//MQ モニターを終了 そのサービスに対する実行中のモニターを停止します。

Tomcatサービスアプリケーション

Tomcat11 は、Tomcat 11をWindowsサービスとして実行するためのサービスアプリケーションです。

コマンドライン指示子

各コマンドライン指示子は //XX[//ServiceName] の形式です。

利用可能なコマンドライン指示子:

//TS サービスをコンソールアプリケーションとして実行 これはデフォルトの操作です。オプションが指定されていない場合に呼び出されます。ServiceNameは、exeサフィックスなしの実行可能ファイルの名前であり、Tomcat11を意味します。
//RS サービスを実行 ServiceManagerからのみ呼び出されます
//ES サービスを開始 (実行) する
//SS サービスを停止
//US サービスパラメータの更新
//IS サービスをインストール
//DS サービスを削除 実行中の場合はサービスを停止します
//PS サービス設定を出力 現在の設定を(再)作成するコマンドを出力します
//PP[//seconds] サービスを一時停止 デフォルトは60秒です
//VS バージョン バージョンを表示して終了
//? ヘルプ 使用法を表示して終了

コマンドラインパラメータ

各コマンドラインパラメータは -- でプレフィックスされます。コマンドラインパラメータが ++ でプレフィックスされ、そのパラメータが複数の値をサポートする場合、その値は既存のオプションに追加されます。以下の表では、複数の値をサポートするパラメータは ++ でプレフィックスされています。

コマンドラインパラメータと同じ名前で、ただし PR_ がプレフィックスされた環境変数が存在する場合、それが優先されます。例えば

set PR_CLASSPATH=xx.jar

を提供することと同じです

--Classpath=xx.jar

をコマンドラインパラメータとして指定することと同じです。

パラメータ名 デフォルト 説明
--Description サービス名の説明 (最大1024文字)
--DisplayName ServiceName サービスの表示名
--Install procrun.exe //RS//ServiceName インストールイメージ
--Startup manual サービス起動モードは auto または manual のいずれかです
++DependsOn このサービスが依存するサービスのリスト。依存サービスは # または ; 文字で区切られます
++Environment key=value の形式でサービスに提供される環境変数のリスト。これらは # または ; 文字で区切られます。値の中に # または ; 文字を使用する必要がある場合は、値全体をシングルクォートで囲む必要があります。
--User 実行可能ファイルの実行に使用されるユーザーアカウント。これはStartModeが java または exe の場合にのみ使用され、LogonAsService権限のないアカウントでアプリケーションをサービスとして実行できるようにします。
--Password --User パラメータで設定されたユーザーアカウントのパスワード
--ServiceUser サービスを実行するアカウントの名前を指定します。DomainName\UserName の形式でアカウント名を使用します。サービスプロセスはこのユーザーとしてログオンされます。アカウントが組み込みドメインに属している場合は、.\UserName を指定できます。Service Control Managerは標準名のローカライズされた形式を受け付けないため、それらを使用するには、必要に応じて NT Authority\LocalServiceNT Authority\NetworkService、または LocalSystem を指定する必要があることに注意してください。
--ServicePassword --ServiceUser パラメータで設定されたユーザーアカウントのパスワード
--LibraryPath JVM用のDLLを検索するために使用される検索パスに追加されるディレクトリ。このディレクトリは、PATH 環境変数の前と、SetDLLDirectory 関数のパラメータとして追加されます。
--JavaHome JAVA_HOME JAVA_HOME環境変数で定義されているものとは異なるJAVA_HOMEを設定します
--Jvm auto auto (つまり、WindowsレジストリからJVMを検索する) を使用するか、jvm.dll へのフルパスを指定します。ここで環境変数展開を使用できます。
++JvmOptions -Xrs JVMに渡される -D または -X 形式のオプションのリスト。オプションは # または ; 文字で区切られます。# または ; 文字を埋め込む必要がある場合は、シングルクォートで囲みます。(exe モードでは使用されません。)
++JvmOptions9 Java 9以降で実行する場合にJVMに渡される -D または -X 形式のオプションのリスト。オプションは # または ; 文字で区切られます。# または ; 文字を埋め込む必要がある場合は、シングルクォートで囲みます。(exe モードでは使用されません。)
--Classpath Javaクラスパスを設定します。(exe モードでは使用されません。)
--JvmMs 初期メモリプールサイズ (MiB単位)。(exe モードでは使用されません。)
--JvmMx 最大メモリプールサイズ (MiB単位)。(exe モードでは使用されません。)
--JvmSs スレッドスタックサイズ (KiB単位)。(exe モードでは使用されません。)
--StartMode jvmJava、または exe のいずれか。モードは次のとおりです。
  • jvm - Javaをインプロセスで起動します。jvm.dllに依存します。--Jvm を参照してください。
  • Java - exeと同じですが、デフォルトのJava実行可能ファイル、つまり %JAVA_HOME%\bin\java.exe を自動的に使用します。JAVA_HOMEが正しく設定されていることを確認するか、--JavaHomeを使用して正しい場所を指定してください。どちらも設定されていない場合、procrunはWindowsレジストリからデフォルトのJDK (JREではない) を見つけようとします。
  • exe - イメージを別プロセスとして実行します
--StartImage 実行される実行可能ファイル。exe モードにのみ適用されます。
--StartPath 起動イメージ実行可能ファイルの作業パス。
--StartClass Main 起動メソッドを含むクラス。jvm および Java モードに適用されます。(exe モードでは使用されません。)
--StartMethod main mainと異なる場合のメソッド名
++StartParams StartImageまたはStartClassに渡されるパラメータのリスト。パラメータは # または ; 文字で区切られます。
--StopMode jvmJava、または exe のいずれか。詳細については --StartMode を参照してください。
--StopImage サービス停止シグナル時に実行される実行可能ファイル。exe モードにのみ適用されます。
--StopPath 停止イメージ実行可能ファイルの作業パス。jvm モードには適用されません。
--StopClass Main サービス停止シグナル時に使用されるクラス。jvm および Java モードに適用されます。
--StopMethod main mainと異なる場合のメソッド名
--StopParams StopImageまたはStopClassに渡されるパラメータのリスト。パラメータは # または ; 文字で区切られます。
++StopTimeout タイムアウトなし procrunがサービスが正常に終了するのを待つタイムアウトを秒単位で定義します。
--LogPath %SystemRoot%\System32\LogFiles\Apache ロギングのパスを定義します。必要に応じてディレクトリを作成します。
--LogPrefix commons-daemon サービスログファイル名のプレフィックスを定義します。ログファイルはLogPathディレクトリに .YEAR-MONTH-DAY.log サフィックスで作成されます
--LogLevel Info ロギングレベルを定義します。ErrorInfoWarn、または Debug のいずれかです。(大文字・小文字を区別しません。)
--LogJniMessages 0 JVMのJNIデバッグメッセージをprocrunログファイルにキャプチャするには、ゼロ以外 (例: 1) に設定します。stdout/stderrリダイレクトが使用されている場合は不要です。jvmモードにのみ適用されます。
--StdOutput リダイレクトされたstdoutファイル名。auto と指定された場合、ファイルは LogPath 内に service-stdout.YEAR-MONTH-DAY.log という名前で作成されます。
--StdError リダイレクトされたstderrファイル名。auto と指定された場合、ファイルは LogPath 内に service-stderr.YEAR-MONTH-DAY.log という名前で作成されます。
--PidFile 実行中のプロセスIDを保存するためのファイル名を定義します。実際のファイルは LogPath ディレクトリ内に作成されます

サービスのインストール

サービスを手動でインストールする最も安全な方法は、提供されている service.bat スクリプトを使用することです。このスクリプトを実行するには管理者権限が必要です。必要に応じて、/user スイッチを使用して、サービスのインストールに使用するユーザーを指定できます。

注意: ユーザーアカウント制御 (UAC) が有効になっている場合、スクリプトによって 'Tomcat11.exe' が起動される際に、追加の権限が要求されます。
サービスインストーラに追加オプションを PR_* 環境変数として渡したい場合は、OSでグローバルに設定するか、昇格された権限でそれらをセットするプログラムを起動する必要があります (例: cmd.exe を右クリックして「管理者として実行」を選択。Windows 8 (またはそれ以降) または Windows Server 2012 (またはそれ以降) では、エクスプローラーから「ファイル」メニューバーをクリックして、現在のディレクトリで管理者権限のコマンドプロンプトを開くことができます)。詳細については、問題 56143 を参照してください。

Install the service named 'Tomcat11'
C:\> service.bat install

Windowsサービスに表示されるサービス名を指定できる2番目のオプションパラメータがあります。

Install the service named 'MyService'
C:\> service.bat install MyService

サービスをデフォルト以外の名前でインストールする場合、tomcat11.exe および tomcat11w.exe は選択したサービス名に合わせてリネームされることがあります。これを行うには、--rename オプションを使用します。

Install the service named 'MyService' with renaming
C:\> service.bat install MyService --rename

tomcat11.exeを使用する場合は、//IS パラメータを使用する必要があります。

Install the service named 'Tomcat11'
C:\> tomcat11 //IS//Tomcat11 --DisplayName="Apache Tomcat 11" ^
     --Install="C:\Program Files\Tomcat\bin\tomcat11.exe" --Jvm=auto ^
     --StartMode=jvm --StopMode=jvm ^
     --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^
     --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop

サービスの更新

サービスパラメータを更新するには、//US パラメータを使用する必要があります。

Update the service named 'Tomcat11'
C:\> tomcat11 //US//Tomcat11 --Description="Apache Tomcat Server - https://tomcat.dokyumento.jp/ " ^
     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar

サービスにオプション名を付けた場合、次のように指定する必要があります

Update the service named 'MyService'
C:\> tomcat11 //US//MyService --Description="Apache Tomcat Server - https://tomcat.dokyumento.jp/ " ^
     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar

サービスの削除

サービスを削除するには、//DS パラメータを使用する必要があります。
サービスが実行中の場合は、停止されてから削除されます。

Remove the service named 'Tomcat11'
C:\> tomcat11 //DS//Tomcat11

サービスにオプション名を付けた場合、次のように指定する必要があります

Remove the service named 'MyService'
C:\> tomcat11 //DS//MyService

サービスのデバッグ

サービスをコンソールモードで実行するには、//TS パラメータを使用する必要があります。サービスのシャットダウンは CTRL+C または CTRL+BREAK を押すことで開始できます。tomcat11.exe を testservice.exe にリネームした場合、testservice.exe を実行するだけで、このコマンドモードがデフォルトで実行されます。

Run the service named 'Tomcat11' in console mode
C:\> tomcat11 //TS//Tomcat11 [additional arguments]
Or simply execute:
C:\> tomcat11

複数インスタンス

Tomcatは複数インスタンスのインストールをサポートしています。単一のTomcatインストールで複数のインスタンスを異なるIP/ポートの組み合わせで実行することも、複数のTomcatバージョンをそれぞれ異なるIP/ポートで1つ以上のインスタンスとして実行することも可能です。

各インスタンスフォルダには以下の構造が必要です

  • conf
  • logs
  • temp
  • webapps
  • work

最低限、conf には CATALINA_HOME\conf\ からの以下のファイルのコピーが含まれている必要があります。コピーおよび編集されていないファイルは、デフォルトで CATALINA_HOME\conf から取得されます。つまり、CATALINA_BASE\conf のファイルは CATALINA_HOME\conf のデフォルト設定を上書きします。

  • server.xml
  • web.xml

インスタンスがリッスンする一意のIP/ポートを指定するために、CATALINA_BASE\conf\server.xml を編集する必要があります。<Connector port="8080" ... を含む行を見つけ、一意のIP/ポートの組み合わせを指定するために、address属性を追加するか、ポート番号を更新してください。

インスタンスをインストールするには、まず CATALINA_HOME 環境変数をTomcatインストールディレクトリの名前に設定します。次に、2番目の環境変数 CATALINA_BASE を作成し、これをインスタンスフォルダに指定します。その後、サービス名を指定して「service.bat install」コマンドを実行します。

set CATALINA_HOME=c:\tomcat_11
set CATALINA_BASE=c:\tomcat_11\instances\instance1
service.bat install instance1

サービス設定を変更するには、tomcat11w //ES//instance1 を実行します。

追加のインスタンスについては、追加のインスタンスフォルダを作成し、CATALINA_BASE 環境変数を更新し、再度「service.bat install」を実行します。

set CATALINA_BASE=c:\tomcat_11\instances\instance2
service.bat install instance2