概要
知っている人からすると「何を当たり前のことを」と思うかもしれませんが、結構詰まって困ったので備忘録代わりに残しておきます。
systemdを使用してTomcat起動・停止を行う場合の環境変数「CATALINA_HOME」設定方法・確認方法について記載します。
環境変数の設定
tomcatを起動するためのサービスを設定する。
ポイントはEnvironmentFileで、別ファイルに設定した環境変数を読み込むようにしている。
(下記ファイル内に環境変数を直接定義しても読み込まれないらしい)
[Unit]
Description=Apache Tomcat 9
After=network.target
[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/tomcat.pid
RemainAfterExit=yes
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
ExecReStart=/opt/tomcat/bin/shutdown.sh;/opt/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EnvironmentFileで読み込まれる設定ファイルは下記であるため、CATALINA_HOMEを設定する。
CATALINA_HOME=/opt/tomcat
余談
CATALINA_HOME以外の環境変数は下記のように
$CATALINA_HOME/bin/setenv.shで定義することが推奨されている。
最初は存在しないため、新規作成する必要がある。
CATALINA_OUT=/var/log/tomcat/catalina.out
UMASK="0007"
CATALINA_OPTS="$CATALINA_OPTS -server -XX:PermSize=256M -XX:MaxPermSize=256M -Xms512M -Xmx2048M"
環境変数の確認方法
tomcatを起動し
systemctl start tomcat
ステータスを確認する
systemctl status tomcat
すると下記のような結果が表示される。最終行に-Dcatalina.home=<設定した値>と表示されていればOK。ちなみにsetenv.shで設定した値もここで確認可能。
● tomcat.service - Apache Tomcat 9
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (exited) since Mon 2022-08-22 18:27:12 JST; 8s ago
Process: 33807 ExecStop=/opt/tomcat/bin/shutdown.sh (code=exited, status=0/SUCCESS)
Process: 33843 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 33843 (code=exited, status=0/SUCCESS)
Tasks: 27 (limit: 23182)
Memory: 105.3M
CGroup: /system.slice/tomcat.service
mq33856 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties (中略) -Dcatalina.home=/opt/tomcat
感想
CATALINA_HOMEの設定方法については豊富に記事があったのですが確認方法については当たり前過ぎたのかあまり無かったように見受けられたので、今回書きました。
普通に「CATALINA_HOME」で出力されると思っていたからDcatalina.homeを見るべきだなんて思わなかったです‥。あとsystemctl statusで確認できることも知らず、ずっとcatalina.outとにらめっこしていました。恥ずかしい限りです。