There are several ways to set up Tomcat for running on different
platforms. The main documentation for this is a file called
RUNNING.txt
. We encourage you to refer to that
file if the information below does not answer some of your questions.
Installing Tomcat on Windows can be done easily using the Windows
installer. Its interface and functionality is similar to other wizard
based installers, with only a few items of interest.
Installation as a service
: Tomcat will be
installed as a Windows service no matter what setting is selected.
Using the checkbox on the component page sets the service as "auto"
startup, so that Tomcat is automatically started when Windows
starts. For optimal security, the service should be run as a
separate user, with reduced permissions (see the Windows Services
administration tool and its documentation).
Java location
: The installer will provide a default
JRE to use to run the service. The installer uses the registry to
determine the base path of a Java 11 or later JRE,
including the JRE installed as part of the full JDK. When running on
a 64-bit operating system, the installer will first look for a
64-bit JRE and only look for a 32-bit JRE if a 64-bit JRE is not
found. If a JRE cannot be found when running on a 64-bit operating
system, the installer will look for a 64-bit JDK. Finally, if a JRE
or JDK has not been found, the installer will try to use the
JAVA_HOME
environment variable. It is not mandatory to
use the default JRE detected by the installer. Any installed Java
11 or later JRE (32-bit or 64-bit) may be
used.
Tray icon
: When Tomcat is run as a service, there
will not be any tray icon present when Tomcat is running. Note that
when choosing to run Tomcat at the end of installation, the tray
icon will be used even if Tomcat was installed as a service.
Defaults
: The defaults used by the installer may be
overridden by use of the
/C=<config file>
command
line argument. The configuration file uses the format
name=value
with each pair on a separate line. The names
of the available configuration options are:
JavaHome
TomcatPortShutdown
TomcatPortHttp
TomcatMenuEntriesEnable
TomcatShortcutAllUsers
TomcatServiceDefaultName
TomcatServiceName
TomcatServiceFileName
TomcatServiceManagerFileName
TomcatAdminEnable
TomcatAdminUsername
TomcatAdminPassword
TomcatAdminRoles
By using
/C=...
along with
/S
and
/D=
it is possible to perform fully configured
unattended installs of Apache Tomcat.
Refer to the
Windows Service How-To
for information on how to manage Tomcat as a Windows service.
The installer will create shortcuts allowing starting and configuring
Tomcat. It is important to note that the Tomcat administration web
application can only be used when Tomcat is running.
Tomcat can be run as a daemon using the jsvc tool from the
commons-daemon project. Source tarballs for jsvc are included with the
Tomcat binaries, and need to be compiled. Building jsvc requires
a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.
Before running the script, the
JAVA_HOME
environment
variable should be set to the base path of the JDK. Alternately, when
calling the
./configure
script, the path of the JDK may
be specified using the
--with-java
parameter, such as
./configure --with-java=/usr/java
.
Using the following commands should result in a compiled jsvc binary,
located in the
$CATALINA_HOME/bin
folder. This assumes
that GNU TAR is used, and that
CATALINA_HOME
is an
environment variable pointing to the base path of the Tomcat
installation.
Please note that you should use the GNU make (gmake) instead of
the native BSD make on FreeBSD systems.
cd $CATALINA_HOME/bin
tar xvfz commons-daemon-native.tar.gz
cd commons-daemon-1.1.x-native-src/unix
./configure
cp jsvc ../..
cd ../..
Tomcat can then be run as a daemon using the following commands.
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
You may also need to specify
-jvm server
if the JVM defaults
to using a server VM rather than a client VM. This has been observed on
jsvc has other useful parameters, such as
-user
which
causes it to switch to another user after the daemon initialization is
complete. This allows, for example, running Tomcat as a non privileged
user while still being able to use privileged ports. Note that if you
use this option and start Tomcat as root, you'll need to disable the
org.apache.catalina.security.SecurityListener
check that
prevents Tomcat starting when running as root.
jsvc --help
will return the full jsvc usage
information. In particular, the
-debug
option is useful
to debug issues running jsvc.
The file
$CATALINA_HOME/bin/daemon.sh
can be used as a
template for starting Tomcat automatically at boot time from
/etc/init.d
with jsvc.
Note that the Commons-Daemon JAR file must be on your runtime classpath
to run Tomcat in this manner. The Commons-Daemon JAR file is in the
Class-Path entry of the bootstrap.jar manifest, but if you get a
ClassNotFoundException or a NoClassDefFoundError for a Commons-Daemon