文章目录
一、Tomcat概述
1.1Tomcat概念
- Tomcat是一款免费、开放源代码的web应用服务器,是Apache软件基金会的一个核心开源项目,属于轻量级应用服务器
- Apache:Apache软件基金会,也就是Apache Software
- Foundation:简称ASF,是专门支持开源软件项目而办的一个非盈利性组织
1.2Tomcat核心组件
通常意义上的web服务器接受请求后,只是单纯地响应静态资源,如HTML文件,图片,文件等,不能在后端进行一定的处理操作,Tomcat是Apache下的一个子项目,它具备web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码servlet,同时将执行的结果以HTML代码的形式写回客户端
- Tomcat由一系列的组件构成,核心组件:
①web容器:完成web服务器的功能HTTP,HTTPS请求的接受和响应
②Servlet容器:由名称为Catalina的脚本来处理Servlet代码(具体的一个任务,从数据库中拿取数据给予前端)
③JSP容器:用于将JSP动态网页翻译成Servlet代码
二、Tomact介绍
2.1Tomact核心组件
①web容器
负责web服务的TCP/IP、HTTP等协议响应、处理
②JSP容器(Java server pages)
- 是一种动态网页开发技术,它是使用JSP标签在HTML网页中插入JAVA代码,标签通常以<%开头,以%>结束。JSP是一种Java servlet,主要用于实现Java web应用程序程序的用户界面部分
- JSP通过网页表单获取用户输入数据,访问数据库及其他数据源,然后动态地创建网页
- JSP:容器内提供了多个以index.jsp为结尾的JAVA前端页面展示,而index.jsp中由很多HTML标签,HTML标签中会嵌套很多Java代码,这些Java代码,最终会被翻译为servlet代码,
③Servlet容器
*动态交互处理,会将JSP传递过来的代码翻译成servlet,由Catalina脚本帮忙处理的servlet代码,主要处理后端逻辑业务(比如与数据库交互、加密、支付宝、人脸识别) - Catalina实际处理的是servlet代码,而servlet代码是由Java编写的
2.2Tomact处理请求过程
- 用户点击网页内容,请求被发送到本机端口8080,被在哪里监听的coyote(Tomcat连接器框架、基础环境),HTTP/1.1connect(连接器,用于对接请求)获得
- 接受请求之后交给container中的engine进行处理,engine(引擎)作为容器运行的动力核心
- 基于引擎支撑,容器中会跑很多host虚拟主机,这些虚拟主机中也会有很多context,此处的context功能可以理解为:将Java前端和Java后端连接的展示的枢纽
- servelet处理完成后会返回context
- context返回engine引擎
- engine返回端口
- 端口最后将页面展现给用户
三、Tomact部署
3.1环境部署
- 关闭防火墙,将安装Tomcat所需要的软件包上传到/opt目录下
[root@localhost ~]# cd /opt
[root@localhost opt]# rz -E
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz rh
[root@localhost opt]# rz -E
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm rh
[root@localhost opt]# systemctl stop firewalld
[root@localhost opt]# systemctl disable firewalld
[root@localhost opt]# setenforce 0
- 安装JDK
[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm
- 查看当前系统环境下Java版本
[root@localhost opt]# java -version
- 设置JDK的环境变量(环境变量脚本目录)
[root@localhost opt]# vim /etc/profile.d/java.sh
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 opt]# source /etc/profile.d/java.sh
- 查看版本
[root@localhost opt]# java -version
3.2安装启动Tomcat
- 解压Apache-Tomcat软件包
[root@localhost opt]# cd /opt //切换到/opt目录下
[root@localhost opt]# tar zxvf apache-tomcat-9.0.16.tar.gz
[root@localhost opt]# mv apache-tomcat-9.0.16 /usr/local/tomcat //将Tomcat移动到/usr/local/tomcat目录下
- 查看目录
cd /usr/local/tomcat/
- 启动Tomcat
①优化管理
[root@localhost tomcat]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@localhost tomcat]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
②开启服务
[root@localhost tomcat]# cd /usr/local/tomcat/bin
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 34035/java
- 查看网页,使用浏览器访问Tomcat主页:http://192.168.27.135:8080
3.3优化Tomcat启动速度
- 生产环境中第一次启动Tomcat可能会发现Tomcat启动很慢,默认情况下可能需要几十秒,此时可以修改JDK参数进行优化。
[root@localhost bin]# vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
117 securerandom.source=file:/dev/urandom // /dev/random和/dev/random都是伪终端,但是/dev/urandom提供的数据流更快
- 重启Tomcat
[root@localhost bin]# ./shutdown.sh
[root@localhost bin]# ./startup.sh
3.4主配置文件
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" //毫秒
redirectPort="8443" /> //SSL重定向/映射443
四、虚拟主机
- 很多公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个Tomcat服务,这样会消耗太多的系统资源,此时,就需要一个Tomcat虚拟主机,例如现在新增两个域名www.sl.com和www.sfp.com,希望通过这两个域名访问到不同的项目内容。
4.1创建sl和sfp项目目录和文件
- 添加地址映射
root@localhost conf]# vim /etc/hosts
192.168.27.135 192.168.27.135 www.sl.com www.sfp.com
- 在/usr/local/tomcat目录下创建项目目录和文件
[root@localhost conf]# mkdir /usr/local/tomcat/webapps/sl
[root@localhost conf]# mkdir /usr/local/tomcat/webapps/sfp
- 在sl项目目录下添加页面
[root@localhost conf]# cd ..
[root@localhost tomcat]# cd webapps/
[root@localhost webapps]# ls
docs examples host-manager manager ROOT sfp sl
[root@localhost webapps]# cd sl/
[root@localhost sl]# vim index.jsp
<h1>this is sl page</h1>
- 在sfp项目目录下添加页面
[root@localhost sl]# cd ..
[root@localhost webapps]# ls
docs examples host-manager manager ROOT sfp sl
[root@localhost webapps]# cd sfp/
[root@localhost sfp]# vim index.jsp
h1>this is sfp page </h1>
4.2修改Tomcat主配置文件
</Host>
165 <Host name="www.sl.com" appBase="webapps" kWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAwar e="false">
166 <context docBase="/usr/local/tomcat/webapps/sl" path="" reloadable="true"/>
167 </Host>
168 <Host name="www.sfp.com" appBase="webapps" kWARs="true" auto Deploy="true" xmlValidation="false" xmlNamespa ceAware="false">
169 <context docBase="/usr/local/tomcat/webapps/sfp" path="" re loadable="true"/>
170 </Host>
171
- 关闭、开启
[root@localhost conf]# shutdown.sh
[root@localhost conf]# startup.sh