Tomcat部署及优化
- 一、Tomcat概述
- 二、Tomcat部署
- 实验报告
-
- 资源列表
- 基础环境
- 一、安装JDK
- 二、安装启动Tomcat
-
- [1、安装 Tomcat 服务](#1、安装 Tomcat 服务)
- [2、启动 Tomcat 服务](#2、启动 Tomcat 服务)
- 三、虚拟主机配置
-
- [1、创建 www 和 bbs 项目目录和文件](#1、创建 www 和 bbs 项目目录和文件)
- [2、修改 Tomcat 主配置文件](#2、修改 Tomcat 主配置文件)
- 3、设置别名
- 4、虚拟主机访问测试
一、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\!