================================================================================ | |
Licensed to the Apache Software Foundation (ASF) under one or more | |
contributor license agreements. See the NOTICE file distributed with | |
this work for additional information regarding copyright ownership. | |
The ASF licenses this file to You under the Apache License, Version 2.0 | |
(the "License"); you may not use this file except in compliance with | |
the License. You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
================================================================================ | |
=================================================== | |
Running The Apache Tomcat 6.0 Servlet/JSP Container | |
=================================================== | |
Apache Tomcat 6.0 requires a Java Standard Edition Runtime | |
Environment (JRE) version 5.0 or later. | |
============================= | |
Running With JRE 5.0 Or Later | |
============================= | |
(1) Download and Install a Java SE Runtime Environment (JRE) | |
(1.1) Download a Java SE Runtime Environment (JRE), | |
release version 5.0 or later, from | |
http://www.oracle.com/technetwork/java/javase/downloads/index.html | |
(1.2) Install the JRE according to the instructions included with the | |
release. | |
You may also use a full Java Development Kit (JDK) rather than just | |
a JRE. | |
(2) Download and Install Apache Tomcat | |
(2.1) Download a binary distribution of Tomcat from: | |
http://tomcat.apache.org/ | |
(2.2) Unpack the binary distribution so that it resides in its own | |
directory (conventionally named "apache-tomcat-[version]"). | |
For the purposes of the remainder of this document, the name | |
"CATALINA_HOME" is used to refer to the full pathname of that | |
directory. | |
NOTE: As an alternative to downloading a binary distribution, you can | |
create your own from the Tomcat source code, as described in | |
"BUILDING.txt". You can either | |
a) Do the full "release" build and find the created distribution in the | |
"output/release" directory and then proceed with unpacking as above, or | |
b) Do a simple build and use the "output/build" directory as | |
"CATALINA_HOME". Be warned that there are some differences between the | |
contents of the "output/build" directory and a full "release" | |
distribution. | |
(3) Configure Environment Variables | |
Tomcat is a Java application and does not use environment variables. The | |
variables are used by the Tomcat startup scripts. The scripts use the variables | |
to prepare the command that starts Tomcat. | |
(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional) | |
The CATALINA_HOME environment variable should be set to the location of the | |
root directory of the "binary" distribution of Tomcat. | |
An example was given in (2.2) above. | |
The Tomcat startup scripts have some logic to set this variable | |
automatically if it is absent, based on the location of the startup script | |
in *nix and on the current directory in Windows. That logic might not work | |
in all circumstances, so setting the variable explicitly is recommended. | |
The CATALINA_BASE environment variable specifies location of the root | |
directory of the "active configuration" of Tomcat. It is optional. It | |
defaults to be equal to CATALINA_HOME. | |
Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is | |
recommended to simplify further upgrades and maintenance. It is documented | |
in the "Multiple Tomcat Instances" section below. | |
(3.2) Set JRE_HOME or JAVA_HOME (required) | |
These variables are used to specify location of a Java Runtime | |
Environment or of a Java Development Kit that is used to start Tomcat. | |
The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME | |
variable is used to specify location of a JDK. | |
Using JAVA_HOME provides access to certain additional startup options that | |
are not allowed when JRE_HOME is used. | |
If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used. | |
The recommended place to specify these variables is a "setenv" script. See | |
below. | |
(3.3) Other variables (optional) | |
Other environment variables exist, besides the four described above. | |
See the comments at the top of catalina.bat or catalina.sh scripts for | |
the list and a description of each of them. | |
One frequently used variable is CATALINA_OPTS. It allows specification of | |
additional options for the java command that starts Tomcat. | |
See the Java documentation for the options that affect the Java Runtime | |
Environment. | |
See the "System Properties" page in the Tomcat Configuration Reference for | |
the system properties that are specific to Tomcat. | |
A similar variable is JAVA_OPTS. It is used less frequently. It allows | |
specification of options that are used both to start and to stop Tomcat as well | |
as for other commands. | |
Note: Do not use JAVA_OPTS to specify memory limits. You do not need much | |
memory for a small process that is used to stop Tomcat. Those settings | |
belong to CATALINA_OPTS. | |
Another frequently used variable is CATALINA_PID (on *nix only). It | |
specifies the location of the file where process id of the forked Tomcat | |
java process will be written. This setting is optional. It will enable the | |
following features: | |
* better protection against duplicate start attempts and | |
* allows forceful termination of Tomcat process when it does not react to | |
the standard shutdown command. | |
(3.4) Using the "setenv" script (optional, recommended) | |
Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can | |
be specified in the "setenv" script. The script is placed either into | |
CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named | |
setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be | |
readable. | |
By default the setenv script file is absent. If the script file is present | |
both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is | |
preferred. | |
For example, to configure the JRE_HOME and CATALINA_PID variables you can | |
create the following script file: | |
On Windows, %CATALINA_BASE%\bin\setenv.bat: | |
set "JRE_HOME=%ProgramFiles%\Java\jre6" | |
exit /b 0 | |
On *nix, $CATALINA_BASE/bin/setenv.sh: | |
JRE_HOME=/usr/java/latest | |
CATALINA_PID="$CATALINA_BASE/tomcat.pid" | |
The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the | |
setenv script, because they are used to locate that file. | |
All the environment variables described here and the "setenv" script are | |
used only if you use the standard scripts to launch Tomcat. For example, if | |
you have installed Tomcat as a service on Windows, the service wrapper | |
launches Java directly and does not use the script files. | |
(4) Start Up Tomcat | |
(4.1) Tomcat can be started by executing one of the following commands: | |
On Windows: | |
%CATALINA_HOME%\bin\startup.bat | |
or | |
%CATALINA_HOME%\bin\catalina.bat start | |
On *nix: | |
$CATALINA_HOME/bin/startup.sh | |
or | |
$CATALINA_HOME/bin/catalina.sh start | |
(4.2) After startup, the default web applications included with Tomcat will be | |
available by visiting: | |
http://localhost:8080/ | |
(4.3) Further information about configuring and running Tomcat can be found in | |
the documentation included here, as well as on the Tomcat web site: | |
http://tomcat.apache.org/ | |
(5) Shut Down Tomcat | |
(5.1) Tomcat can be shut down by executing one of the following commands: | |
On Windows: | |
%CATALINA_HOME%\bin\shutdown.bat | |
or | |
%CATALINA_HOME%\bin\catalina.bat stop | |
On *nix: | |
$CATALINA_HOME/bin/shutdown.sh | |
or | |
$CATALINA_HOME/bin/catalina.sh stop | |
================================================== | |
Advanced Configuration - Multiple Tomcat Instances | |
================================================== | |
In many circumstances, it is desirable to have a single copy of a Tomcat | |
binary distribution shared among multiple users on the same server. To make | |
this possible, you can set the CATALINA_BASE environment variable to the | |
directory that contains the files for your 'personal' Tomcat instance. | |
When running with a separate CATALINA_HOME and CATALINA_BASE, the files | |
and directories are split as following: | |
In CATALINA_BASE: | |
* bin - Only the following files: | |
* setenv.sh (*nix) or setenv.bat (Windows), | |
* tomcat-juli.jar | |
The setenv scripts were described above. The tomcat-juli library | |
is documented in the Logging chapter in the User Guide. | |
* conf - Server configuration files (including server.xml) | |
* lib - Libraries and classes, as explained below | |
* logs - Log and output files | |
* webapps - Automatically loaded web applications | |
* work - Temporary working directories for web applications | |
* temp - Directory used by the JVM for temporary files (java.io.tmpdir) | |
In CATALINA_HOME: | |
* bin - Startup and shutdown scripts | |
The following files will be used only if they are absent in | |
CATALINA_BASE/bin: | |
setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar | |
* lib - Libraries and classes, as explained below | |
* endorsed - Libraries that override standard "Endorsed Standards" | |
libraries provided by JRE. See Classloading documentation | |
in the User Guide for details. | |
By default this "endorsed" directory is absent. | |
In the default configuration the JAR libraries and classes both in | |
CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common | |
classpath, but the ones in CATALINA_BASE will be added first and thus will | |
be searched first. | |
The idea is that you may leave the standard Tomcat libraries in | |
CATALINA_HOME/lib and add other ones such as database drivers into | |
CATALINA_BASE/lib. | |
In general it is advised to never share libraries between web applications, | |
but put them into WEB-INF/lib directories inside the applications. See | |
Classloading documentation in the User Guide for details. | |
It might be useful to note that the values of CATALINA_HOME and | |
CATALINA_BASE can be referenced in the XML configuration files processed | |
by Tomcat as ${catalina.home} and ${catalina.base} respectively. | |
For example, the standard manager web application can be kept in | |
CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using | |
the following trick: | |
* Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml | |
file as CATALINA_BASE/conf/Catalina/localhost/manager.xml | |
* Add docBase attribute as shown below. | |
The file will look like the following: | |
<?xml version="1.0" encoding="UTF-8"?> | |
<Context docBase="${catalina.home}/webapps/manager" | |
antiResourceLocking="false" privileged="true" useHttpOnly="true" > | |
<Valve className="org.apache.catalina.valves.RemoteAddrValve" | |
allow="127\.0\.0\.1" /> | |
</Context> | |
See Deployer chapter in User Guide and Context and Host chapters in the | |
Configuration Reference for more information on contexts and web | |
application deployment. | |
================ | |
Troubleshooting | |
================ | |
There are only really 2 things likely to go wrong during the stand-alone | |
Tomcat install: | |
(1) The most common hiccup is when another web server (or any process for that | |
matter) has laid claim to port 8080. This is the default HTTP port that | |
Tomcat attempts to bind to at startup. To change this, open the file: | |
$CATALINA_HOME/conf/server.xml | |
and search for '8080'. Change it to a port that isn't in use, and is | |
greater than 1024, as ports less than or equal to 1024 require superuser | |
access to bind under UNIX. | |
Restart Tomcat and you're in business. Be sure that you replace the "8080" | |
in the URL you're using to access Tomcat. For example, if you change the | |
port to 1977, you would request the URL http://localhost:1977/ in your | |
browser. | |
(2) The 'localhost' machine isn't found. This could happen if you're behind a | |
proxy. If that's the case, make sure the proxy configuration for your | |
browser knows that you shouldn't be going through the proxy to access the | |
"localhost". | |
In Firefox, this is under Tools/Preferences -> Advanced/Network -> | |
Connection -> Settings..., and in Internet Explorer it is Tools -> | |
Internet Options -> Connections -> LAN Settings. | |
==================== | |
Optional Components | |
==================== | |
The following optional components may be included with the Apache Tomcat binary | |
distribution. If they are not included, you can install them separately. | |
1. Apache Tomcat Native library | |
2. Apache Commons Daemon service launcher | |
Both of them are implemented in C language and as such have to be compiled | |
into binary code. The binary code will be specific for a platform and CPU | |
architecture and it must match the Java Runtime Environment executables | |
that will be used to launch Tomcat. | |
The Windows-specific binary distributions of Apache Tomcat include binary | |
files for these components. On other platforms you would have to look for | |
binary versions elsewhere or compile them yourself. | |
If you are new to Tomcat, do not bother with these components to start with. | |
If you do use them, do not forget to read their documentation. | |
Apache Tomcat Native library | |
----------------------------- | |
It is a library that allows to use the "Apr" variant of HTTP and AJP | |
protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache | |
Portable Runtime (APR) libraries. Those are the same libraries as used by | |
Apache HTTPD Server project. | |
This feature was especially important in the old days when Java performance | |
was poor. It is less important nowadays, but it is still used and respected | |
by many. See Tomcat documentation for more details. | |
For further reading: | |
- Apache Tomcat documentation | |
* Documentation for APR/Native library in the Tomcat User's Guide | |
http://tomcat.apache.org/tomcat-6.0-doc/apr.html | |
* Documentation for the HTTP and AJP protocol connectors in the Tomcat | |
Configuration Reference | |
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html | |
http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html | |
- Apache Tomcat Native project home | |
http://tomcat.apache.org/native-doc/ | |
- Other projects | |
* OpenSSL | |
http://openssl.org/ | |
* Apache Portable Runtime | |
http://apr.apache.org/ | |
* Apache HTTP Server | |
http://httpd.apache.org/ | |
To disable Apache Tomcat Native library: | |
- To disable Apache Tomcat Native library when it is installed, or | |
- To remove the warning that is logged during Tomcat startup when the | |
library is not installed: | |
Edit the "conf/server.xml" file and remove "AprLifecycleListener" from | |
it. | |
The binary file of Apache Tomcat Native library is usually named | |
- "tcnative-1.dll" on Windows | |
- "libtcnative-1.so" on *nix systems | |
Apache Commons Daemon | |
---------------------- | |
Apache Commons Daemon project provides wrappers that can be used to | |
install Apache Tomcat as a service on Windows or as a daemon on *nix | |
systems. | |
The Windows-specific implementation of Apache Commons Daemon is called | |
"procrun". The *nix-specific one is called "jsvc". | |
For further reading: | |
- Apache Commons Daemon project | |
http://commons.apache.org/daemon/ | |
- Apache Tomcat documentation | |
* Installing Apache Tomcat | |
http://tomcat.apache.org/tomcat-6.0-doc/setup.html | |
* Windows service HOW-TO | |
http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html | |
The binary files of Apache Commons Daemon in Apache Tomcat distributions | |
for Windows are named: | |
- "tomcat6.exe" | |
- "tomcat6w.exe" | |
These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from | |
Apache Commons Daemon distribution. The file names have a meaning: they are | |
used as the service name to register the service in Windows, as well as the | |
key name to store distinct configuration for this installation of | |
"procrun". If you would like to install several instances of Tomcat 6.0 | |
in parallel, you have to further rename those files, using the same naming | |
scheme. |