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\!
相关推荐
梁萌1 天前
Docker快速安装Tomcat
docker·容器·tomcat·镜像
全栈老实人_2 天前
时间管理系统|Java|SSM|JSP|
java·开发语言·tomcat·maven
2401_850410832 天前
LVS简介
运维·nginx·tomcat·lvs
程序员大金2 天前
基于SSM+Vue的个性化旅游推荐系统
前端·vue.js·mysql·java-ee·tomcat·mybatis·旅游
第八学期2 天前
Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面)
java·运维·开发语言·tomcat
Ttang232 天前
Tomcat原理(4)——尝试手动Servlet的实现
java·开发语言·servlet·java-ee·tomcat·intellij-idea
小佟2 天前
Tomcat10安装报错Unknown module: java.rmi specified to --add-opens
tomcat
spencer_tseng3 天前
apache-tomcat-6.0.44.exe Win10
tomcat·win10·6.0.44
夜半被帅醒3 天前
网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时
服务器·nginx·tomcat
loop lee3 天前
计算机网络 - HTTP 协议和万维网
java·网络协议·servlet·tomcat