◀ 6.

CATALINA_HOME の確認方法 (Linux / Mac)

▶

CATALINA_HOMEはTomcat本体、CATALINA_BASEは実行インスタンスの場所です。シェルの変数が空でも、Tomcat未導入・未起動とは限りません。調べたいプロセスと起動方法を先に確認します。

Tomcat本体とインスタンス固有設定、setenvの優先順

環境変数・起動設定・稼働中の値を分ける

観測分かること・次の確認
echoの結果が空今のシェルの値が空というだけ。標準スクリプトの自動推定やサービス側の設定は別にある
version.shが成功その実行条件での本体/JVMの情報。別途稼働中のプロセスを調べたことにはならない
複数のcatalina.baseがある各インスタンスの設定・ログ・ポートを分けて確認。同じHOMEでも同じ運用単位とは限らない

setenv.shを置くときの注意

標準のシェル起動では、読み取れるBASE/bin/setenv.shが優先され、なければHOME/bin/setenv.shを使います。BASE/binも設定の置き場になる点に注意してください。HOME/BASE自身はsetenvを探す前に設定します。既存ファイルは上書きせず内容と権限を確認し、確認のために未知のsetenvをsourceしないでください。

下の複数インスタンス例は起動操作です。事前に各BASEへ必要な設定を用意し、衝突しないポートや保存先を決めます。HOMEだけ指定して、空のBASEで起動できるとは限りません。サービスや埋め込みTomcatでは同じスクリプト規則を前提にしません。

公式のTomcat実行設定を対象バージョンで確認してください。Javaの照合はJVM確認の記事、Macの切替はMacのJava切替へ進めます。

この記事の要点
  • CATALINA_HOME はTomcat のインストールディレクトリを指す環境変数
  • Linux / Mac: echo $CATALINA_HOME
  • Windows: echo %CATALINA_HOME%
  • which catalina.sh / which catalina でも実行ファイルから推定可能
  • Tomcat 起動スクリプト (catalina.sh) は CATALINA_HOME 未設定でも自動推定する

 

CATALINA_HOME とは

CATALINA_HOME はTomcat のインストールディレクトリを指す環境変数です。bin/, conf/, lib/, webapps/, logs/ 等のサブフォルダを含む親フォルダ。

類似の CATALINA_BASE は個別インスタンスの実行ディレクトリを指します(複数の Tomcat インスタンスを 1 つのバイナリで動かす場合に区別)。通常は CATALINA_HOME == CATALINA_BASE。

Linux / Mac での確認

① 環境変数として確認

$ echo $CATALINA_HOME
/opt/tomcat

# 未設定の場合は空行
# または bashrc / zshrc に書いてあるかチェック
$ grep CATALINA_HOME ~/.bashrc ~/.zshrc ~/.profile

② which コマンドで実行ファイルから推定

PATH上にない場合は見つかりません。見つかったパスも別インストールやリンク先の可能性があり、稼働中のTomcatと同じとは限りません。

$ which catalina.sh
/opt/tomcat/bin/catalina.sh
# → CATALINA_HOME は /opt/tomcat

$ which startup.sh
/opt/tomcat/bin/startup.sh

③ 起動中の Tomcat プロセスから確認

以下は出力例です。対象のPIDを特定し、別インスタンスやgrep自身を除いて照合します。全引数には秘密値が含まれ得るため、そのまま公開しないでください。

$ ps aux | grep tomcat
tomcat   1234  ... -Dcatalina.home=/opt/tomcat -Dcatalina.base=/opt/tomcat ...

# プロセス起動時の引数 -Dcatalina.home を見る

④ Tomcat の version コマンドで確認

次の旧コメント「動けば正しい」は対象の稼働プロセスまで保証しません。確認済みのHOMEを二重引用符で囲み、"$CATALINA_HOME/bin/version.sh"とします。これはその設定で別プロセスを実行する確認で、旧出力の9.0.71/Java 11が現在も稼働中だという証拠ではありません。

$ $CATALINA_HOME/bin/version.sh
Server version: Apache Tomcat/9.0.71
Server built:   Jan 31 2023 15:24:13 UTC
Server number:  9.0.71.0
OS Name:        Linux
OS Version:     5.15.0-25-generic
Architecture:   amd64
JVM Version:    11.0.16+8-Ubuntu
JVM Vendor:     Ubuntu

# version.sh が動けば CATALINA_HOME は正しい

Windows での確認

コマンドプロンプト

> echo %CATALINA_HOME%
C:\apache-tomcat-9.0.71

> where catalina.bat
C:\apache-tomcat-9.0.71\bin\catalina.bat

PowerShell

PS> $env:CATALINA_HOME
C:\apache-tomcat-9.0.71

PS> [System.Environment]::GetEnvironmentVariable("CATALINA_HOME","Machine")
PS> [System.Environment]::GetEnvironmentVariable("CATALINA_HOME","User")
# ユーザー / システムレベルで個別確認

システムのプロパティから GUI で確認

  1. 「PC」を右クリック → プロパティ
  2. システムの詳細設定 → 環境変数
  3. システム環境変数 or ユーザー環境変数のリストから CATALINA_HOME を探す

CATALINA_HOME の設定方法

Linux (~/.bashrc または /etc/profile)

以下は旧シェル設定例で、サービスが必ず読む設定ではありません。通常は自分の設定を編集し、システム全体の/etc/profileを安易に変えないでください。空白を含むパスではexport PATH="$CATALINA_HOME/bin:$PATH"のように引用します。

# .bashrc に追加
export CATALINA_HOME=/opt/tomcat
export PATH=$CATALINA_HOME/bin:$PATH

# 再読み込み
$ source ~/.bashrc

# 確認
$ echo $CATALINA_HOME

Mac (~/.zshrc または ~/.bash_profile)

下の/usr/local/...は旧環境の例で、すべてのMac/Homebrewの配置を表しません。実際の導入先とリンク先を確認してから設定します。ファイルの選択は使用シェルと起動方式によって異なります。

# Homebrew でインストールした場合
export CATALINA_HOME=/usr/local/opt/tomcat/libexec

# 手動インストールの場合
export CATALINA_HOME=/usr/local/apache-tomcat-9.0.71

Windows(システム環境変数)

  1. システムのプロパティ → 環境変数
  2. システム変数の新規を押す
  3. 変数名: CATALINA_HOME
  4. 変数値: C:\apache-tomcat-9.0.71
  5. OK
  6. PATH 変数に %CATALINA_HOME%\bin を追加

CATALINA_HOME vs CATALINA_BASE

変数役割含むフォルダ
CATALINA_HOMETomcat バイナリの場所bin/ lib/
CATALINA_BASEインスタンス固有の設定の場所conf/ logs/ webapps/ work/ temp/

通常は両方同じパスでよいですが、同じ Tomcat バイナリで複数インスタンスを動かす場合に分けます:

# 共通バイナリ
export CATALINA_HOME=/opt/tomcat

# インスタンス 1
CATALINA_BASE=/opt/tomcat-instance1 $CATALINA_HOME/bin/startup.sh

# インスタンス 2 (別のポート設定で)
CATALINA_BASE=/opt/tomcat-instance2 $CATALINA_HOME/bin/startup.sh

CATALINA_HOME 未設定でも動く?

Tomcat の起動スクリプト (catalina.sh / catalina.bat) は、環境変数が未設定でもスクリプト自身の位置から自動推定します。ただし絶対パスだけで起動成功が保証されるわけではありません。Java・権限・インスタンス設定等も必要です。下は旧起動例で、確認だけの目的で実行すると新たにサーバーを起動してしまいます:

# CATALINA_HOME 未設定でも OK
$ /opt/tomcat/bin/startup.sh

外部ツールやサービスは、その起動構成が要求するHOME/BASEを確認します。ターミナルの変数を追加するだけで反映されるとは限らず、稼働中の別インスタンスを切り替えないようにしてください。

関連記事

子ページ

子ページはありません

同階層のページ
  1. tomcatインストール(CentOS)
  2. WARファイルのAutoDeploy設定
  3. tomcatの起動/停止(Linux, Mac)
  4. JRE(JVM)のJavaのバージョン確認方法
  5. エラー一覧
  6. CATALINA_HOMEの確認方法(Linux, Mac)
  7. 管理画面の開き方
  8. tomcatの起動確認方法
  9. tomcatの起動/停止ログとcatalina.log/catalina.outの違い
  10. CentOSにおけるポート開放方法
  11. Javaのバージョン変更方法(Mac編)