Tomcat 设置
目录
简介
有多种方法可以在不同平台上设置和运行 Tomcat。这方面的主要文档是一个名为 RUNNING.txt 的文件。如果以下信息未能解答您的一些问题,我们建议您参考该文件。
Windows
在 Windows 上安装 Tomcat 可以通过 Windows 安装程序轻松完成。其界面和功能与其他基于向导的安装程序类似,只有几个值得注意的地方。
- 安装为服务:无论选择何种设置,Tomcat 都将作为 Windows 服务安装。在组件页面上勾选复选框会将服务设置为“自动”启动,以便在 Windows 启动时自动启动 Tomcat。为了实现最佳安全性,服务应以独立用户身份运行,并具有降低的权限(请参阅 Windows 服务管理工具及其文档)。
- Java 位置:安装程序将提供一个默认的 JRE 用于运行服务。安装程序使用注册表来确定 Java 17 或更高版本 JRE 的基本路径,包括作为完整 JDK 一部分安装的 JRE。安装程序首先会查找 JRE,如果未找到 JRE,才会查找 JDK。最后,如果未找到 JRE 或 JDK,安装程序将尝试使用
JAVA_HOME
环境变量。使用安装程序检测到的默认 JRE 不是强制性的。可以使用任何已安装的 Java 17 或更高版本的 JRE。 - 托盘图标:当 Tomcat 作为服务运行时,Tomcat 运行时不会出现任何托盘图标。请注意,如果在安装结束时选择运行 Tomcat,即使 Tomcat 是作为服务安装的,也会使用托盘图标。
- 默认值:安装程序使用的默认值可以通过使用
/C=<config file>
命令行参数来覆盖。配置文件使用name=value
格式,每对在一行上。可用的配置选项名称有- JavaHome
- TomcatPortShutdown
- TomcatPortHttp
- TomcatMenuEntriesEnable
- TomcatShortcutAllUsers
- TomcatServiceDefaultName
- TomcatServiceName
- TomcatServiceFileName
- TomcatServiceManagerFileName
- TomcatAdminEnable
- TomcatAdminUsername
- TomcatAdminPassword
- 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 默认使用服务器 VM 而不是客户端 VM,您可能还需要指定 -jvm server
。这在 OSX 上已有观察。
jsvc 还有其他有用的参数,例如 -user
,它使守护进程初始化完成后切换到另一个用户。这允许例如以非特权用户身份运行 Tomcat,同时仍能使用特权端口。请注意,如果您使用此选项并以 root 身份启动 Tomcat,则需要禁用阻止 Tomcat 在 root 身份下启动的 org.apache.catalina.security.SecurityListener
检查。
jsvc --help
将返回完整的 jsvc 使用信息。特别是,-debug
选项对于调试 jsvc 运行问题很有用。
文件 $CATALINA_HOME/bin/daemon.sh
可以用作模板,以便在启动时从 /etc/init.d
使用 jsvc 自动启动 Tomcat。
请注意,以这种方式运行 Tomcat 时,Commons-Daemon JAR 文件必须在您的运行时类路径中。Commons-Daemon JAR 文件位于 bootstrap.jar 清单的 Class-Path 条目中,但如果遇到 Commons-Daemon 类的 ClassNotFoundException 或 NoClassDefFoundError,请在启动 jsvc 时将 Commons-Daemon JAR 添加到 -cp 参数中。