Tomcat部署及优化

Tomcat部署及优化

一、Tomcat概述

1、Tomcat介绍

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

2、Tomcat核心组件

  • Web 容器:完成 Web 服务器的功能。
  • Servlet 容器:名字为 catalina,用于处理 Servlet 代码。
  • JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码。

3、Tomcat请求处理

  • 用户在浏览器中输入网址 localhost:8080/test/index.jsp,请求被发送到本机端口 8080, 被在那里监听的 Coyote HTTP/1.1 Connector 获得;
  • Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待Engine 的回应;
  • Engine 获得请求 localhost/test/index.jsp,匹配所有的虚拟主机 Host;
  • Engine 匹配到名为 localhost 的 Host(即使匹配不到也把请求交给该 Host 处理,因为该 Host 被定义为该 Engine 的默认主机) , 名为 localhost 的 Host 获得请求/test/index.jsp,匹配它所拥有的所有 Context。Host 匹配到路径为/test 的 Context(如果匹配不到就把该请求交给路径名为" "的 Context 去处理);
  • path="/test"的 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部署

1.8080端口 - 这是Tomcat默认用来监听HTTP请求的端口。如果一台机器上运行着多个服务,并且标准的HTTP端口80被其他服务占用,那么8080就作为一个常见的备用端口。

2.8443端口 - 这是Tomcat默认用来处理HTTPS请求的端口。HTTPS提供了加密的传输层安全(TLS或SSL),这比HTTP更加安全,适合处理敏感信息。

3.8005端口 - 这个端口主要用于Tomcat的管理操作,如启动、停止或重启Tomcat实例。通常,这个端口用于远程管理操作,但需要注意的是,为了安全起见,应该限制对这个端口的访问。

4.8009端口 - 这是AJP(Apache JServ Protocol)的默认端口。AJP是一个专为Apache HTTP服务器和Tomcat设计的高效通信协议,用于在两者之间传递HTTP请求和响应。AJP相比于标准的HTTP协议,能够提供更快的性能,尤其是在高并发的情况下。

实验报告

资源列表

操作系统 配置 主机 IP
CentOS7.3.1611 2C4G tomcat 192.168.72.154

基础环境

  • 关闭防火墙
python 复制代码
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
python 复制代码
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
python 复制代码
hostnamectl set-hostname tomcat
  • 上传软件包
python 复制代码
[root@bogon ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.8.tar.gz  jdk-8u102-linux-x64.rpm

一、安装JDK

python 复制代码
[root@bogon ~]# rpm -ivh jdk-8u102-linux-x64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk1.8.0_102-2000:1.8.0_102-fcs  ################################# [100%]
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...
[root@bogon ~]# ls /usr/java/
default  jdk1.8.0_102  latest
[root@bogon ~]# ls /usr/java/jdk1.8.0_102/
bin        db       javafx-src.zip  lib      man          release  THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT  include  jre             LICENSE  README.html  src.zip  THIRDPARTYLICENSEREADME.txt

1、配置环境变量

python 复制代码
[root@bogon ~]# ls /etc/profile
/etc/profile

# 设置 jdk 的环境变量
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_102' >> /etc/profile
echo 'export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile

# 刷新环境变量
[root@bogon ~]# source /etc/profile

# 查看jdk 版本号
[root@bogon ~]# java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

二、安装启动Tomcat

1、安装 Tomcat 服务

python 复制代码
# 从官网上下载
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz

# 提前上传包
[root@bogon ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.8.tar.gz  jdk-8u102-linux-x64.rpm 
[root@bogon ~]# tar zxf apache-tomcat-9.0.8.tar.gz 
[root@bogon ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.8  apache-tomcat-9.0.8.tar.gz  jdk-8u102-linux-x64.rpm
[root@bogon ~]# mv apache-tomcat-9.0.8 /usr/local/tomcat
[root@bogon ~]# ls /usr/local/tomcat/
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

2、启动 Tomcat 服务

python 复制代码
[root@bogon ~]# /usr/local/tomcat/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_102
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@bogon ~]# ss -nlpt | grep 8080
LISTEN     0      100       [::]:8080                  [::]:*                   users:(("java",pid=2080,fd=48))

# 浏览器访问 192.168.72.154:8080

三、虚拟主机配置

1、创建 www 和 bbs 项目目录和文件

python 复制代码
mkdir /usr/local/tomcat/webapps/www
echo "This is www page\!"> /usr/local/tomcat/webapps/www/index.jsp
mkdir /usr/local/tomcat/webapps/bbs
echo "This is bbs page\!"> /usr/local/tomcat/webapps/bbs/index.jsp

2、修改 Tomcat 主配置文件

python 复制代码
[root@bogon ~]# vi /usr/local/tomcat/conf/server.xml
<Host name="www.test.com" appBase="/usr/local/tomcat/webapps"
 unpackWARs="true" autoDeploy="true" xmlValidation="false"
 xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/www" path="" reloadable="true" />
</Host>
<Host name="bbs.test.com" appBase="/usr/local/tomcat/webapps"
 unpackWARs="true" autoDeploy="true" xmlValidation="false" 
 xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/bbs" path="" reloadable="true" />
</Host>

# name="www.test.com":这指定了虚拟主机的域名,即www.test.com。
# appBase="/usr/local/tomcat/webapps":这是Web应用程序的基础目录。尽管这里指定的目录是/usr/local/tomcat/webapps,但<Context>元素中的docBase属性会覆盖这个值,以指向特定的应用程序目录。
# unpackWARs="true":表示Tomcat是否应该自动解压缩.war文件并将其展开到appBase目录下的相应位置。
# autoDeploy="true":表示Tomcat是否应该自动部署放置在appBase目录下的新应用。
# xmlValidation="false" 和 xmlNamespaceAware="false":这两个属性控制Tomcat如何处理Web应用的XML配置文件。
# docBase="/usr/local/tomcat/webapps/www":指定了Web应用的实际物理目录。在这个例子中,www应用的目录是/usr/local/tomcat/webapps/www。
# path="":表示该应用将映射到网站的根路径。如果path属性省略或为空字符串,则表示应用将映射到/。
# reloadable="true":表示是否允许热部署,即在不重启服务器的情况下重新加载应用。

3、设置别名

python 复制代码
# 关闭
[root@bogon ~]# alias tmstop='/usr/local/tomcat/bin/shutdown.sh'
# 开启
[root@bogon ~]# alias tmstart='/usr/local/tomcat/bin/startup.sh'

# 重启
[root@bogon ~]# alias tmrestart='/usr/local/tomcat/bin/shutdown.sh ; sleep 2; /usr/local/tomcat/bin/startup.sh'

# 关闭
[root@bogon ~]# tmstop


# 开启
[root@bogon ~]# tmstart
# 重启
[root@bogon ~]# tmrestart

4、虚拟主机访问测试

python 复制代码
[root@bogon ~]# echo 192.168.72.154 www.test.com bbs.test.com >> /etc/hosts

[root@bogon ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.72.154 www.test.com bbs.test.com
[root@bogon ~]# curl www.test.com:8080
This is www page\!
[root@bogon ~]# curl bbs.test.com:8080
This is bbs page\!
相关推荐
尢词19 小时前
SpringMVC
java·spring·java-ee·tomcat·maven
清风百草19 小时前
【04】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上
tomcat·maven项目热部署
蒋桐城1 天前
Tomcat 启动卡住,日志显示 At least one JAR was scanned for TLDs yet contained no TLDs.
java·tomcat
qiaosaifei1 天前
SpringBoot项目中替换指定版本的tomcat
spring boot·后端·tomcat
雷神乐乐2 天前
IDEA构建JavaWeb项目,并通过Tomcat成功运行
服务器·tomcat·javaweb
陈大爷(有低保)2 天前
数据库连接池JNDI
数据库·mysql·tomcat
笔墨登场说说2 天前
JDK 里面的线程池和Tomcat线程池的区别
java·servlet·tomcat
爱分享的淘金达人2 天前
25国考照片处理器使用流程图解❗
java·考研·spring·eclipse·tomcat
爱分享的淘金达人2 天前
2025年山东省考报名流程图解
java·考研·spring·eclipse·tomcat·流程图
弓弧名家_玄真君3 天前
mac 安装tomcat
java·macos·tomcat