Cheng Tang | 697ce24 | 2014-04-27 16:18:17 +0800 | [diff] [blame] | 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 | |
Cheng Tang | 697ce24 | 2014-04-27 16:18:17 +0800 | [diff] [blame] | 18 | =================================================== |
| 19 | Running The Apache Tomcat 7.0 Servlet/JSP Container |
| 20 | =================================================== |
| 21 | |
| 22 | Apache Tomcat 7.0 requires a Java Standard Edition Runtime |
| 23 | Environment (JRE) version 6 or later. |
| 24 | |
| 25 | ============================= |
| 26 | Running 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 | |
| 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 | |
刘洪青 | 6582752 | 2016-10-19 16:10:39 +0800 | [diff] [blame^] | 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. |
Cheng Tang | 697ce24 | 2014-04-27 16:18:17 +0800 | [diff] [blame] | 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 | |
Cheng Tang | 697ce24 | 2014-04-27 16:18:17 +0800 | [diff] [blame] | 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 enable the |
| 136 | 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\jre6" |
| 161 | exit /b 0 |
| 162 | |
| 163 | On *nix, $CATALINA_BASE/bin/setenv.sh: |
| 164 | |
| 165 | JRE_HOME=/usr/java/latest |
| 166 | CATALINA_PID="$CATALINA_BASE/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 | 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 | ================================================== |
| 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 (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 | |
| 264 | In 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 | |
| 281 | In the default configuration the JAR libraries and classes both in |
| 282 | CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common |
| 283 | classpath, but the ones in CATALINA_BASE will be added first and thus will |
| 284 | be searched first. |
| 285 | |
| 286 | The idea is that you may leave the standard Tomcat libraries in |
| 287 | CATALINA_HOME/lib and add other ones such as database drivers into |
| 288 | CATALINA_BASE/lib. |
| 289 | |
| 290 | In general it is advised to never share libraries between web applications, |
| 291 | but put them into WEB-INF/lib directories inside the applications. See |
| 292 | Classloading documentation in the User Guide for details. |
| 293 | |
| 294 | |
| 295 | It might be useful to note that the values of CATALINA_HOME and |
| 296 | CATALINA_BASE can be referenced in the XML configuration files processed |
| 297 | by Tomcat as ${catalina.home} and ${catalina.base} respectively. |
| 298 | |
| 299 | For example, the standard manager web application can be kept in |
| 300 | CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using |
| 301 | the 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 | |
| 308 | The 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 | |
| 317 | See Deployer chapter in User Guide and Context and Host chapters in the |
| 318 | Configuration Reference for more information on contexts and web |
| 319 | application deployment. |
| 320 | |
| 321 | |
| 322 | ================ |
| 323 | Troubleshooting |
| 324 | ================ |
| 325 | |
| 326 | There are only really 2 things likely to go wrong during the stand-alone |
| 327 | Tomcat 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 | ==================== |
| 355 | Optional Components |
| 356 | ==================== |
| 357 | |
| 358 | The following optional components may be included with the Apache Tomcat binary |
| 359 | distribution. 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 | |
| 365 | Both of them are implemented in C language and as such have to be compiled |
| 366 | into binary code. The binary code will be specific for a platform and CPU |
| 367 | architecture and it must match the Java Runtime Environment executables |
| 368 | that will be used to launch Tomcat. |
| 369 | |
| 370 | The Windows-specific binary distributions of Apache Tomcat include binary |
| 371 | files for these components. On other platforms you would have to look for |
| 372 | binary versions elsewhere or compile them yourself. |
| 373 | |
| 374 | If you are new to Tomcat, do not bother with these components to start with. |
| 375 | If you do use them, do not forget to read their documentation. |
| 376 | |
| 377 | |
| 378 | Apache Tomcat Native library |
| 379 | ----------------------------- |
| 380 | |
| 381 | It is a library that allows to use the "Apr" variant of HTTP and AJP |
| 382 | protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache |
| 383 | Portable Runtime (APR) libraries. Those are the same libraries as used by |
| 384 | Apache HTTPD Server project. |
| 385 | |
| 386 | This feature was especially important in the old days when Java performance |
| 387 | was poor. It is less important nowadays, but it is still used and respected |
| 388 | by many. See Tomcat documentation for more details. |
| 389 | |
| 390 | For 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 | |
| 423 | To 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 | |
| 432 | The 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 | |
| 438 | Apache Commons Daemon |
| 439 | ---------------------- |
| 440 | |
| 441 | Apache Commons Daemon project provides wrappers that can be used to |
| 442 | install Apache Tomcat as a service on Windows or as a daemon on *nix |
| 443 | systems. |
| 444 | |
| 445 | The Windows-specific implementation of Apache Commons Daemon is called |
| 446 | "procrun". The *nix-specific one is called "jsvc". |
| 447 | |
| 448 | For 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 | |
| 464 | The binary files of Apache Commons Daemon in Apache Tomcat distributions |
| 465 | for Windows are named: |
| 466 | |
| 467 | - "tomcat7.exe" |
| 468 | - "tomcat7w.exe" |
| 469 | |
| 470 | These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from |
| 471 | Apache Commons Daemon distribution. The file names have a meaning: they are |
| 472 | used as the service name to register the service in Windows, as well as the |
| 473 | key name to store distinct configuration for this installation of |
| 474 | "procrun". If you would like to install several instances of Tomcat 7.0 |
| 475 | in parallel, you have to further rename those files, using the same naming |
| 476 | scheme. |