1.Tocmcat部署

文章详细介绍了如何部署和配置Tomcat,包括安装JDK,设置系统服务,优化Tomcat启动速度,以及部署虚拟主机和实现多实例。内容涵盖了Tomcat的组件结构,请求处理流程,以及配置文件的修改,如修改`server.xml`来创建不同域名的Web应用。此外,还讲解了如何通过修改端口避免冲突,实现多个Tomcat实例的并行运行。
摘要由CSDN通过智能技术生成

Tomcat部署

  • Tomcat安装部署
  • 虚拟主机配置
  • Tomcat优化

介绍

  • 免费的、开放源代码的Web应用服务器
  • Apache软件基金会(Apache Software Foundation)Jakarta项目中的- -个核心项目
  • 由Apache、Sun和一些公司及个人共同开发而成
  • 深受Java爱好者的喜爱,并得到部分软件开发商的认可
  • 目前比较流行的Web应用服务器

在这里插入图片描述

  • Tomcat由一系列的组件构成,其中核心的组件有三个:

    • Web容器:完成Web服务器的功能。
    • Servlet 容器:名字为catalina, 用于处理Servlet 代码。
    • JSP容器:用于将JSP动态网页翻译成Servlet 代码。
  • 因此Tomcat 是Web应用服务器,也是一个Servlet/JSP 容器。Tomeat 作为Servlet 容器,负贵处理客户的. jsp动态页面的请求,把请求传送给servlet, 并将servlet的响应传送回给客户。

  • 什么是servlet?

    • Servlet是Java Servlet 的简称,可以理解为是一-个服务连接器,是用Java 编写的服务器端程序,具有独立于平台和协议的特性,
      简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,而实现动态网页的创建。
  • 什么是JSP?

    • JSP 全称Java Server Pages, 是一种动态网页开发技术。它使用JSP 标签在HTML网页中插入Java 代码。标签通常以<号开头,以各>结束。
    • JSP是一种Java servlet, 主要用于实现Java web应用程序的用户界面部分
    • JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
  • Tomcat功能组件结构:

  • Tomcat的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责处理请求的容器Container,其中连接器和容器相辅相成,一起构成了基本的web服务Service。每个Tomcat服务器可以管理多个Service

  • Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。

  • Container:负责对内处理业务逻辑。其内部由Engine、 Host、Context和Wrapper四个容器组成,用于管理和调用_Servlet 相关逻辑。

  • Service:对外提供的Web服务。主要包含Connector 和Container 两个核心组件,以及其他功能组件。Tomcat 可以管理多个Service,且各service 之间相互独立。

  • Container结构分析:

  • 每个Service 会包含一个Container 容器。在Container 内部包含了4个子容器:

  • 4个子容器的作用分别是:

    • Engipe: 引擎,用来管理多个虚拟主机,一个Service 最多只能有一个Engine;
    • Host:代表一个虚拟主机,也可以叫站点,通过配置Host 就可以添加站点:
    • Context: 代表-一 个Web. 应用,包含多个Servlet封装器:
    • Wrapper: 封装器,容器的最底层。每一Wrapper 封装着-一个Servlet, 负贵对象实例的创建、执行和销毁功能。
  • Engine、Host.、Context和wrapper, 这四个容器之间属于父子关系。容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个Web应用。每个Web应用会有多个Servlet 封装器。

  • Tomcat请求过程:,

    • 用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的Connector获得;
    • Connector 把该请求交给它所在的Service 的Engine. (Container) 来处理,并等待Engine. 的回应:
    • 请求在Engine. Host. Context 和Wrapper这四个容器之间层层调用,最后在Servlet’ 中执行对应的业务逻辑、数据存储等。
    • 执行完之后的请求响应在Context、 Host、Engine 容器之间层层返回,最后返回给Connector, 并通过Connector返回给客户端。

在这里插入图片描述

详解:
假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp 
1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得 
2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应 
3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host 
4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机) 
5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context 
6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理) 
7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet 
8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类 
9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法 
10)Context把执行完了之后的HttpServletResponse对象返回给Host 
11)Host把HttpServletResponse对象返回给Engine 
12)Engine把HttpServletResponse对象返回给Connector 
13)Connector把HttpServletResponse对象返回给客户browser

tomcat端口

  • tcp 8080 负责处理http请求连接
  • tcp 8443 负责处理https请求连接
  • tcp 8005 关闭tomcat服务使用
  • tcp 8009 AJP协议端口,与apache连接使用,apache可通过AJP协议访问tomcat的8009端口

部署Tomcat

systemctl stop firewalld
systemctl disable firewalld
setenforce 0


cd /opt/
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm    ##需要用到的软件包
安装jdk
cd /opt/

rpm -ivh jdk-8u201-linux-x64.rpm                 #安装一个新的RPM软件包
rpm -qpl jdk-8u201-linux-x64.rpm                  #查询指定软件包的文件列表
java -version                                    #查看安装的java版本信息

 cd /usr/java/jdk1.8.0_201-amd64/             ##jdk安装目录
  • bin目录:包含jdk运行所需要程序和命令
  • jre目录中的bin:jre运行所需要的程序和命令
  • lib目录:包含java的库文件
##设置jdk环境变量


cd /etc/profile.d/

vim java.sh

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile.d/java.sh          ##启动java.sh脚本

java -version
##验证java是否安装成功

vim hello.java

public class hello{
    public static void mian (String[] args) {
        System.out.println("hello");
    }
}

javac hello.java 
安装Tomcat
cd /opt/
tar xf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat

cd /usr/local/tomcat/bin

./startup.sh                           ##后台运行tomcat
./shutdown.sh                          ##后台关闭tomcat

./catalina.sh start                     ##后台运行tomcat

./catalina.sh run                       ##前台运行romcat,会占用窗口

netstat -lntp | grep :8080
添加tomcat系统服务
vim /usr/lib/systemd/system/tomcat.service

[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_201-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target



systemctl daemon-reload       #重新加载
systemctl start tomcat    #启动tomcat服务
netstat -lntp | grep :8080

优化tomcat启动速度

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

--117行--修改
securerandom.source=file:/dev/urandom  

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

/usr/local/tomcat/中主要目录说明:

目录名称功能作用
bin存放启动和关闭 tomcat的脚本文件,如catalina.sh、startup.sh、shutdown.sh
conf存放 Tomcat 服务器的各种配置文件,如主配置文件 server.xml 和 应用默认的部署描述文件 web.xml
lib存放 Tomcat 运行需要的库文件的 jar 包,一般不作任何改动
logs存放 Tomcat 执行时的日志
temp存放 Tomcat 运行时产生的文件
webapps存放 Tomcat 默认的 Web 应用项目资源的目录
workTomcat 的工作目录,存放 Web 应用代码生成和编译文件

Tomcat部署虚拟主机

##创建不同域名的目录和文件

cd /usr/local/tomcat/webapps/


mkdir kgc
mkdir benet

echo "this is kgc  tomcat web\!" > ./kgc/index.jsp 
echo "this is benet  tomcat web\!" > ./benet/index.jsp 

##修改tomcat 主配置文件   server.xml

cd /usr/local/tomcat/conf
vim 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主机名
appBaseTomcat程序工作目录,即存放web应用程序的目录;相对路径为webapps,绝对路径为 /usr/local/tomcat/webapps
unpackWARs在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true
autoDeploy在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true
xmlValidation是否验证xml文件执行有效性检验的标志
xmlNamespaceAware是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验
Context docBase相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径
path相对于Web服务器根路径而言的URI;如果为空"",则表示为此webapp的根路径 /
reloadable是否允许重新加载此context相关的Web应用程序的类;默认为false
systemctl stop tomcat
systemctl start tomcat
netstat -lntp | grep :8080

tomcat多实例部署

systemctl disable --now firewalld
setenforce 0


##采用另外一种方法安装jdk
cd /opt/
apache-tomcat-9.0.16.tar.gz  jdk-8u91-linux-x64.tar.gz

tar xf apache-tomcat-9.0.16.tar.gz
tar xf jdk-8u91-linux-x64.tar.gz


mv jdk1.8.0_91 /usr/local/

mkdir /usr/local/tomcat
cp -r apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -r apache-tomcat-9.0.16 /usr/local/tomcat/tomcat2
##修改java中的配置文件

vim /etc/profile


==在最后添加==

export JAVA_HOME=/usr/local/jjdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile
##配置tomcat环境变量

vim /etc/profile.d/tomcat.sh


#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2


source /etc/profile.d/tomcat.sh
##修改  tomcat2  中的server.xml文件,要求各tomcat实例配置不能有重复的端口号

cd /usr/local/tomcat/tomcat2/conf
vim server.xml


#22行,修改Server prot,默认为8005 -> 修改为8006
<Server port="8006" shutdown="SHUTDOWN">		


#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8081" protocol="HTTP/1.1"		



#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	

##修改  tomcat1  实例中的   startup.sh   文件

vim /usr/local/tomcat/tomcat1/bin/startup.sh 


# ----------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------
##添加以下内容

export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

##修改  tomcat1  实例中的  shutdown.sh  文件

vim /usr/local/tomcat/tomcat1/bin/startup.sh 


# ----------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------
##添加以下内容

export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
##修改  tomcat2  实例中的  startup.sh  文件

vim /usr/local/tomcat/tomcat2/bin/startup.sh 


# ----------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------
##添加以下内容

export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
##修改  tomcat2  实例中的  shutdown.sh  文件

vim /usr/local/tomcat/tomcat2/bin/startup.sh 


# ----------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------
##添加以下内容

export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
##启动两个服务

/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜海赤竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值