■ はじめに
http://blogs.yahoo.co.jp/dk521123/36706243.htmlで、Tomcatを複数インスタンス起動できるように構築する手順を記したが CATALINA_HOME、CATALINA_BASE を理解した上で構築すると 無駄なファイルなく、構築できるので、メモしておく
補足
* Ubuntuの場合は、tomcatX-instance-create コマンドで簡単にできるらしい
■ 関連する環境変数
CATALINA_HOME
* Tomcat の実行に必要なファイル(bin/lib)のディレクトリ
CATALINA_BASE
* Tomcat のインスタンスのディレクトリ * 定義するCATALINA_BASEディレクトリ配下には、以下のディレクトリが必要 ~~~~~~ + conf + temp + webapps + work + logs ~~~~~~
■ 構築環境
* OS : CentOS7 * Java : JDK1.8 * Tomcat : Tomcat 8.5.11
ディレクトリ構成
/usr + local + tomcat <= CATALINA_HOME + bin + lib + instance1 <= CATALINA_BASE 1 + conf + temp + webapps + work + logs + instance2 <= CATALINA_BASE 2 + conf + temp + webapps + work + logs
使用ポート
`インスタンス | `意味 | `使用ポート | `備考 |
instance1 | シャットダウンポート | 18005 | |
instance1 | HTTPポート | 18080 | |
instance1 | AJPポート | 18009 | |
instance1 | リダイレクトポート | 18443 | |
instance2 | シャットダウンポート | 28005 | |
instance2 | HTTPポート | 28080 | |
instance2 | AJPポート | 28009 | |
instance2 | リダイレクトポート | 28443 |
■ 構築手順
前提条件
* JDKはインストールされているものとする
[1] ダウンロード/インストール
[1-1] 以下のサイトからTomcatをダウンロードする(今回は「apache-tomcat-8.5.11.tar.gz」)http://tomcat.apache.org/download-80.cgi
[1-2] 手順[1-1]を解凍し、インストールする tar -xzvf ~/apache-tomcat-8.5.11.tar.gz sudo mv ~/apache-tomcat-8.5.11 /usr/local/tomcat [1-3] (ひとまず)Tomcatを開始する ~~~~ sudo /usr/local/tomcat/bin/startup.sh ~~~~ 【出力結果】 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: / Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [1-4] 以下のコマンドでHTMLが表示されたらOK (GUIであれば、ブラウザで「http://localhost:8080」アクセスするでもOK) ~~~~ curl http://localhost:8080 # 問題なければ停止 sudo /usr/local/tomcat/bin/shutdown.sh ~~~~
[2] ディレクトリの配置と設定の変更
[2-1] 上記「 ディレクトリ構成」に合うようにディレクトリを配置する ~~~~ sudo mkdir /usr/local/tomcat/instance1 sudo mv /usr/local/tomcat/conf /usr/local/tomcat/instance1/conf sudo mv /usr/local/tomcat/temp /usr/local/tomcat/instance1/temp sudo mv /usr/local/tomcat/webapps /usr/local/tomcat/instance1/webapps sudo mv /usr/local/tomcat/work /usr/local/tomcat/instance1/work sudo mv /usr/local/tomcat/logs /usr/local/tomcat/instance1/logs sudo cp -R /usr/local/tomcat/instance1 /usr/local/tomcat/instance2 ~~~~ [2-2] server.xml を修正 # sudo vi /usr/local/tomcat/instance1/conf/server.xml # # ※ 以下は「instance1」の手順。(i) シャットダウンポート
【変更前】 <Server port="8005" shutdown="SHUTDOWN"> 【変更後】 <Server port="18005" shutdown="SHUTDOWN">(ii) HTTPポート
【変更前】 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 【変更後】 <Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="18443" />(iii) シャットダウンポート
【変更前】 <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 【変更後】 <!-- Define an AJP 1.3 Connector on port 18009 --> <Connector port="18009" protocol="AJP/1.3" redirectPort="18443" /> [2-3] 「instance1」の[2-2]のポート変更を、「instance2」用に上記「使用ポート」に合うように修正する
[3] Tomcat用のユーザ作成
ユーザ作成については、以下の関連記事を参照のことhttps://blogs.yahoo.co.jp/dk521123/35141953.html
[3-1] Tomcat を動かすための専用ユーザ tomcat を追加 ~~~~ # ユーザ作成(ログインをしないユーザは「/sbin/nologin」がわりあてられる) sudo useradd -s /sbin/nologin tomcat # 所有者変更 sudo chown -R tomcat:tomcat /usr/local/tomcat ~~~~
[4] サービス作成および自動起動登録
systemdを使って、サービス作成する(systemdについては、以下の関連記事を参照のこと。)https://blogs.yahoo.co.jp/dk521123/37022877.html
[4-1] 以下のコマンドで、【tomcat_instance1.service】の内容を保存し、権限付与する ~~~~ sudo vi /etc/systemd/system/tomcat_instance1.service sudo chmod 755 /etc/systemd/system/tomcat_instance1.service ~~~~ ~【tomcat_instance1.service】~~~ [Unit] Description=Apache Tomcat 8 After=network.target [Service] # !!ポイント!! 必ずダブルクォーテーションマーク「"」で囲む Environment="CATALINA_HOME=/usr/local/tomcat" Environment="CATALINA_BASE=/usr/local/tomcat/instance1" User=tomcat Group=tomcat Type=oneshot PIDFile=/usr/local/tomcat/tomcat.pid RemainAfterExit=yes ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh ExecReStart=/usr/local/tomcat/bin/shutdown.sh;/usr/local/tomcat/bin/startup.sh [Install] WantedBy=multi-user.target ~~~~~~~~~~~~ [4-2] 以下のコマンドで、自動起動登録 ~~~~~~~~~~~~ systemctl enable tomcat_instance1 # 確認(「enabled」が表示されたらOK) systemctl is-enabled tomcat_instance1 ~~~~~~~~~~~~ [4-3] 以下のコマンドで、開始・停止できるか確認する ~~~~~~~~~~~~ # 開始 systemctl start tomcat_instance1 # 停止 systemctl stop tomcat_instance1 # サービスの確認 sudo systemctl list-unit-files --type=service | grep tomcat ~~~~~~~~~~~~ [4-4] [4-1]~[4-3]の手順の「instance1」を「instance2」に置き換えて繰り返す。