1.Tomcat简介
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。
2.Tomcat安装
2.1 环境准备
具体环境可通过开发人员来定,这儿给出了本次实验的环境。
链接:https://pan.baidu.com/s/1uOEy... 密码:pt3l
2.2 部署java环境
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
2.3 安装Tomcat
~]# tar -xf apache-tomcat-8.0.27.tar.gz -C /app/
~]# ln -s /app/apache-tomcat-8.0.27 /app/tomcat
~]# echo 'export TOMCAT_HOME=/app/tomcat'>>/etc/profile.d/tomcat.sh
~]# source /etc/profile.d/tomcat.sh
~]# chown -R root.root /app/jdk/ /app/tomcat/
2.4 Tomcat目录介绍
[root@tomcat ~]# cd /app/tomcat/
[root@tomcat tomcat]# tree -L 1
.
├── bin #→用以启动、关闭Tomcat或者其它功能的脚本(.bat文件和.sh文件)
├── conf #→用以配置Tomcat的XML及DTD文件
├── lib #→存放web应用能访问的JAR包
├── LICENSE
├── logs #→Catalina和其它Web应用程序的日志文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp #→临时文件
├── webapps #→Web应用程序根目录
└── work #→用以产生有JSP编译出的Servlet的.java和.class文件
7 directories, 4 files
[root@tomcat tomcat]# cd webapps/
[root@tomcat webapps]# ll
total 20
drwxr-xr-x 14 root root 4096 Oct 5 12:09 docs #→tomcat帮助文档
drwxr-xr-x 6 root root 4096 Oct 5 12:09 examples #→web应用实例
drwxr-xr-x 5 root root 4096 Oct 5 12:09 host-manager #→管理
drwxr-xr-x 5 root root 4096 Oct 5 12:09 manager #→管理
drwxr-xr-x 3 root root 4096 Oct 5 12:09 ROOT #→默认网站根目录
2.5 启动Tomcat
#→启动程序/app/tomcat/bin/startup.sh
#→关闭程序/app/tomcat/bin/shutdown.sh
[root@tomcat ~]# /app/tomcat/bin/startup.sh
Using CATALINA_BASE: /app/tomcat
Using CATALINA_HOME: /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME: /app/jdk
Using CLASSPATH:
/app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat ~]# netstat -lnpt | grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1311/java
tcp6 0 0 :::8009 :::* LISTEN 1311/java
tcp6 0 0 :::8080 :::* LISTEN 1311/java
2.6 访问网站
http://ipaddr:8080/
2.7 日志介绍
[root@tomcat ~]# cd /app/tomcat/logs/
[root@tomcat logs]# ll
total 32
-rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.2018-09-16.log
-rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.out
-rw-r--r-- 1 root root 0 Sep 16 05:49 host-manager.2018-09-16.log
-rw-r--r-- 1 root root 560 Sep 16 17:54 localhost.2018-09-16.log
-rw-r--r-- 1 root root 824 Sep 16 18:02 localhost_access_log.2018-09-16.txt
-rw-r--r-- 1 root root 0 Sep 16 05:49 manager.2018-09-16.log
#-> catalina.out实时日志
[root@tomcat logs]# tail -f catalina.out
16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/docs has finished in 160 ms
16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/examples
16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/examples has finished in 935 ms
16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/host-manager
16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/host-manager has finished in 73 ms
16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/manager
16-Sep-2018 17:55:00.095 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/manager has finished in 19 ms
16-Sep-2018 17:55:00.116 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
16-Sep-2018 17:55:00.194 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
16-Sep-2018 17:55:00.197 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2440 ms
3. Tomcat配置文件
3.1 Tomcat配置文件
[root@tomcat conf]# pwd
/app/tomcat/conf
[root@tomcat conf]# ll -h
total 212K
drwxr-xr-x 3 root root 23 Sep 16 05:49 Catalina
-rw------- 1 root root 13K Sep 28 2015 catalina.policy
-rw------- 1 root root 7.0K Sep 28 2015 catalina.properties
-rw------- 1 root root 1.6K Sep 28 2015 context.xml
-rw------- 1 root root 3.4K Sep 28 2015 logging.properties
-rw------- 1 root root 6.4K Sep 28 2015 server.xml #主配置文件
-rw------- 1 root root 1.9K Sep 16 19:11 tomcat-users.xml #tomcat管理用户配置文件
-rw------- 1 root root 1.9K Sep 28 2015 tomcat-users.xsd
-rw------- 1 root root 164K Sep 28 2015 web.xml
3.2 Tomcat管理
测试功能,生产环境不推荐使用。
Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能,就需要配置管理用户,即配置前面说过的 tomcat-users.xml 。
[root@tomcat ~]# vim /app/tomcat/conf/tomcat-users.xml
…………
#→在此行前加入上面三行
[root@tomcat ~]# /app/tomcat/bin/shutdown.sh
[root@tomcat ~]# /app/tomcat/bin/startup.sh
3.3 Tomcat主配置文件server.xml详解
3.3.1 server.xml组件类别
- 顶级组件:位于整个配置的顶层,如server。
- 容器类组件 :可以包含其它组件的组件,如service、engine、host、context。
- 连接器组件 :连接用户请求至tomcat,如connector。
- 被嵌套类组件:位于一个容器当中,不能包含其他组件,如Valve、logger。
3.3.2 server.xml组件详解
- engine :核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。
- host :类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机。
-context :定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外的属性,如部署方式等。
- connector:接收用户请求,类似于httpd的listen配置监听端口的。
- service(服务):将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine。service内部有两个connector,一个engine。因此,一般情况下一个server内部只有一个service,一个service内部只有一个engine,但一个service内部可以有多个connector。
- server :表示一个运行于JVM中的tomcat实例。
- Valve :阀门,拦截请求并在将其转至对应的webapp前进行某种处理操作,可以用于任何容器中,比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)。
- logger :日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中。
- realm :可以用于任意容器类的组件中,关联一个用户认证库,实现认证和授权。可以关联的认证库有两种:UserDatabaseRealm、MemoryRealm和JDBCRealm。
- UserDatabaseRealm:使用JNDI自定义的用户认证库。
- MemoryRealm:认证信息定义在tomcat-users.xml中。
- JDBCRealm :认证信息定义在数据库中,并通过JDBC连接至数据库中查找认证用户。
3.3.3 配置文件 server.xml 主详解
#元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个元素.并且它不能做为任何元素的子元素.
#
#port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
#Service服务组件
#connector:接收用户请求,类似于httpd的listen配置监听端口。
#port :指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
#address :指定连接器监听的地址,默认为所有地址(即0.0.0.0)。
#protocol :连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
#minProcessors:服务器启动时创建的处理请求的线程数。
#maxProcessors:最大可以创建的处理请求的线程数。
#enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。
#redirectPort :指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
#acceptCount :指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
#connectionTimeout:指定超时的时间数(以毫秒为单位)。
#Engine,核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的。
#Realm表示存放用户名,密码及role的数据库
#Host,表示存放用户名,密码及role的数据库。
#name :指定主机名。
#appBase :应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。
#unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序。
#autoDeploy:在tomcat启动时,是否自动部署。
#xmlValidation :是否启动xml的校验功能,一般xmlValidation="false"。
#xmlNamespaceAware:检测名称空间,一般xmlNamespaceAware="false"。