tomcat
简介
官网
tomcat.apache.org
tomcat 是由apache官方维护的一款开源软件
tomcat核心组件
Catalina : servlet 容器
Coyote : http 连接器
Jasper : JSP实现,即jsp语言的预处理器
tomcat 使用java语言开发
也就是说tomcat自身就是java 的一个类,只是在java基础上提供了额外功能
在tomcat内部使用了众多组件,组件(java类)之间相互调用实现了,tomcat功能实现,
也可以说是java中被tomcat调用的组件,组件的层级结构应该时被调用的关系.
java虚拟中运行tomcat,而tomcat中运行管理运行的jsp代码
组件
server
主类
每一个server都是一个tomcat运行的一个实例,或者在tomcat中可以运行多个server实例.或者说server就是包含一切的大类,但是是在java虚拟机内部运行,所以在外部依然是以java显示
一个server内部可以拥有多个service
service
将引擎与连接器进行关联
一个service中只能有一个引擎
但是可以拥有多个connector(连接器)
engine
核心组件用于运行,jsp或servlet代码
需结合连接器
connector
连接器,接受用户响应用户请求,处理用户请求交由engine进行,connector仅是做转发处理的组件
连接器可以有多种类型,http,与ajp.
一个引擎可以有多个连接器
但是一个连接器只能对应一个引擎
host
类似与apache中的虚拟主机.
context
把一个路径单独部署为一个java虚拟机中的一个应用程序,或者是应用程序的入口点.
每一个应用程序都称为webapp ,或者每一个web站点都称为一个web应用.
Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。
类似于Apache中的alias
注:每个组件都是使用类实现的.
顶级类组件:server(代表一个tomcat实例)
服务类组件:service
容器类组件:engine(代表一个web container), host, context
连接器组件:connector
http, ssl, ajp(apache jserv protocol)
被嵌套类组件:valve, logger, realm
顶级组件:位于配置层次的顶级,并且彼此间有着严格的对应关系;
连接器:连接客户端(可以是浏览器或Web服务器)请求至Servlet容器,
容器:包含一组其它组件;
被嵌套的组件:位于一个容器当中,但不能包含其它组件;
安装
非RPM包安装
我不知道要怎么形容这种程序提供方式,绿色软件的安装么?
下载,tomcat
官方站点tomcat.apache.org
下载core格式的核心包
下载 java JDK
tar -xvf jdk-8u131-linux-x64.tar.gz
mv jdk1.8.0_131/ jdk
mv jdk /usr/local/
tar -xvf apache-tomcat-8.5.20.tar.gz
mv apache-tomcat-8.5.20 tomcat
mv tomcat/ /usr/local/
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=
JAVAHOME/bin:
JAVA_HOME/jre/bin:
PATHexportCLASSPATH=.
CLASSPATH:
JAVAHOME/lib:
JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/usr/local/tomcat
. /etc/profile
java -version
运行
[root@192 bin]# chown -R tomcat.tomcat /usr/local/jdk
[root@192 bin]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@192 bin]# cd /usr/local/tomcat/
[root@192 tomcat]# cd bin/
[root@192 bin]# ll startup.sh
-rwxr-x—. 1 tomcat tomcat 1904 8月 3 05:36 startup.sh
[root@192 bin]# ./startu
rpm包安装
配置epel源
yum install epel-release
yum list all |grep java-1.8
yum install -y java-1.8.0-openjdk
安装后文件结构
[root@localhost java]# ll /usr/java
总用量 0
lrwxrwxrwx. 1 root root 16 8月 31 22:02 default -> /usr/java/latest
drwxr-xr-x. 9 root root 268 8月 31 22:02 jdk1.8.0_144
lrwxrwxrwx. 1 root root 22 8月 31 22:02 latest -> /usr/java/jdk1.8.0_144
其中两个软连接为多版本并存时的,解决办法,default连接的是 默认的版本 latest是最新版本,但是需要在变量设定时手动指定路径.即在设置变量时JAVA_HOME的值
yum install -y java-1.8.0-openjdk-devel tomcat-lib tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp tomcat
运行架构
通过内部的web server (http connector)来接收用户端发来的消息
使用专门的web server 作为前端接收客户请求处理的应用程序,即使用反向代理.
日志
/var/local/tomcat/logs/catalina.out
启动日志
tomcat的目录结构
适用于 手动安装的tomcat软件
bin:脚本,及启动时用到的类;
conf:配置文件目录;
lib:库文件,Java类库,jar;
logs:日志文件目录;
temp:临时文件目录;
webapps:webapp的默认目录;
work:工作目录;编译过的字节码保存的位置
网站介绍
目录介绍
/: webapps的根目录
index.jsp:主页;
WEB-INF/:当前webapp的私有资源路径;通常用于存储当前webapp的web.xml和context.xml配置文件;
META-INF/:类似于WEB-INF/;
classes/:类文件,当前webapp所提供的类;没有被打包为jar格式的文件
lib/:类文件,当前webapp所提供的类,被打包为jar格式;
webapp归档格式:
.war:webapp
.jar:EJB的类打包文件;
.rar:资源适配器类打包文件;
.ear:企业级webapp;
对webapp的操作
即对网站进行操作
部署
即将网站发布出去的操作,tomcat只用经过部署,才能被访问,或者说被jvm运行
或者说使网站能被访问的行为称为部署
自动部署
在加入了新的页面在不发生意外的情况下,会自动加载.自动加载被成为自动部署
手动部署:
冷部署:把webapp复制到指定的位置,而后才启动tomcat;
热部署:在不停止tomcat的前提下进行部署;
部署工具:manager app (web)、ant脚本、tcd(tomcat client deployer)等
使用manager app进行部署
反部署
undeploy:反部署,停止webapp,并从tomcat实例上卸载webapp;
停止
stop:停止webapp,不再向用户提供服务;其类依然在jvm上;
启动
start:启动处于停止状态的webapp;
重新部署
redeploy:重新部署;先停止在启动
配置文件
主配置文件 : /usr/local/tomcat/conf/server.xml
基本格式
… …
… …
… …
<service >
</service>
… …
… …
<service >
</service>
组件de 定义
格式 <组件名称 键=值 [键=值] />
类定义
server:
Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。
port=<端口号>
设置监听的端口号
shutdown=<字符串>
设定关闭服务的命令,使用telnet;连接
service
一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情下只为一个service指派一个server。
connectors
连接器,负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序,通常指的是接收客户发来请求的位置及服务器端分配的端口。默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接器。
定义连接器时可以配置的属性非常多,但通常定义HTTP连接器时必须定义的属性只有“port”,定义AJP连接器时必须定义的属性只有”protocol”,因为默认的协议为HTTP。以下为常用属性的说明:
port=<端口号>
设置监听的端口号
protocol=”<连接协议>”
支持协议为 HTTP/1.1 AJP/1.3
AJP使用二进制编码,所以效率照http提高
connectionTimeout=”20000”
1) address:指定连接器监听的地址,默认为所有地址,即0.0.0.0;
2) maxThreads:支持的最大并发连接数,默认为200;
3) port:监听的端口,默认为0;
4) protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3;
5) redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;
6) connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;
7) enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true;
8) acceptCount:设置等待队列的最大长度;通常在tomcat所有处理线程均处于繁忙状态时,新发来的请求将被放置于等待队列中;
下面是一个定义了多个属性的SSL连接器:
DocumentRoot “/var/www/html”
建立虚拟主机配置文件
vim /etc/httpd/conf.d/vhost.conf