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\LocalService 、NT 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 | jvm、Java、または exe のいずれか。モードは次のとおりです。
|
|
--StartImage | 実行される実行可能ファイル。exe モードにのみ適用されます。 | |
--StartPath | 起動イメージ実行可能ファイルの作業パス。 | |
--StartClass | Main | 起動メソッドを含むクラス。jvm および Java モードに適用されます。(exe モードでは使用されません。) |
--StartMethod | main | mainと異なる場合のメソッド名 |
++StartParams | StartImageまたはStartClassに渡されるパラメータのリスト。パラメータは # または ; 文字で区切られます。 | |
--StopMode | jvm、Java、または 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 | ロギングレベルを定義します。Error、Info、Warn、または 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