免安装应用或服务能否首次正常运行,一般可通过逻辑推理其配置文件得出结论,若配置文件中存在明显纰漏或潜在危险,则显然无法正常运行,若看不出是否存在,也未必表示就能正常运行。


1.Tomcat可以独立地作为一个服务器,单独启动、关闭,这时需要配置Tomcat的相关环境变量;Tomcat也可以通过Eclipse来启动即在Eclipse中启动外部Tomcat服务器,这时只要Eclipse能正常使用就不再需要配置Tomcat的相关环境变量。


2.在Tomcat的安装目录中有一个“RUNNING.txt”文件,里面详细论述了如何开始使用Servlet/JSP容器Apache Tomcat(包括Tomcat依赖关系的相关细节,Tomcat可能也可以在 任何满足要求的Java早期预先/抢先体验使用版(build)上工作。):下载、安装、配置等。

3.配置(正常使用Tomcat所需的)环境变量:
Tomcat是一个Java程序而且不会直接用到环境变量,但Tomcat的startup脚本需要使用环境变量,该脚本使用环境变量来准备启动Tomcat的命令。


3.1设置CATALINA_HOME(必需的)和CATALINA_BASE(可选的)
环境变量CATALINA_HOME必须被设置为Tomcat发行版中“binary”文件的根目录位置,若缺省CATALINA_HOME,Tomcat的startup脚本将会利用其具有的一些内部逻辑推理方法,基于startup脚本在*nix系统中的位置和在Windows系统中的当前目录,自动地设置上下文相关的CATALINA_HOME变量值,但这个内部逻辑可能无法在所有情境中起作用,因此推荐明确地手动设置该变量。
环境变量CATALINA_BASE则用来指定Tomcat的“active configuration”的根目录位置,该变量是可选的,默认是跟CATALINA_HOME等值的。

为简化以后的更新和维护工作,推荐使用不同的CATALINA_HOME和CATALINA_BASE值(关于这点,它被记录在下面的“多Tomcat实例”部分)。


3.2设置JRE_HOME或JAVA_HOME(必需的)
两个变量用来指定某一个Java Runtime Environment或者Java Development Kit的位置的,注意用来启动不同版本Tomcat的Java Standard Edition Runtime Environment的版本要求不同。

JRE_HOME用来指定JRE的位置,JAVA_HOME用来指定JDK的位置。当已经使用了JRE_HOME时,再使用JAVA_HOME来提供访问某些额外启动项的入口是不被允许的。若JRE_HOME和JAVA_HOME都被指定,使用的是JRE_HOME。推荐使用Tomcat的“setenv”脚本来指定这两个变量的值。


3.3其它变量(可选的)
除了以上描述的四个,其它环境变量也存在,各变量的列表和描述可参看Tomcat的“catalina.bat/catalina.sh”文件顶部的注释。参看(互联网上的)Tomcat Configuration Reference的“System Properties”页面寻求系统属性的信息。类型变量如JAVA_OPTS,它较少使用,允许启动和停止以及其它命令选项的规范。注意不要使用JAVA_OPTS去指定内存限制,你并不需要给启动Tomcat的小进程准备太多的内存空间,这些设置是属于CATALINA_OPTS的。
另一个常用变量是CATALINA_PID(仅限*nix系统),它指定某个文件的位置,这个文件会将fork(分叉,复刻)的Tomcat Java进程的进程号作为内容写入;该设置也是可选的,它将会开启以下功能:更好地防止试图多次重复启动(duplicate start attempts)和在Tomcat进程不能响应标准的关闭命令时允许强制终止。


3.4使用“setenv”脚本(可选、推荐的)
除了CATALINA_HOME和CATALINA_BASE(CATALINA_HOME和CATALINA_BASE不能在setenv脚本中配置,因为它们是用来定位setenv脚本文件的),所有的环境变量都能在“setenv”脚本中被指定,该脚本程序要么放在“CATALINA_BASE/bin”要么就在“CATALINA_HOME/bin”目录中,而且被命名为“setenv.bat”(Windows系统中)或“setenv.sh”(*nix系统中),这个脚本文件必须是可读的。
setenv脚本文件默认是缺省的,若该脚本文件在CATALINA_BASE和CATALINA_HOME中都存在,则CATALINA_BASE中的优先。比如,在配置JRE_HOME和CATALINA_PID时可以创建如下的脚本文件:
在Windows系统中,%CATALINA_BASE%\bin\setenv.bat:
set "JRE_HOME=%ProgramFiles%\Java\jre8"
exit /b 0
而在*nix系统中,$CATALINA_BASE/bin/setenv.sh:
JRE_HOME=/usr/java/latest
CATALINA_PID="$CATALINA_BASE/tomcat.pid"

只有在你使用标准脚本启动Tomcat时,以上描述的所有环境变量和“setenv”脚本才会被使用。例如,你已将Tomcat作为一项服务安装在Windows系统中,服务包装器将会直接启动Java而无需使用脚本文件。


4.启动Tomcat

在Windows系统中,使用命令提示符窗口(Windows Command Prompt窗口,CMD窗口)键入命令来执行可以很清晰地给出命令执行情况的反馈提示,而在Tomcat的%CATALINA_HOME%\bin目录下双击执行命令时,则无法给出反馈(尤其在无法正常执行而需要执行情况的反馈提示以排查问题时,这是非常不好的)。


4.1Tomcat能够通过执行以下任一命令被启动:
Windows系统中:%CATALINA_HOME%\bin\startup.bat或%CATALINA_HOME%\bin\catalina.bat start
*nix系统中:$CATALINA_HOME/bin/startup.sh或$CATALINA_HOME/bin/catalina.sh start

4.2在启动Tomcat之后,Tomcat中包含的默认Web应用程序将会变得可用,通过访问以下地址可验证:http://localhost:8080/

4.3更多关于配置和运行Tomcat的信息可在本文和Tomcat官方网址中找到:http://tomcat.apache.org


5.关闭Tomcat

5.1Tomcat能够通过执行以下任一命令被关闭:

Windows系统中:%CATALINA_HOME%\bin\shutdown.bat或%CATALINA_HOME%\bin\catalina.bat stop
*nix系统中:$CATALINA_HOME/bin/shutdown.sh或$CATALINA_HOME/bin/catalina.sh stop

6.高级配置——多Tomcat实例
在很多情形,同一服务器上的多用户只需共享一份Tomcat二进制分发版的拷贝才是让人满意的。为实现这个可能,你可以将环境变量CATALINA_BASE设置为包含你个人Tomcat实例文件的目录。当运行一个单独分开的CATALINA_HOME和CATALINA_BASE时,相关文件和目录会分成如下情况:
在CATALINA_BASE中:
* bin - 仅指以下文件:
* setenv.sh(*nix)或setenv.bat(Windows),
* tomcat-juli.jar
   tomcat-juli库的相关信息记录在用户指南的logging章节。

  * conf - 服务器配置文件(包含一个server.xml文件)
 * lib - 库和类,as explained below(如下说明的)
 * logs - 日志和输出文件
 * webapps - 自动加载的Web应用程序
 * work - Web应用程序的临时工作目录
 * temp - JVM临时文件java.io.tmpdir使用的目录

在CATALINA_HOME中:
  * bin - 启动和关闭脚本
    只有以下文件在CATALINA_BASE/bin中缺省的情况下,它们才会被使用:
setenv.sh(*nix),setenv.bat(Windows),tomcat-juli.jar

 * lib - 库和类,as explained below(如下说明的)
默认配置下,所有CATALINA_BASE/lib和CATALINA_HOME/lib中的JAR库和类都将会被添加到公共classpath,但是CATALINA_BASE中的将会被先添加并因此优先被搜索到。方法思想是你可能将标准Tomcat库留在CATALINA_HOME/lib中,而把其他库(例如数据库驱动)添加到CATALINA_BASE/lib中。总的来说,应绝不在Web应用程序间共享库,而是将它们放到Web应用程序的WEB-INF/lib目录下。请参考用户指南中的类加载文档以寻求细节详情。
注意到可能有用的是,CATALINA_HOME和CATALINA_BASE的值会在Tomcat处理的XML配置文件中被引用,相对地以${catalina.home}和${catalina.base}的形式。例如,标准管理器Web应用程序能被置于CATALINA_HOME/webapps/manager下,然后通过使用以下技巧就可以被加载到CATALINA_BASE:
* 复制CATALINA_HOME/webapps/manager/META-INF/context.xml文件的内容到CATALINA_BASE/conf/Catalina/localhost/manager.xml
* 依照如下呈现的样子添加docBase属性。文件将会形如:
  <?xml version="1.0" encoding="UTF-8"?>
  <Context docBase="${catalina.home}/webapps/manager"
    antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.0\.0\.1" />
  </Context>
关于上下文语境和Web应用程序部署的更多信息,请参看用户指南的部署人员章节和配置参考的Context and Host(上下文语境与虚拟主机)章节。

7.故障处理(Troubleshooting)
在独立的Tomcat安装过程中,这里仅有两种出现问题的可能:
(1)最普遍的暂时性小问题(hiccup)是其它Web服务器(或者与那些问题相关的任何进程)已声称过8080端口的占有权,这是Tomcat在启动时试图捆绑的默认HTTP端口。为改变这种状况,打开$CATALINA_HOME/conf/server.xml文件然后搜索“8080”,把它修改为一个未被使用和大于1024的端口号,因为在UNIX系统下,绑定小于或等于1024的端口要求超级用户的访问权限。重启Tomcat,然后你就能够正常运作Tomcat了,别忘了修改浏览器中访问URL的端口号。
(2)“localhost”机器没有被发现。这可能发生在你于代理服务器之后运作Tomcat的情况,若是这种情况,确保为浏览器所做的代理服务器配置明白你不会通过代理服务器 访问本地主机“localhost”。在火狐浏览器中,这些是在Tools/Preferences ->Advanced/Network ->Connection ->Settings...下设置,而在IE浏览器中,它是在Tools ->Internet Options ->Connections ->LAN Settings下设置。

8.可选的组件
以下的可选组件可能被包含在Apache Tomcat二进制分发版中,若没有被包含,你可以单独安装它们。
(1)Apache Tomcat本地库
(2)Apache公共守护进程服务启动器(Apache Commons Daemon可以帮你实现将一个普通Java应用变成一个系统后台服务的功能)。
两者都是用C语言实现并因此必须被编译成二进制码,这二进制码对于一个平台和CPU架构都将会是具体的,并且也必须匹配将用来运行Tomcat的JRE可执行文件。
Apache Tomcat针对具体Windows系统的二进制分发版包含了这些组件的二进制文件。在其它平台上,你就需要在其他地方查找它们的二进制版本或者自己编译它们。如果你是Tomcat的新手,最好不要自寻麻烦地启用这些组件;若你的确需要使用它们,不要忘了阅读关于它们的相关文档。

8.1Apache Tomcat本地库
Apache Tomcat本地库是一个库,它允许使用属于Apache Tomcat中HTTP和AJP协议连接器的变量“Apr”,而且它是围绕OpenSSL和Apache Portable Runtime(APR)库(Apache可移植运行库)构建。这些库跟Apache HTTPD Server项目所使用的库是一样的。在Java性能很差的旧日子,这些特性是尤其重要的,而现今不再重要了,但是它仍然被很多软件项目使用和遵守。细节详情请查看Tomcat文档。
深入阅读:
- Apache Tomcat documentation
* Documentation for APR/Native library in the Tomcat User's Guide
http://tomcat.apache.org/tomcat-9.0-doc/apr.html

* Documentation for the HTTP and AJP protocol connectors in the Tomcat Configuration Reference
http://tomcat.apache.org/tomcat-9.0-doc/config/http.htm
http://tomcat.apache.org/tomcat-9.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/

若想禁用Apache Tomcat本地库:
- 在它安装时禁用Apache Tomcat本地库,或者
- 在未安装库的情况下,移除Tomcat启动过程中日志记录的警告:编辑“conf/server.xml”文件,从中移除“AprLifecycleListener”。

Apache Tomcat本地库的二进制文件通常被命名为:Windows系统中为“tcnative-1.dll”,在*nix系统中则是“libtcnative-1.so”。

8.2Apache公共守护进程
Apache公共守护进程项目提供了可用来将Apache Tomcat安装为Windows服务或者*nix守护进程的包装器。针对具体Windows系统的Apache公共守护进程的实现名为“procrun”,而具体*nix系统的则名为“jsvc”。
深入阅读:
- Apache Commons Daemon project
http://commons.apache.org/daemon/

- Apache Tomcat documentation
* Installing Apache Tomcat
http://tomcat.apache.org/tomcat-9.0-doc/setup.html

* Windows service HOW-TO
http://tomcat.apache.org/tomcat-9.0-doc/windows-service-howto.html
对于Windows系统,Apache Tomcat分发版中Apache公共守护进程的二进制文件名为:“tomcat9.exe”和“tomcat9w.exe”,这两个文件是Apache公共守护进程分发版中“prunsrv.exe”和“prunmgr.exe”的重命名副本,文件名有一个含义:它们被用作Windows服务的注册服务名,以及为安装“procrun”而存储的不同配置信息的关键字名。如果你想并行安装多个Tomcat9.0的安装实例,就必须更多更进一步地(further)重命名那些文件,且使用前后一致的命名方案(scheme)。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐