概述 Tomcat 是一开源的 Java Web 服务器,是当今最流行的基于 Java 的 Web 应用服务器。Tomcat 具有以下特点: · Apache软件基金会出口 · 开源软件 · 源代码是 Java 写的 由于Tomcat 是使用Java语言实现的,因此 Tomcat 的运行依赖于 Java 运行环境,故运行 Tomcat 前需要正确安装 JRE(Java Runtime Environment)。 安装可以在 Tomcat 官方网站进行 Tomcat 的下载,目前 Tomcat 的最新开发版本是9.0.x,最新稳定版本8.0.x。在生产环境部署 Tomcat 的话,我们一般使用7.0.x版本。
Tomcat 官方网站: http://tomcat.apache.org/index.html。下载所需的 Tomcat 版本后,对下载文件进行解压,即完成 Tomcat 的安装。 目录结构Tomat 解压后的目录结构如下:
图1:Tomcat 的目录结构 · bin:可执行文件目录 · conf:配置文件目录 · lib:Tomcat的依赖库目录 · logs:日志目录 · temp:临时文件夹 · webapps:默认的应用部署目录 · work:供web应用使用 启动为了启动 Tomcat,可以先设置 CATALINA_HOME 环境变量。CATALINA_HOME 变量用于指定 Tomcat 目录位置,通过以下方式可以设置这个变量: $ export CATALINA_HOME="/Users/lihao/Soft/tomcat9" $ echo $CATALINA_HOME /Users/lihao/Soft/tomcat9 · 1 · 2 · 3 正如上面所述,bin 目录包含了启动脚本,其中包括 startup.sh,可以通过执行该脚本来启动 Tomcat。 $ ./bin/startup.sh Using CATALINA_BASE: /Users/lihao/Soft/tomcat9Using CATALINA_HOME: /Users/lihao/Soft/tomcat9Using CATALINA_TMPDIR: /Users/lihao/Soft/tomcat9/tempUsing JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/HomeUsing CLASSPATH: /Users/lihao/Soft/tomcat9/bin/bootstrap.jar:/Users/lihao/Soft/tomcat9/bin/tomcat-juli.jar Tomcat started.为了验证启动是否成功,打开浏览器,输入http://127.0.0.1:8080,可以看到浏览器输出,这说明Tomcat 已成功启动 。 图2:Tomcat 浏览器展示 如果需要设置 Tomcat 运行参数,可以通过设置 JAVA_OPTS 参数来实现。例如, $ export JAVA_OPTS="-server -Xms1024m -Xmx1024m"$ echo $JAVA_OPTS -server -Xms1024m -Xmx1024m$ ./bin/startup.sh ……Tomcat started. · 1 · 2 · 3 · 4 · 5 · 6 -Xms 表示 Java 初始化堆的大小,-Xms 与 -Xmx 设成一样的值,避免 JVM 反复重新申请内存,导致性能大起大落。-Xmx表示最大 Java 堆的大小,当应用程序需要的内存超出堆的最大值时 JVM 就会提示内存溢出,并导致应用服务崩溃。上面命令设置 初始化堆为1024M,最大堆为1024M。 server.xmlserver.xml 文件是 Tomcat 最重要的服务器配置文件,其文件的结构如下: 图3:server.xml的文件结构 通过 server.xml 文件的结构,可以一窥 Tomcat 总体设计的架构。 请求处理流程Tomcat 处理用户请求的流程图如下:
图4:Tomcat 处理用户请求流程 用户发出请求后,Tomcat 的 Connector 负责接收请求,然后将请求交由 Container 处理,Container 处理请求后,最后由 Connector 返回响应结果给用户。 ConnectorConnector是 Tomcat 的连接器,Connector的作用是接收用户的网络请求,然后将请求封装给 Container 处理。Tomcat 中默认的连接器是 Coyote。
Connector 默认以 BIO(blocking IO,阻塞式IO)运行。可以通过修改设置 Connector 以其他模式运行。 Connector 包括以下几个常用的参数配置: · port:监听的端口号 · address:监听的IP地址,对于拥有多个IP地址的服务器,可以通过此配置设定监听的IP地址 · protocol:使用的协议。默认值是HTTP/1.1 · connectionTimeout:客户请求连接的超时时间 · acceptCount:接受的最大请求数,当排队中的请求数量超出此值时,将会拒绝后面的请求 · maxConnections:最大连接数 · minSpareThreads:最小空闲线程数 · maxThreads:最大线程数 ContainerContainer 的作用是负责处理用户的请求,并把响应结果返回给客户端。 Tomcat 日志Tomcat 的日志主要包括以下几类: · 系统运行日志 · 访问日志 · 应用日志 访问日志可以在server.xml里面对访问日志进行配置: <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> 访问日志的配置包括,日志文件名和前缀和后缀名称,日志的输出格式,日志的输出目录,等等。 Tomcat 部署完成 Web 应用的开发后,可以通过将应用文件夹打成 war 包,并将这个 war 包放到 Tomcat 的 webapps 目录的方式,进行 Web 应用的部署。
打 war 包的命令如下: cd 【应用文件夹名称】 jar cvf【应用文件夹名称】 . 将会生成一个 war 包。将这个 war 放到 webapps 目录,便可以访问这个 Web 应用
|