macOS VenturaでTomcat 9を動かす方法

S 20230310 163103

macOS Venturaで「Tomcat 9」を動かす方法を説明します。

Tomcatは現在、「Tomcat 11(アルファ版)」まで出ているようですが、手元の環境で動かしたいソフトウェアを動かすのに必要十分なバージョンということでとりあえず「Tomcat 9」を選択しました。

Javaの準備

JavaはOracle Java 8を使用します(こちらの手順に従いインストールします)。

JAVA_HOMEとPATHを適切に設定し、javaが正しく実行できるようにします。

zshを使用している場合、.zshrcに以下を追加します。

export JAVA_HOME=$(/usr/libexec/java_home -v1.8.0_341)
export PATH="$JAVA_HOME/bin:$PATH"

macOS VenturaでTomcat 9を動かす

Tomcatの公式サイトからapache-tomcat-9.x.x.tar.gzをダウンロードし、/opt/homeに展開します。

binディレクトリの中に存在するスクリプトで操作確認します。

sudo ./startup.sh

ブラウザで http://localhost:8080 にアクセスできれば成功です。以下のコマンド実行して停止しておきましょう。

./shutdown.sh

Tomcat 9の自動起動設定

Tomcat 9を自動起動したい場合、まずbinディレクトリの下にtomcat-launchd.shを作成します。chmod 755で実行可能にしておきましょう。JAVA_HOME等必要な環境変数を設定しておく必要があります。

#!/bin/sh
#
# Wrapper for running tomcat under launchd
# Required because launchd needs a non-daemonizing process

function shutdown()
{
        $CATALINA_HOME/bin/shutdown.sh
        /bin/rm $CATALINA_PID
}

function wait_for_death()
{
        while /bin/kill -0 $1 2> /dev/null ; do
                sleep 2
        done
}
export LANG=ja_JP.UTF-8
export GITBUCKET_HOME=/opt/home/gitbucket
export JAVA_HOME=$(/usr/libexec/java_home -v1.8.0_341)
export CATALINA_HOME=/opt/home/tomcat
export CATALINA_PID=$CATALINA_HOME/logs/tomcat.pid
export JENKINS_HOME=/opt/home/jenkins
$CATALINA_HOME/bin/startup.sh
trap shutdown QUIT ABRT KILL ALRM TERM TSTP
sleep 2
wait_for_death `cat $CATALINA_PID`

/Library/LaunchDaemons/org.apache.tomcat.plistを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>org.apache.tomcat</string>
        <key>Disabled</key>
        <false/>
        <key>OnDemand</key>
        <false/>
        <key>RunAtLoad</key>
        <true/>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/home/tomcat/bin/tomcat-launchd.sh</string>
        </array>
        <key>EnvironmentVariables</key>
        <dict>
                <key>CATALINA_HOME</key>
                <string>/opt/home/tomcat</string>
                <key>JAVA_OPTS</key>
                <string>-Djava.awt.headless=true</string>
        </dict>
        <key>StandardErrorPath</key>
        <string>/opt/home/tomcat/logs/tomcat-launchd.stderr</string>
        <key>StandardOutPath</key>
        <string>/opt/home/tomcat/logs/tomcat-launchd.stdout</string>
        <key>UserName</key>
        <string>sora</string>
</dict>
</plist>

自動起動できるようにします。

sudo launchctl load -w /Library/LaunchDaemons/org.apache.tomcat.plist

これで再起動してもTomcatが自動的に起動するようになるはずです。