简介

有几种方法可以设置 Tomcat 在不同平台上运行。 这方面的主要文档是一个名为 RUNNING.txt 的文件。 如果下面的信息不能解答某些问题,我们建议参考该文件。

Windows

在 Windows 上安装 Tomcat 可使用 Windows 安装程序轻松完成。 它的界面和功能与其他基于向导的安装程序类似,只有少数项目值得关注。

  • 作为服务安装: 无论选择何种设置,Tomcat 都将作为 Windows 服务进行安装。使用组件页面上的复选框可将服务设置为 "自动 "启动,这样 Tomcat 就会在 Windows 启动时自动启动。为获得最佳安全性,该服务应以独立用户身份运行,并降低权限(请参阅 Windows 服务管理工具及其文档)。

  • Java 位置: 安装程序将提供用于运行服务的默认 JRE。安装程序使用注册表来确定 Java <min-java-version/> 或更高版本的 JRE 的基本路径,包括作为完整 JDK 的一部分安装的 JRE。安装程序将首先查找 JRE,如果找不到 JRE,则仅查找 JDK。最后,如果未找到 JRE 或 JDK,安装程序将尝试使用 JAVA_HOME 环境变量。使用安装程序检测到的默认 JRE 不是强制性的。可以使用任何已安装的 Java <min-java-version/> 或更高版本的 JRE。

  • 托盘图标: 当 Tomcat 作为服务运行时,Tomcat 运行时不会出现任何托盘图标。请注意,当选择在安装结束时运行 Tomcat 时,即使 Tomcat 是作为服务安装的,也会使用托盘图标。

  • 默认值: 使用 /C=<config file> 命令行参数可以覆盖安装程序使用的默认值。配置文件使用的格式是 name=value,每对选项各占一行。可用配置选项的名称如下

    1. JavaHome

    2. TomcatPortShutdown

    3. TomcatPortHttp

    4. TomcatMenuEntriesEnable

    5. TomcatShortcutAllUsers

    6. TomcatServiceDefaultName

    7. TomcatServiceName

    8. TomcatServiceFileName

    9. TomcatServiceManagerFileName

    10. TomcatAdminEnable

    11. TomcatAdminUsername

    12. TomcatAdminPassword

    13. TomcatAdminRoles 通过使用 /C=…​ 以及 /S/D=,可以对 Apache Tomcat 执行完全配置的无人值守安装。

  • 有关如何将 Tomcat 作为 Windows 服务进行管理的信息,请参阅 Windows 服务说明

安装程序将创建快捷方式,以便启动和配置 Tomcat。需要注意的是,Tomcat 管理 Web 应用程序只能在 Tomcat 运行时使用。

Unix 守护进程

Tomcat 可以使用 commons-daemon 项目中的 jsvc 工具作为守护进程运行。 jsvc 的源代码压缩包包含在 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 默认使用服务器虚拟机而非客户端虚拟机,则可能还需要指定 -jvm server。 在 OSX 上就发现过这种情况。

jsvc 还有其他有用的参数,例如 -user,它会在守护进程初始化完成后切换到另一个用户。 例如,这允许以非特权用户身份运行 Tomcat,同时仍能使用特权端口。 请注意,如果使用该选项并以根用户身份启动 Tomcat, 则需要禁用 org.apache.catalina.security.SecurityListener 检查, 该检查会阻止 Tomcat 以根用户身份运行。

jsvc --help 将返回完整的 jsvc 使用信息。 特别是,-debug 选项可用于调试运行 jsvc 时出现的问题。

文件 $CATALINA_HOME/bin/daemon.sh 可用作模板, 用于在启动时使用 jsvc 从 /etc/init.d 自动启动 Tomcat。

请注意,要以这种方式运行 Tomcat, 运行时 classpath 上必须有 Commons-Daemon JAR 文件。 Commons-Daemon JAR 文件位于 bootstrap.jar 清单的 Class-Path 条目中, 但如果遇到 Commons-Daemon 类的 ClassNotFoundException 或 NoClassDefFoundError 异常, 请在启动 jsvc 时将 Commons-Daemon JAR 添加到 -cp 参数中。