Tomcatのバイナリ1個で、複数のインスタンスをサービス登録してみました。
インスタンス別にCATALINA_BASE配下ディレクトリ(conf,logs,temp,webapps,work)を分けて、Tomcatが使うポート番号も変えてあげれば、バイナリは共通のまま複数インスタンス化することができます。
設定項目 |
デフォルト |
インスタンス1 |
インスタンス2 |
サービス名 |
Tomcat6 |
Tomcat6Instance1 |
Tomcat6Instance2 |
JAVA_HOME |
C:\Program Files\Java\jdk1.6.0_07 |
CATALINA_HOME |
C:\apache\tomcat-6.0.18 |
CATALINA_BASE |
C:\apache\tomcat-6.0.18 |
C:\apache\tomcat-instance1 |
C:\apache\tomcat-instance2 |
Server Componentの port番号 |
8005 |
18005 |
28005 |
HTTP Connectorの port番号 |
8080 |
18080 |
28080 |
AJP Connectorの port番号 |
8009 |
18009 |
28009 |
まずは以下の手順で各種ディレクトリと設定ファイルを準備。
- apache-tomcat-6.0.18.zipを入手し、C:\apache\tomcat-6.0.18に展開
- C:\apache\tomcat-instance1を作成し、C:\apache\tomcat-6.0.18からconf,logs,temp,webapps,workディレクトリをコピー
- C:\apache\tomcat-instance1\conf\server.xmlのポート番号を変更
- C:\apache\tomcat-instance2も同様に作成
デイレクトリと設定ファイルが準備できたら、service.batコマンドで登録。
C:\apache\tomcat-6.0.18\bin>set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_07"
C:\apache\tomcat-6.0.18\bin>set CATALINA_BASE=C:\apache\tomcat-instance1
C:\apache\tomcat-6.0.18\bin>service.bat install Tomcat6Instance1
Installing the service 'Tomcat6Instance1' ...
Using CATALINA_HOME: C:\apache\tomcat-6.0.18
Using CATALINA_BASE: C:\apache\tomcat-instance1
Using JAVA_HOME: "C:\Program Files\Java\jdk1.6.0_07"
Using JVM: auto
The service 'Tomcat6Instance1' has been installed.
CATALINA_BASE環境変数を変えて、2個めのインスタンスも同様に登録します。
C:\apache\tomcat-6.0.18\bin>set CATALINA_BASE=C:\apache\tomcat-instance2
C:\apache\tomcat-6.0.18\bin>service.bat install Tomcat6Instance2
Installing the service 'Tomcat6Instance2' ...
Using CATALINA_HOME: C:\apache\tomcat-6.0.18
Using CATALINA_BASE: C:\apache\tomcat-Instance2
Using JAVA_HOME: "C:\Program Files\Java\jdk1.6.0_07"
Using JVM: auto
The service 'Tomcat6Instance2' has been installed.
今回は簡単に済ませるためにservice.batコマンドを使いましたが、tomcat6w.exeを使うともっと細かいパラメータを指定して登録することができます。登録したサービスの設定変更をおこなうことも可能です。
詳しくはApache Tomcat 6.0 – Windows service HOW-TOをご覧ください。