Tomcat 設定

目錄

簡介

有許多方法可以在不同平台上設定 Tomcat 以執行。這方面的主要文件是一個名為 RUNNING.txt 的檔案。如果您以下資訊無法回答您的某些問題,我們建議您參閱該檔案。

Windows

使用 Windows 安裝程式可以在 Windows 上輕鬆安裝 Tomcat。其介面和功能類似於其他基於精靈的安裝程式,只有少數項目值得注意。

  • 作為服務安裝:無論選擇哪種設定,Tomcat 都會安裝為 Windows 服務。使用組件頁面上的核取方塊將服務設定為「自動」啟動,以便在 Windows 啟動時自動啟動 Tomcat。為了獲得最佳安全性,服務應以具有較少權限的獨立使用者身分執行(請參閱 Windows 服務管理工具及其文件)。
  • Java 位置:安裝程式會提供預設的 JRE 用於執行服務。安裝程式會使用登錄檔來判斷 Java 11 或更新版本的 JRE 的基本路徑,包含安裝為完整 JDK 一部分的 JRE。在 64 位元作業系統上執行時,安裝程式會先尋找 64 位元 JRE,如果找不到 64 位元 JRE,才會尋找 32 位元 JRE。如果在 64 位元作業系統上執行時找不到 JRE,安裝程式會尋找 64 位元 JDK。最後,如果找不到 JRE 或 JDK,安裝程式會嘗試使用 JAVA_HOME 環境變數。不一定要使用安裝程式偵測到的預設 JRE。任何已安裝的 Java 11 或更新版本的 JRE(32 位元或 64 位元)都可以使用。
  • 系統匣圖示:當 Tomcat 以服務身分執行時,Tomcat 執行時不會有任何系統匣圖示。請注意,在安裝結束時選擇執行 Tomcat 時,即使 Tomcat 已安裝為服務,仍會使用系統匣圖示。
  • 預設值:安裝程式使用的預設值可以用 /C=<組態檔> 命令列引數覆寫。組態檔使用 名稱=值 格式,每一對在個別行上。可用的組態選項名稱為
    • JavaHome
    • TomcatPortShutdown
    • TomcatPortHttp
    • TomcatMenuEntriesEnable
    • TomcatShortcutAllUsers
    • TomcatServiceDefaultName
    • TomcatServiceName
    • TomcatServiceFileName
    • TomcatServiceManagerFileName
    • TomcatAdminEnable
    • TomcatAdminUsername
    • TomcatAdminPassword
    • TomcatAdminRoles
    透過使用 /C=... 搭配 /S/D=,可以執行 Apache Tomcat 的完全組態無人值守安裝。
  • 請參閱 Windows 服務操作指南,取得如何將 Tomcat 管理為 Windows 服務的資訊。

安裝程式會建立捷徑,允許啟動和組態 Tomcat。請務必注意,Tomcat 管理網路應用程式只能在 Tomcat 執行時使用。

Unix 守護程式

Tomcat 可以使用 commons-daemon 專案的 jsvc 工具以守護程式身分執行。jsvc 的原始碼 tarball 包含在 Tomcat 二進位檔中,且需要編譯。建立 jsvc 需要 C ANSI 編譯器(例如 GCC)、GNU Autoconf 和 JDK。

在執行指令碼之前,應將 JAVA_HOME 環境變數設定為 JDK 的基本路徑。或者,在呼叫 ./configure 指令碼時,可以使用 --with-java 參數指定 JDK 的路徑,例如 ./configure --with-java=/usr/java

使用下列指令應該會產生已編譯的 jsvc 二進位檔,位於 $CATALINA_HOME/bin 資料夾中。這假設使用 GNU TAR,且 CATALINA_HOME 是指向 Tomcat 安裝基本路徑的環境變數。

請注意,您應該在 FreeBSD 系統上使用 GNU make (gmake),而不是原生 BSD make。

cd $CATALINA_HOME/bin
tar xvfz commons-daemon-native.tar.gz
cd commons-daemon-1.1.x-native-src/unix
./configure
make
cp jsvc ../..
cd ../..

然後可以使用下列指令以守護程式身分執行 Tomcat。

CATALINA_BASE=$CATALINA_HOME
cd $CATALINA_HOME
./bin/jsvc \
    -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \
    -outfile $CATALINA_BASE/logs/catalina.out \
    -errfile $CATALINA_BASE/logs/catalina.err \
    --add-opens=java.base/java.lang=ALL-UNNAMED \
    --add-opens=java.base/java.io=ALL-UNNAMED \
    --add-opens=java.base/java.util=ALL-UNNAMED \
    --add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
    --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
    -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
    org.apache.catalina.startup.Bootstrap

如果您預設的 JVM 使用伺服器 VM 而不是用戶端 VM,您可能也需要指定 -jvm server。這已在 OSX 上觀察到。

jsvc 有其他有用的參數,例如 -user,它會在守護程式初始化完成後切換到另一個使用者。例如,這允許以非特權使用者身分執行 Tomcat,同時仍然可以使用特權埠。請注意,如果您使用此選項並以 root 身分啟動 Tomcat,您需要停用 org.apache.catalina.security.SecurityListener 檢查,以防止 Tomcat 在以 root 身分執行時啟動。

jsvc --help 會傳回完整的 jsvc 使用資訊。特別是,-debug 選項可協助除錯執行 jsvc 的問題。

檔案 $CATALINA_HOME/bin/daemon.sh 可用作使用 jsvc 從 /etc/init.d 在開機時自動啟動 Tomcat 的範本。

請注意,Commons-Daemon JAR 檔案必須在您的執行時期類別路徑中才能以這種方式執行 Tomcat。Commons-Daemon JAR 檔案位於 bootstrap.jar 清單的類別路徑項目中,但如果您對 Commons-Daemon 類別取得 ClassNotFoundException 或 NoClassDefFoundError,請在啟動 jsvc 時將 Commons-Daemon JAR 加入 -cp 引數。