共计 6994 个字符,预计需要花费 18 分钟才能阅读完成。
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。通过适当的配置,Apache 为 HTML 页面服务,Tomcat 运行 JSP 页面和 Servlet,从而实现 web 服务器与应用服务的分离。本文主要描述了在 Linux 6 下安装 Tomcat 8。
1、本文环境介绍:
os版本:CentOS6.5 64bit
jdk 版本:1.7.0_80
tomcat 版本:8.0.29
apache 版本:2.4.9
apache 服务器 IP:192.168.21.10/24
所有安装文件可到 apache 以及 Oracle 官网下载
2、安装 Java jdk
# cd /usr/local/src
# chmod u+x jdk-7u80-linux-x64.rpm
# rpm -Uvh jdk-7u80-linux-x64.rpm
# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile.d/java.sh
# env|grep JAVA
JAVA_HOME=/usr/java/latest
# ls -hltr /usr/java/
total 4.0K
drwxr-xr-x. 8 root root 4.0K Nov 30 16:56 jdk1.7.0_80
lrwxrwxrwx. 1 root root 21 Nov 30 16:56 latest -> /usr/java/jdk1.7.0_80
lrwxrwxrwx. 1 root root 16 Nov 30 16:56 default -> /usr/java/latest
3、安装及测试 tomcat
# tar -xvf apache-tomcat-8.0.29.tar.gz -C /usr/local
# ln -sv /usr/local/apache-tomcat-8.0.29 /usr/local/tomcat
`/usr/local/tomcat'-> `/usr/local/apache-tomcat-8.0.29'
# vi /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
# source /etc/profile.d/tomcat.sh
# $CATALINA_HOME/bin/startup.sh ### 也可以使用 catalina.sh 脚本启动
Using CATALINA_BASE: /usr/local/tomcat --Auhtor : Leshami
Using CATALINA_HOME: /usr/local/tomcat --Blog : http://blog.csdn.net/leshami
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
# netstat -nltp|grep 80 ###tomcat 缺省端口为 8080,ajp 为 8089,shutdown 端口为 8005
tcp 0 0 :::8080 :::* LISTEN 2150/java
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2150/java
tcp 0 0 :::8009 :::* LISTEN 2150/java
# catalina.sh version
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.29
Server built: Nov 20 2015 09:18:00 UTC
Server number: 8.0.29.0
OS Name: Linux
OS Version: 2.6.32-431.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_80-b15
JVM Vendor: Oracle Corporation
# curl http://localhost:8080/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/8.0.29</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
...........
# catalina.sh stop
4、配置 tomcat 为系统服务
# vi /etc/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
exec $CATALINA_HOME/bin/catalina.sh $*
# service tomcat start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
# service tomcat stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
# chkconfig --add tomcat
# chkconfig tomcat on
5、tomcat 相关配置文件
server.xml:核心配置文件
context.xml:每个 webapp 都有其配置文件,这些配置文件通常位于 webapp 应用程序目录下的 WEB-INF 目录中,用于定义会话管理器、JDBC;此配置文件用于为所有的 webapp 提供默认配置;web.xml:每个 webapp 部署之后才能被访问;此文件则用于为所有 webapp 提供默认部署方式的配置;tomcat-users.xml:用户认证账号配置文件;catalina.policy:当使用 -security 启动 tomcat 实例时会读取此配置文件来其安全运行策略;catalina.properties:Java 属性的定义文件,用���设定类加载器路径,以及一些 JVM 性能调整的相关参数;logging.properties:日志相关的配置信息;
6、tomcat 架构图
tomcat 组件由 java 类实现;有些组件的实现方式不止一种;有些组件还要嵌套别的组件;每个组件在通过指定的类型实现时需要传递一些属性;顶级类组件:server(代表一个 tomcat 实例);位于配置层次的顶级,并且彼此间有着严格的对应关系;服务类组件:service(将连接器关联至内部的 engine)容器类组件:engine(代表一个 web container),host,context
连接器组件:connector http, https, ajp(apache jserv procotol)连接客户端 (可以是浏览器或 Web 服务器) 请求至 Servlet 容器
被嵌套类组件:valve, logger, realm, ...位于一个容器当中,但不能包含其它组件;主配置文件按以下结构组成:<Server>
<Service>
<Connector />
...
<Engine>
<Host>
<Context> </Context>
...
</Host>
...
</Engine>
</Service>
...
</server>
context 定义示例:<Host name="www.ycdata.net" appBase="/website"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="webapps" reloadable="true" />
</Host>
7、各常见组件描述:
服务器(server):Tomcat 的一个实例,这是一个顶级组件,通常一个 JVM 只能包含一个 Tomcat 实例;一台物理服务器上可以在启动多个 JVM 的情况下在每一个 JVM 中启动一个 Tomcat 实例,每个实例分属于一个独立的管理端口。服务(service):一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器;给服务命名可以方便管理员在日志文件中识别不同服务产生的日志;一个 server 可以包含多个 service 组件,但通常情下只为一个 service 指派一个 server。连接器(connectors):连接器类组件,负责连接客户端 (可以是浏览器或 Web 服务器) 请求至 Servlet 容器内的 Web 应用程序;通常指的是接收客户发来请求的位置及服务器端分配的端口;默认端口通常是 HTTP 协议的8080,管理员也可以根据自己的需要改变此端口;一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于 HTTP/1.1的 Coyote。同时,Tomcat 也支持 AJP、JServ 和 JK2 连接器。引擎(Engine):容器类组件,引擎通是指处理请求的 Servlet 引擎组件,即 Catalina Servlet 引擎;它检查每一个请求的 HTTP 首部信息以辨别此请求应该发往哪个 host 或context,并将请求处理后的结果返回的相应的客户端。严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。如果 Tomcat 被配置成为独立服务器,默认引擎就是已经定义好的引擎。而如果 Tomcat 被配置为 Apache Web 服务器的提供 Servlet 功能的后端,默认引擎将被忽略,因为 Web 服务器自身就能确定将用户请求发往何处。一个引擎可以包含多个 host 组件。主机(Host):主机组件类似于 Apache 中的虚拟主机,但在 Tomcat 中只支持基于 FQDN 的“虚拟主机”。一个引擎至少要包含一个主机组件。上下文(Context):Context组件是最内层次的组件,它表示 Web 应用程序本身。配置一个 Context 最主要的是指定 Web 应用程序的根目录,以便 Servlet 容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。被嵌套类 (nested) 组件:这类组件通常包含于容器类组件中以提供具有管理功能的服务,它们不能包含其它组件,但有些却可以由不同层次的容器各自配置。阀门(Valve):用来拦截请求并在将其转至目标之前进行某种处理操作,类似于 Servlet 规范中定义的过滤器。Valve 可以定义在任何容器类的组件中。Valve 常被用来记录客户端请求、客户端 IP 地址和服务器等信息,这种处理技术通常被称作请求转储(requestdumping)。请求转储 valve 记录请求客户端请求数据包中的 HTTP 首部信息和 cookie 信息文件中,响应转储 valve 则记录响应数据包首部信息和 cookie 信息至文件中。日志记录器(Logger):用于记录组件内部的状态信息,可被用于除 Context 之外的任何容器中。日志记录的功能可被继承,因此,一个引擎级别的 Logger 将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的 Logger 组件。领域(Realm):用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过 Realm 来实现。Realm 的认证可以基于文本文件、数据库表、LDAP 服务等来实现。Realm 的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm 可以被其所在组件的子组件继承,也可以被子组件中定义的 Realm 所覆盖。
8、Tomcat 目录结构
* bin - Only the following files:
* setenv.sh (*nix) or setenv.bat (Windows),
* tomcat-juli.jar
The setenv scripts were described above. The tomcat-juli library
is documented in the Logging chapter in the User Guide.
* conf - Server configuration files (including server.xml)
* lib - Libraries and classes, as explained below
* logs - Log and output files
* webapps - Automatically loaded web applications
* work - Temporary working directories for web applications
* temp - Directory used by the JVM for temporary files (java.io.tmpdir)
更多 Tomcat 相关教程见以下内容:
CentOS 6.6 下安装配置 Tomcat 环境 http://www.linuxidc.com/Linux/2015-08/122234.htm
RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目 http://www.linuxidc.com/Linux/2015-02/113528.htm
Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签) http://www.linuxidc.com/Linux/2015-02/113062.htm
Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm
Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm
CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm
CentOS 6.5 下安装 Tomcat http://www.linuxidc.com/Linux/2015-01/111415.htm
Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130293.htm