blob: 4cee26c41679a972ac1b561ed8ce6a261deff2c6 [file] [log] [blame]
Cheng Tang697ce242014-04-27 16:18:17 +08001================================================================================
2 Licensed to the Apache Software Foundation (ASF) under one or more
3 contributor license agreements. See the NOTICE file distributed with
4 this work for additional information regarding copyright ownership.
5 The ASF licenses this file to You under the Apache License, Version 2.0
6 (the "License"); you may not use this file except in compliance with
7 the License. You may obtain a copy of the License at
8
9 http://www.apache.org/licenses/LICENSE-2.0
10
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16================================================================================
17
Cheng Tang697ce242014-04-27 16:18:17 +080018 ===================================================
19 Running The Apache Tomcat 7.0 Servlet/JSP Container
20 ===================================================
21
22Apache Tomcat 7.0 requires a Java Standard Edition Runtime
23Environment (JRE) version 6 or later.
24
25=============================
26Running With JRE 6 Or Later
27=============================
28
29(1) Download and Install a Java SE Runtime Environment (JRE)
30
31(1.1) Download a Java SE Runtime Environment (JRE),
32 release version 6 or later, from
33 http://www.oracle.com/technetwork/java/javase/downloads/index.html
34
35(1.2) Install the JRE according to the instructions included with the
36 release.
37
38 You may also use a full Java Development Kit (JDK) rather than just
39 a JRE.
40
41
42(2) Download and Install Apache Tomcat
43
44(2.1) Download a binary distribution of Tomcat from:
45
46 http://tomcat.apache.org/
47
48(2.2) Unpack the binary distribution so that it resides in its own
49 directory (conventionally named "apache-tomcat-[version]").
50
51 For the purposes of the remainder of this document, the name
52 "CATALINA_HOME" is used to refer to the full pathname of that
53 directory.
54
55NOTE: As an alternative to downloading a binary distribution, you can
56create your own from the Tomcat source code, as described in
57"BUILDING.txt". You can either
58
59 a) Do the full "release" build and find the created distribution in the
60 "output/release" directory and then proceed with unpacking as above, or
61
62 b) Do a simple build and use the "output/build" directory as
63 "CATALINA_HOME". Be warned that there are some differences between the
64 contents of the "output/build" directory and a full "release"
65 distribution.
66
67
68(3) Configure Environment Variables
69
刘洪青65827522016-10-19 16:10:39 +080070Tomcat is a Java application and does not use environment variables directly.
71Environment variables are used by the Tomcat startup scripts. The scripts use
72the environment variables to prepare the command that starts Tomcat.
Cheng Tang697ce242014-04-27 16:18:17 +080073
74(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)
75
76The CATALINA_HOME environment variable should be set to the location of the
77root directory of the "binary" distribution of Tomcat.
78
Cheng Tang697ce242014-04-27 16:18:17 +080079The Tomcat startup scripts have some logic to set this variable
80automatically if it is absent, based on the location of the startup script
81in *nix and on the current directory in Windows. That logic might not work
82in all circumstances, so setting the variable explicitly is recommended.
83
84The CATALINA_BASE environment variable specifies location of the root
85directory of the "active configuration" of Tomcat. It is optional. It
86defaults to be equal to CATALINA_HOME.
87
88Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is
89recommended to simplify further upgrades and maintenance. It is documented
90in the "Multiple Tomcat Instances" section below.
91
92
93(3.2) Set JRE_HOME or JAVA_HOME (required)
94
95These variables are used to specify location of a Java Runtime
96Environment or of a Java Development Kit that is used to start Tomcat.
97
98The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME
99variable is used to specify location of a JDK.
100
101Using JAVA_HOME provides access to certain additional startup options that
102are not allowed when JRE_HOME is used.
103
104If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.
105
106The recommended place to specify these variables is a "setenv" script. See
107below.
108
109
110(3.3) Other variables (optional)
111
112Other environment variables exist, besides the four described above.
113See the comments at the top of catalina.bat or catalina.sh scripts for
114the list and a description of each of them.
115
116One frequently used variable is CATALINA_OPTS. It allows specification of
117additional options for the java command that starts Tomcat.
118
119See the Java documentation for the options that affect the Java Runtime
120Environment.
121
122See the "System Properties" page in the Tomcat Configuration Reference for
123the system properties that are specific to Tomcat.
124
125A similar variable is JAVA_OPTS. It is used less frequently. It allows
126specification of options that are used both to start and to stop Tomcat as well
127as for other commands.
128
129Note: Do not use JAVA_OPTS to specify memory limits. You do not need much
130memory for a small process that is used to stop Tomcat. Those settings
131belong to CATALINA_OPTS.
132
133Another frequently used variable is CATALINA_PID (on *nix only). It
134specifies the location of the file where process id of the forked Tomcat
135java process will be written. This setting is optional. It will enable the
136following features:
137
138 * better protection against duplicate start attempts and
139 * allows forceful termination of Tomcat process when it does not react to
140 the standard shutdown command.
141
142
143(3.4) Using the "setenv" script (optional, recommended)
144
145Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can
146be specified in the "setenv" script. The script is placed either into
147CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named
148setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be
149readable.
150
151By default the setenv script file is absent. If the script file is present
152both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is
153preferred.
154
155For example, to configure the JRE_HOME and CATALINA_PID variables you can
156create the following script file:
157
158On Windows, %CATALINA_BASE%\bin\setenv.bat:
159
160 set "JRE_HOME=%ProgramFiles%\Java\jre6"
161 exit /b 0
162
163On *nix, $CATALINA_BASE/bin/setenv.sh:
164
165 JRE_HOME=/usr/java/latest
166 CATALINA_PID="$CATALINA_BASE/tomcat.pid"
167
168
169The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the
170setenv script, because they are used to locate that file.
171
172All the environment variables described here and the "setenv" script are
173used only if you use the standard scripts to launch Tomcat. For example, if
174you have installed Tomcat as a service on Windows, the service wrapper
175launches Java directly and does not use the script files.
176
177
178(4) Start Up Tomcat
179
180(4.1) Tomcat can be started by executing one of the following commands:
181
182 On Windows:
183
184 %CATALINA_HOME%\bin\startup.bat
185
186 or
187
188 %CATALINA_HOME%\bin\catalina.bat start
189
190 On *nix:
191
192 $CATALINA_HOME/bin/startup.sh
193
194 or
195
196 $CATALINA_HOME/bin/catalina.sh start
197
198(4.2) After startup, the default web applications included with Tomcat will be
199 available by visiting:
200
201 http://localhost:8080/
202
203(4.3) Further information about configuring and running Tomcat can be found in
204 the documentation included here, as well as on the Tomcat web site:
205
206 http://tomcat.apache.org/
207
208
209(5) Shut Down Tomcat
210
211(5.1) Tomcat can be shut down by executing one of the following commands:
212
213 On Windows:
214
215 %CATALINA_HOME%\bin\shutdown.bat
216
217 or
218
219 %CATALINA_HOME%\bin\catalina.bat stop
220
221 On *nix:
222
223 $CATALINA_HOME/bin/shutdown.sh
224
225 or
226
227 $CATALINA_HOME/bin/catalina.sh stop
228
229==================================================
230Advanced Configuration - Multiple Tomcat Instances
231==================================================
232
233In many circumstances, it is desirable to have a single copy of a Tomcat
234binary distribution shared among multiple users on the same server. To make
235this possible, you can set the CATALINA_BASE environment variable to the
236directory that contains the files for your 'personal' Tomcat instance.
237
238When running with a separate CATALINA_HOME and CATALINA_BASE, the files
239and directories are split as following:
240
241In CATALINA_BASE:
242
243 * bin - Only the following files:
244
245 * setenv.sh (*nix) or setenv.bat (Windows),
246 * tomcat-juli.jar
247
248 The setenv scripts were described above. The tomcat-juli library
249 is documented in the Logging chapter in the User Guide.
250
251 * conf - Server configuration files (including server.xml)
252
253 * lib - Libraries and classes, as explained below
254
255 * logs - Log and output files
256
257 * webapps - Automatically loaded web applications
258
259 * work - Temporary working directories for web applications
260
261 * temp - Directory used by the JVM for temporary files (java.io.tmpdir)
262
263
264In CATALINA_HOME:
265
266 * bin - Startup and shutdown scripts
267
268 The following files will be used only if they are absent in
269 CATALINA_BASE/bin:
270
271 setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar
272
273 * lib - Libraries and classes, as explained below
274
275 * endorsed - Libraries that override standard "Endorsed Standards"
276 libraries provided by JRE. See Classloading documentation
277 in the User Guide for details.
278
279 By default this "endorsed" directory is absent.
280
281In the default configuration the JAR libraries and classes both in
282CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common
283classpath, but the ones in CATALINA_BASE will be added first and thus will
284be searched first.
285
286The idea is that you may leave the standard Tomcat libraries in
287CATALINA_HOME/lib and add other ones such as database drivers into
288CATALINA_BASE/lib.
289
290In general it is advised to never share libraries between web applications,
291but put them into WEB-INF/lib directories inside the applications. See
292Classloading documentation in the User Guide for details.
293
294
295It might be useful to note that the values of CATALINA_HOME and
296CATALINA_BASE can be referenced in the XML configuration files processed
297by Tomcat as ${catalina.home} and ${catalina.base} respectively.
298
299For example, the standard manager web application can be kept in
300CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using
301the following trick:
302
303 * Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml
304 file as CATALINA_BASE/conf/Catalina/localhost/manager.xml
305
306 * Add docBase attribute as shown below.
307
308The file will look like the following:
309
310 <?xml version="1.0" encoding="UTF-8"?>
311 <Context docBase="${catalina.home}/webapps/manager"
312 antiResourceLocking="false" privileged="true" >
313 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
314 allow="127\.0\.0\.1" />
315 </Context>
316
317See Deployer chapter in User Guide and Context and Host chapters in the
318Configuration Reference for more information on contexts and web
319application deployment.
320
321
322================
323Troubleshooting
324================
325
326There are only really 2 things likely to go wrong during the stand-alone
327Tomcat install:
328
329(1) The most common hiccup is when another web server (or any process for that
330 matter) has laid claim to port 8080. This is the default HTTP port that
331 Tomcat attempts to bind to at startup. To change this, open the file:
332
333 $CATALINA_HOME/conf/server.xml
334
335 and search for '8080'. Change it to a port that isn't in use, and is
336 greater than 1024, as ports less than or equal to 1024 require superuser
337 access to bind under UNIX.
338
339 Restart Tomcat and you're in business. Be sure that you replace the "8080"
340 in the URL you're using to access Tomcat. For example, if you change the
341 port to 1977, you would request the URL http://localhost:1977/ in your
342 browser.
343
344(2) The 'localhost' machine isn't found. This could happen if you're behind a
345 proxy. If that's the case, make sure the proxy configuration for your
346 browser knows that you shouldn't be going through the proxy to access the
347 "localhost".
348
349 In Firefox, this is under Tools/Preferences -> Advanced/Network ->
350 Connection -> Settings..., and in Internet Explorer it is Tools ->
351 Internet Options -> Connections -> LAN Settings.
352
353
354====================
355Optional Components
356====================
357
358The following optional components may be included with the Apache Tomcat binary
359distribution. If they are not included, you can install them separately.
360
361 1. Apache Tomcat Native library
362
363 2. Apache Commons Daemon service launcher
364
365Both of them are implemented in C language and as such have to be compiled
366into binary code. The binary code will be specific for a platform and CPU
367architecture and it must match the Java Runtime Environment executables
368that will be used to launch Tomcat.
369
370The Windows-specific binary distributions of Apache Tomcat include binary
371files for these components. On other platforms you would have to look for
372binary versions elsewhere or compile them yourself.
373
374If you are new to Tomcat, do not bother with these components to start with.
375If you do use them, do not forget to read their documentation.
376
377
378Apache Tomcat Native library
379-----------------------------
380
381It is a library that allows to use the "Apr" variant of HTTP and AJP
382protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache
383Portable Runtime (APR) libraries. Those are the same libraries as used by
384Apache HTTPD Server project.
385
386This feature was especially important in the old days when Java performance
387was poor. It is less important nowadays, but it is still used and respected
388by many. See Tomcat documentation for more details.
389
390For further reading:
391
392 - Apache Tomcat documentation
393
394 * Documentation for APR/Native library in the Tomcat User's Guide
395
396 http://tomcat.apache.org/tomcat-7.0-doc/apr.html
397
398 * Documentation for the HTTP and AJP protocol connectors in the Tomcat
399 Configuration Reference
400
401 http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
402
403 http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html
404
405 - Apache Tomcat Native project home
406
407 http://tomcat.apache.org/native-doc/
408
409 - Other projects
410
411 * OpenSSL
412
413 http://openssl.org/
414
415 * Apache Portable Runtime
416
417 http://apr.apache.org/
418
419 * Apache HTTP Server
420
421 http://httpd.apache.org/
422
423To disable Apache Tomcat Native library:
424
425 - To disable Apache Tomcat Native library when it is installed, or
426 - To remove the warning that is logged during Tomcat startup when the
427 library is not installed:
428
429 Edit the "conf/server.xml" file and remove "AprLifecycleListener" from
430 it.
431
432The binary file of Apache Tomcat Native library is usually named
433
434 - "tcnative-1.dll" on Windows
435 - "libtcnative-1.so" on *nix systems
436
437
438Apache Commons Daemon
439----------------------
440
441Apache Commons Daemon project provides wrappers that can be used to
442install Apache Tomcat as a service on Windows or as a daemon on *nix
443systems.
444
445The Windows-specific implementation of Apache Commons Daemon is called
446"procrun". The *nix-specific one is called "jsvc".
447
448For further reading:
449
450 - Apache Commons Daemon project
451
452 http://commons.apache.org/daemon/
453
454 - Apache Tomcat documentation
455
456 * Installing Apache Tomcat
457
458 http://tomcat.apache.org/tomcat-7.0-doc/setup.html
459
460 * Windows service HOW-TO
461
462 http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html
463
464The binary files of Apache Commons Daemon in Apache Tomcat distributions
465for Windows are named:
466
467 - "tomcat7.exe"
468 - "tomcat7w.exe"
469
470These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from
471Apache Commons Daemon distribution. The file names have a meaning: they are
472used as the service name to register the service in Windows, as well as the
473key name to store distinct configuration for this installation of
474"procrun". If you would like to install several instances of Tomcat 7.0
475in parallel, you have to further rename those files, using the same naming
476scheme.