Tomcat
1、tomcat
1.1 概念
tomcat和php一样,都是用来处理动态页面的
tomcat’也可以作为web应用服务器,开源的。
1.2 处理的后缀名
1.2.1 php: .php
1.2.2 tomcat :.jsp
1.2.3 nginx: .html
tomcat是用java代码写的程序,运行的是java的web应用程序
1.3 特点和功能:
1.3.1 servlet容器:执行java servlet,是一种服务端的java程序,用来处理客户端的http请求,以及响应
1.3.2 jsp容器,javaserver page,这是一个动态页面技术,可以在html的页面里面嵌入java代码。
1.3.3 自身也是一个http服务器
1.3.4 tomcat是一个轻量级的动态页面处理程序,高并发场景不适用,
tomcat主要功能:优化、tomcat自身的优化,以及系统的内核优化,jvm优化。
2、servlet
2.1 定义:java语言中用来开发web应用程序的关键组件
2.2 功能:处理http请求,生产动态内容以及响应客户端的请求(请求-----响应)
处理java的业务逻辑、进行会话管理(保持用户的状态信息,购物车同步、用户登录等等)
转发nginx的动态请求到数据库
3、jsp
3.1 定义:web应用程序的界面(这个界面的语言是用java实现的)是以.jsp为结尾的文件(如:index.jsp)
4、tomcat的组件
4.1 connector
负责对外接收和响应请求,他是tomcat与客户端沟通的枢纽,监听端口、接收外界请求(端口:默认8080)。接收到了请求之后,传递给其他组件进行处理,处理完成之后回到connector,再响应给客户端
4.2 container
负责处理业务逻辑,由engine
、host
、context
、wrapper
四个功能组成
engine
:用来管理多个虚拟主机,一个service只能有一个engine。
host
:一个host就是一个主机,也可以叫站点,通过配置host,可以添加多个站点
context
:一个contex代表一个web应用
wrapper
:封装器,负责处理最底层的逻辑
4.3 service
对外提供外部服务,包含connector
和container
tomcat
可以有多个service
,每个service
之间互相是独立的。
5、tomcat工作流程图
6、tomcat安装流程
主机tomcat-5:192.68.100.15
systemctl stop firewalld
setenforce 0
cd /opt
拖java包 #tomcat依赖于java环境,先装jdk安装包
拖tomcat包
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
# 查看java环境
# openjdk version "1.8.0_181"
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
wq!
source /etc/profile.d/java.sh
java -version
# java -version "1.8.0_201"
tar -xf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 tomcat
# 修改安装包名称为tomcat
mv tomcat /usr/local
# 修改tomcat路径为/usr/local
cd /usr/local/tomcat/bin
./startup.sh
netstat -antp | grep 8080
# 查看端口是否开启
页面访问tomcat-5ip:192.168.100.15:8080
# 需要加上端口访问
7、tomcat目录的作用
bin
:存放启动和关闭tomcat脚本的文件,startup.sh shutdown.sh
conf
:存放tomcat的主配置文件,server.xml主配置文件
contex.xml
:host的默认配置信息
tomcat-user.xml
:登录是认证用户和密码的相关信息,manager文件必须要赋权修改后才能打开
lib
:tomcat运行时需要的jar包,一般不动。
logs
:日志文件,catalina.out 主日志文件
temp
:存放tomcat运行时生产的文件
webapps
:部署web应用的目录,类似于nginx的html
8、打开manager app
安装tomcat,页面访问tomcat的ip地址,页面出现manage app,点击manager app出现403,需要赋权修改后才能打开
如何打开manager app?
cd /usr/local/tomcat/webapps/manager/META-INF
# 上述manager目录对应manager app页面
vim context.xml
# 修改以<Context 开头,以</Context>结尾中的allow,修改如下
allow=".*" />
wq!
cd /usr/local/tomcat/conf
vim tomcat-users.xml
# 在以<tomcat-user开头,以version="1.0">结尾的下面添加
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
wq!
cd /usr/local/tomcat/bin
./shutdown.sh
./startup.sh
netstat -antp | grep 8080
#页面访问192.168.100.15:8080,点击manager app模块
#用户名:tomcat和密码:tomcat
配置tomcat的虚拟主机
1.创建 kgc 和 benet 项目目录和文件
mkdir /usr/local/tomcat/webapps/kgc
mkdir /usr/local/tomcat/webapps/benet
echo "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp
echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp
2.修改 Tomcat 主配置文件 server.xml
vim /usr/local/tomcat/conf/server.xml
#删除
#148 <Host name="localhost" appBase="webapps"
#149 unpackWARs="true" autoDeploy="true">
---------------------Tomcat 虚拟主机配置-------------------------
很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时, 就需要使用到 Tomcat 虚拟主机。
例如现在新增两个域名 www.kgc.com 和 www.benet.com, 希望通过这两个域名访问到不同的项目内容。
1.创建 kgc 和 benet 项目目录和文件
mkdir /usr/local/tomcat/webapps/kgc
mkdir /usr/local/tomcat/webapps/benet
echo "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp
echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp
2.修改 Tomcat 主配置文件 server.xml
vim /usr/local/tomcat/conf/server.xml
--165行前--插入
<Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/kgc" path="" reloadable="true" />
</Host>
<Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/benet" path="" reloadable="true" />
</Host>
----------------------------------------------------------------------------------------------------------
Host name:主机名
appBase:Tomcat程序工作目录,即存放web应用程序的目录;相对路径为webapps,绝对路径为 /usr/local/tomcat/webapps
unpackWARs:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true
xmlValidation:是否验证xml文件执行有效性检验的标志
xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径 / ;
reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false
命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径 / ;
reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false