| Works
CentOS 7でTomcatをマルチインスタンス
一つのサーバ上でTomcatを複数動かすというのを仕事でやったのでメモ。
これ自体は珍しくないけど、CentOSに含まれるものをそのまま利用するのはあまりやってなかった。
CentOS 7の標準レポジトリから"yum install"でTomcatをインストールした場合、systemdには"tomcat.service"と"tomcat@.service"というのが登録されます。
このうち、"@"がついているものがマルチインスタンス用のサービスです。
以下、インスタンス名は「INST1」とします。
まずは事前準備で環境情報ファイル"/etc/sysconfig/tomcat@INST1"を作成し、"CATALINA_BASE"を記述します。
※他にも必要に応じて追記する(例えば"JAVA_OPTS")。
CATALINA_BASE="/var/lib/tomcats/INST1"
"CATALINA_BASE"に指定するパスは、通常は"/var/lib/tomcats/<インスタンス名>"にするようです。"/var/lib/tomcats"まではデフォルトで作られているみたいですね("シングルインスタンスの場合に一般的に使われる"/var/lib/tomcat"と紛らわしいですが)。
続いて"CATALINA_BASE"と以下のディレクトリを作成します。
作成するディレクトリ | (参考)シングルインスタンスの場合の既定値 |
/var/lib/tomcats/INST1 | /usr/share/tomcat |
/var/lib/tomcats/INST1/conf | /etc/tomcat |
/var/lib/tomcats/INST1/logs | /var/log/tomcat |
/var/lib/tomcats/INST1/temp | /var/cache/tomcat/temp |
/var/lib/tomcats/INST1/webapps | /var/lib/tomcat/webapps |
/var/lib/tomcats/INST1/work | /var/cache/tomcat/work |
こちらも必要に応じてシンボリックリンクを利用する("logs"を"/var/log/tomcat"配下にする等)。
# chown -R :tomcat /var/lib/tomcats/INST1
ディレクトリを作ったら、"/etc/tomcat"の中にある各種設定ファイルを"/var/lib/tomcats/INST1/conf"にコピーして修正。特に、インスタンスごとに使用するするTCPポート番号を変更する。
設定については基本的に通常のTomcatと同じなので省略。
ここまでの準備がきたら、インスタンス名を付与したサービスをsystemdで有効にする。
Created symlink from /etc/systemd/system/multi-user.target.wants /tomcat@INST1.service to /usr/lib/systemd/system/tomcat@.service.
# systemctl start tomcat@INST1
これでTomcatが設定通り起動していれば完了。
あとはインスタンスごとにこれを繰り返す。
あまりディストリビューション標準のTomcatは使わない気もしますが、とりあえずこんな感じで。