Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
771 blopes 1
================================================================================
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
 
18
            ===================================================
19
            Running The Apache Tomcat 9.0 Servlet/JSP Container
20
            ===================================================
21
 
22
Apache Tomcat 9.0 requires a Java Standard Edition Runtime
23
Environment (JRE) version 8 or later.
24
 
25
=============================
26
Running With JRE 8 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 8 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
      https://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
 
55
NOTE:  As an alternative to downloading a binary distribution, you can
56
create 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
 
70
Tomcat is a Java application and does not use environment variables directly.
71
Environment variables are used by the Tomcat startup scripts. The scripts use
72
the environment variables to prepare the command that starts Tomcat.
73
 
74
(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)
75
 
76
The CATALINA_HOME environment variable should be set to the location of the
77
root directory of the "binary" distribution of Tomcat.
78
 
79
The Tomcat startup scripts have some logic to set this variable
80
automatically if it is absent, based on the location of the startup script
81
in *nix and on the current directory in Windows. That logic might not work
82
in all circumstances, so setting the variable explicitly is recommended.
83
 
84
The CATALINA_BASE environment variable specifies location of the root
85
directory of the "active configuration" of Tomcat. It is optional. It
86
defaults to be equal to CATALINA_HOME.
87
 
88
Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is
89
recommended to simplify further upgrades and maintenance. It is documented
90
in the "Multiple Tomcat Instances" section below.
91
 
92
 
93
(3.2) Set JRE_HOME or JAVA_HOME (required)
94
 
95
These variables are used to specify location of a Java Runtime
96
Environment or of a Java Development Kit that is used to start Tomcat.
97
 
98
The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME
99
variable is used to specify location of a JDK.
100
 
101
Using JAVA_HOME provides access to certain additional startup options that
102
are not allowed when JRE_HOME is used.
103
 
104
If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.
105
 
106
The recommended place to specify these variables is a "setenv" script. See
107
below.
108
 
109
 
110
(3.3) Other variables (optional)
111
 
112
Other environment variables exist, besides the four described above.
113
See the comments at the top of catalina.bat or catalina.sh scripts for
114
the list and a description of each of them.
115
 
116
One frequently used variable is CATALINA_OPTS. It allows specification of
117
additional options for the java command that starts Tomcat.
118
 
119
See the Java documentation for the options that affect the Java Runtime
120
Environment.
121
 
122
See the "System Properties" page in the Tomcat Configuration Reference for
123
the system properties that are specific to Tomcat.
124
 
125
A similar variable is JAVA_OPTS. It is used less frequently. It allows
126
specification of options that are used both to start and to stop Tomcat as well
127
as for other commands.
128
 
129
Note: Do not use JAVA_OPTS to specify memory limits. You do not need much
130
memory for a small process that is used to stop Tomcat. Those settings
131
belong to CATALINA_OPTS.
132
 
133
Another frequently used variable is CATALINA_PID (on *nix only). It
134
specifies the location of the file where process id of the forked Tomcat
135
java process will be written. This setting is optional. It will activate
136
the following 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
 
145
Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can
146
be specified in the "setenv" script. The script is placed either into
147
CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named
148
setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be
149
readable.
150
 
151
By default the setenv script file is absent. If the script file is present
152
both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is
153
preferred.
154
 
155
For example, to configure the JRE_HOME and CATALINA_PID variables you can
156
create the following script file:
157
 
158
On Windows, %CATALINA_BASE%\bin\setenv.bat:
159
 
160
  set "JRE_HOME=%ProgramFiles%\Java\jre8"
161
  exit /b 0
162
 
163
On *nix, $CATALINA_BASE/bin/setenv.sh:
164
 
165
  JRE_HOME=/usr/java/latest
166
  CATALINA_PID="/run/tomcat.pid"
167
 
168
 
169
The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the
170
setenv script, because they are used to locate that file.
171
 
172
All the environment variables described here and the "setenv" script are
173
used only if you use the standard scripts to launch Tomcat. For example, if
174
you have installed Tomcat as a service on Windows, the service wrapper
175
launches 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
      https://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
==================================================
230
Advanced Configuration - Multiple Tomcat Instances
231
==================================================
232
 
233
In many circumstances, it is desirable to have a single copy of a Tomcat
234
binary distribution shared among multiple users on the same server.  To make
235
this possible, you can set the CATALINA_BASE environment variable to the
236
directory that contains the files for your 'personal' Tomcat instance.
237
 
238
When running with a separate CATALINA_HOME and CATALINA_BASE, the files
239
and directories are split as following:
240
 
241
In 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 (typically all of them, including
252
          server.xml)
253
 
254
 * lib  - Libraries and classes, as explained below
255
 
256
 * logs - Log and output files
257
 
258
 * webapps - Automatically loaded web applications
259
 
260
 * work - Temporary working directories for web applications
261
 
262
 * temp - Directory used by the JVM for temporary files (java.io.tmpdir)
263
 
264
 
265
In CATALINA_HOME:
266
 
267
 * bin  - Startup and shutdown scripts
268
 
269
          The following files will be used only if they are absent in
270
          CATALINA_BASE/bin:
271
 
272
          setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar
273
 
274
 * lib  - Libraries and classes, as explained below
275
 
276
 * endorsed - Libraries that override standard "Endorsed Standards"
277
              libraries provided by JRE. See Classloading documentation
278
              in the User Guide for details.
279
              This is only supported for Java <= 8.
280
              By default this "endorsed" directory is absent.
281
 
282
In the default configuration the JAR libraries and classes both in
283
CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common
284
classpath, but the ones in CATALINA_BASE will be added first and thus will
285
be searched first.
286
 
287
The idea is that you may leave the standard Tomcat libraries in
288
CATALINA_HOME/lib and add other ones such as database drivers into
289
CATALINA_BASE/lib.
290
 
291
In general it is advised to never share libraries between web applications,
292
but put them into WEB-INF/lib directories inside the applications. See
293
Classloading documentation in the User Guide for details.
294
 
295
 
296
It might be useful to note that the values of CATALINA_HOME and
297
CATALINA_BASE can be referenced in the XML configuration files processed
298
by Tomcat as ${catalina.home} and ${catalina.base} respectively.
299
 
300
For example, the standard manager web application can be kept in
301
CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by copying
302
its deployment descriptor into the desired virtual host:
303
 
304
 * Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml
305
   file as CATALINA_BASE/conf/Catalina/localhost/manager.xml
306
 
307
 * Add docBase attribute as shown below.
308
 
309
The file will look like the following:
310
 
311
  <?xml version="1.0" encoding="UTF-8"?>
312
  <Context docBase="${catalina.home}/webapps/manager"
313
    antiResourceLocking="false" privileged="true" >
314
  <Valve className="org.apache.catalina.valves.RemoteCIDRValve"
315
         allow="127.0.0.0/8,::1/128" />
316
    <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
317
  </Context>
318
 
319
See Deployer chapter in User Guide and Context and Host chapters in the
320
Configuration Reference for more information on contexts and web
321
application deployment.
322
 
323
 
324
================
325
Troubleshooting
326
================
327
 
328
There are only really 2 things likely to go wrong during the stand-alone
329
Tomcat install:
330
 
331
(1) The most common hiccup is when another web server (or any process for that
332
    matter) has laid claim to port 8080.  This is the default HTTP port that
333
    Tomcat attempts to bind to at startup.  To change this, open the file:
334
 
335
       $CATALINA_HOME/conf/server.xml
336
 
337
    and search for '8080'.  Change it to a port that isn't in use, and is
338
    greater than 1024, as ports less than or equal to 1024 require superuser
339
    access to bind under UNIX.
340
 
341
    Restart Tomcat and you're in business.  Be sure that you replace the "8080"
342
    in the URL you're using to access Tomcat.  For example, if you change the
343
    port to 1977, you would request the URL http://localhost:1977/ in your
344
    browser.
345
 
346
(2) The 'localhost' machine isn't found.  This could happen if you're behind a
347
    proxy.  If that's the case, make sure the proxy configuration for your
348
    browser knows that you shouldn't be going through the proxy to access the
349
    "localhost".
350
 
351
    In Firefox, this is under Tools/Preferences -> Advanced/Network ->
352
    Connection -> Settings..., and in Internet Explorer it is Tools ->
353
    Internet Options -> Connections -> LAN Settings.
354
 
355
 
356
====================
357
Optional Components
358
====================
359
 
360
The following optional components may be included with the Apache Tomcat binary
361
distribution. If they are not included, you can install them separately.
362
 
363
 1. Apache Tomcat Native library
364
 
365
 2. Apache Commons Daemon service launcher
366
 
367
Both of them are implemented in C language and as such have to be compiled
368
into binary code. The binary code will be specific for a platform and CPU
369
architecture and it must match the Java Runtime Environment executables
370
that will be used to launch Tomcat.
371
 
372
The Windows-specific binary distributions of Apache Tomcat include binary
373
files for these components. On other platforms you would have to look for
374
binary versions elsewhere or compile them yourself.
375
 
376
If you are new to Tomcat, do not bother with these components to start with.
377
If you do use them, do not forget to read their documentation.
378
 
379
 
380
Apache Tomcat Native library
381
-----------------------------
382
 
383
It is a library that allows to use the "Apr" variant of HTTP and AJP
384
protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache
385
Portable Runtime (APR) libraries. Those are the same libraries as used by
386
Apache HTTPD Server project.
387
 
388
This feature was especially important in the old days when Java performance
389
was poor. It is less important nowadays, but it is still used and respected
390
by many. See Tomcat documentation for more details.
391
 
392
For further reading:
393
 
394
 - Apache Tomcat documentation
395
 
396
    * Documentation for APR/Native library in the Tomcat User's Guide
397
 
398
      https://tomcat.apache.org/tomcat-9.0-doc/apr.html
399
 
400
    * Documentation for the HTTP and AJP protocol connectors in the Tomcat
401
      Configuration Reference
402
 
403
      https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
404
 
405
      https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html
406
 
407
 - Apache Tomcat Native project home
408
 
409
      https://tomcat.apache.org/native-doc/
410
 
411
 - Other projects
412
 
413
    * OpenSSL
414
 
415
      https://www.openssl.org/
416
 
417
    * Apache Portable Runtime
418
 
419
      https://apr.apache.org/
420
 
421
    * Apache HTTP Server
422
 
423
      https://httpd.apache.org/
424
 
425
To deactivate Apache Tomcat Native library:
426
 
427
 - To deactivate Apache Tomcat Native library when it is installed, or
428
 - To remove the warning that is logged during Tomcat startup when the
429
   library is not installed:
430
 
431
   Edit the "conf/server.xml" file and remove "AprLifecycleListener" from
432
   it.
433
 
434
The binary file of Apache Tomcat Native library is usually named
435
 
436
  - "tcnative-1.dll" on Windows
437
  - "libtcnative-1.so" on *nix systems
438
 
439
 
440
Apache Commons Daemon
441
----------------------
442
 
443
Apache Commons Daemon project provides wrappers that can be used to
444
install Apache Tomcat as a service on Windows or as a daemon on *nix
445
systems.
446
 
447
The Windows-specific implementation of Apache Commons Daemon is called
448
"procrun". The *nix-specific one is called "jsvc".
449
 
450
For further reading:
451
 
452
 - Apache Commons Daemon project
453
 
454
      https://commons.apache.org/daemon/
455
 
456
 - Apache Tomcat documentation
457
 
458
    * Installing Apache Tomcat
459
 
460
      https://tomcat.apache.org/tomcat-9.0-doc/setup.html
461
 
462
    * Windows Service How-To
463
 
464
      https://tomcat.apache.org/tomcat-9.0-doc/windows-service-howto.html
465
 
466
The binary files of Apache Commons Daemon in Apache Tomcat distributions
467
for Windows are named:
468
 
469
  - "tomcat9.exe"
470
  - "tomcat9w.exe"
471
 
472
These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from
473
Apache Commons Daemon distribution. The file names have a meaning: they are
474
used as the service name to register the service in Windows, as well as the
475
key name to store distinct configuration for this installation of
476
"procrun". If you would like to install several instances of Tomcat 9.0
477
in parallel, you have to further rename those files, using the same naming
478
scheme.