Tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
Tomcat核心组件
-
web容器
web服务器 -
Servlet容器
名为catalina,处理Servlet代码 -
JSP容器
将JSP动态网页翻译成Servlet代码
Tomcat处理请求的过程
-
请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/11.1Connector获得。
-
Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应。
-
Engine获得请求localhost/yy/index.JSP匹配它所拥有的所有虚拟主机Host。
-
Engine匹配到名为localhost的Host。即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机
-
localhost Host获得请求/yy/index.JSP,匹配它所拥有的所有Context。
-
Host匹配到路径为/yy的Context。如果匹配不到,就把该请求交给路径名为Context去处理。
-
path=" /yy"的Context获得请求/index.JSP, 在它的mapping table中寻找对应的Servlet。
-
Context匹配到URL PATTERN为*.JSP的Servlet,对应于JSPServlet类。
-
构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JSPServlet的doGet()或doPost()方法。
-
Context把执行完了之后的HttpServletResponse对象返回给Host.
-
Host把HttpServletResponse对象返回给Engine。
-
Engine把HttpServletResponse对象返回给Connector.
-
Connector把HttpServletResponse对象返回给客户browser。
Tomcat目录结构
目录 | 介绍 |
---|---|
bin | Tomcat脚本文件 |
conf | 各种配置文件 |
lib | Tomcat服务器的jar包 |
logs | Tomcat日志 |
temp | Tomcat运行时产生的文件 |
webapps | 项目资源的目录 |
work | Tomcat工作目录 |
JDK介绍
- JDK是Java语言的软件开发工具包
- JDK是Tomcat运行的必要环境
- 根据计算机硬件配置,选择安装包
Tomcat安装部署
准备安装包 解压安装 先安装JDK环境
[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm
[root@localhost java]# cd /usr/java/
[root@localhost java]# ls
default jdk1.8.0_201-amd64 latest
[root@localhost java]# cd jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile #修改环境变量加入三行
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile
[root@localhost jdk1.8.0_201-amd64]# java -version #查看java 环境
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
[root@localhost opt]# tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local #安装TOMCAT
[root@localhost opt]# cd /usr/local/
[root@localhost local]# mv apache-tomcat-9.0.16 tomcat
[root@localhost local]# ln -s /usr/local/tomcat/bin/startup.sh /usr/bin #对启动 关闭 脚本做软连接
[root@localhost local]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin
[root@localhost local]# setenforce 0
[root@localhost local]# iptables -F
[root@localhost local]# startup.sh #启动服务
打开浏览器访问主页测试
优化软件启动速度
[root@localhost local]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security
[root@localhost security]# vim java.security
securerandom.source=file:/dev/urandom #将random修改为urandom
[root@localhost security]# startup.sh
创建虚拟主机
创建站点文件夹和文件
[root@localhost security]# cd /usr/local/tomcat/webapps
[root@localhost webapps]# mkdir aaa bbb
[root@localhost webapps]# vim aaa/index.jsp
<h1>aaa</h1>
[root@localhost webapps]# vim bbb/index.jsp
<h1>bbb</h1>
修改Tomcat主配置文件
安装DNS服务,添加两个解析地址
[root@localhost webapps]# vim /usr/local/tomcat9/conf/server.xml
</Host> #添加
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Host name="www.aaa.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat9/webapps/aaa" path="" reloadable="true"/>
</Host>
<Host name="www.bbb.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat9/webapps/bbb" path="" reloadable="true"/>
</Host> #添加
</Engine>
</Service>
</Server>
[root@localhost webapps]# shutdown.sh
[root@localhost webapps]# startup.sh