网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Tomcat 可以管理多个Service, 且各Service之间相互独立。
(一个service就是一个外部应用,各个service之间是相互独立的,每个service可以监听不同的端口号)
Container结构分析:
每个Service 会包含一一个Container 容器。在Container 内部包含了4个子容器: 4个子容器的作用分别是:
(1) Engine: 引擎,用来管理多个虚拟主机,一个Service最多只能有一一个Engine;
(2) Host: 代表一个虚拟主机,也可以叫站点,通过配置Host就可以添加站点;
(3) Context: 代表一个Web应用,包含多个Servlet 封装器;
(4) wrapper: 封装器,容器的最底层。每一Wrapper 封装着一个servlet, 负责对象实例的创建、执行和销毁功能。
Engine、Host、Context 和Wrapper,这四个容器之间属于父子关系。
容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个Web应用会有多个Servlet封装器。
请求过程
用户在浏览器中输入网址,请求被发送到本机端口8080, 被在那里监听的Connector 获得。Connector 把该请求交给它所在的Service 的Engine (Container) 来处理,并等待Engine 的回应。请求会在Engine、 Host、 Context 和wrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。执行完之后的请求响应在Context、 Host、 Engine 容器之间层层返回,最后返回给Connector,并通过Connector 返回给客户端。
端口和主要目录说明
tomcat端口
客户端和tomcat进行连接时使用:
- 8080端口:http的默认端口
- 8443端口:https的默认端口
- 8005端口: shutdown用于关闭tomcat进程。tomcat监听的关闭端口,就是说这个端口负责监听关闭tomcat的请求。
- 8009端口: 用于转发,负责和其他http服务器建立连接。但一般不用,因为tomcat一般放在后端服务器,其他服务器转发给tomcat。
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应用项目资源的目录 |
work | Tomcat 的工作目录,存放web应用代码生成和编译文件 |
目录 说明
部署步骤
在部署 Tomcat 之前必须安装好 jdk,因为Tomcat是采用Java语言编写的,而jdk是java的开发工具,没有jdk,Tomcat是跑不起来的
下载并安装 JDK
关闭防火墙
systemctl stop firewalld
setenforce 0
将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz
jdk-8u201-linux-x64.rpm
切换至/opt下,安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm
设置JDK环境变量#/etc/profiled.d目录下存放着profile文件中调用的变量,所以我们在该目录下新建一个java的变量脚本,让profile调用即可。
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 #定义环境变量
export JRE_HOME=KaTeX parse error: Expected 'EOF', got '#' at position 34: … #̲定义环境变量 export…JAVA_HOME/lib:KaTeX parse error: Expected 'EOF', got '#' at position 16: JRE\_HOME/lib #̲定义环境变量 export…JAVA_HOME/bin:
J
R
E
_
H
O
M
E
/
b
i
n
:
JRE\_HOME/bin:
JRE_HOME/bin:PATH
source /etc/profile.d/java.sh #刷新文件,使立即生效
java -version #再次查看JDK版本
部署tomcat服务
cd /opt
tar zxf apache-tomcat-9.0.16.tar.gz #解压tomcat安装包
mv apache-tomcat-9.0.16 /usr/local/tomcat #将解压后的源码包目录拷贝至/usr/local/下并重命名为tomcat
启动tomcat
去bin目录下
后台启动
/usr/local/tomcat/bin/startup.sh
或
/usr/local/tomcat/bin/catalina.sh start
前台启动
/usr/local/tomcat/bin/catalina.sh run
netstat -natp | grep 8080
启动Tomcat的方法
startup.sh #后台启动tomcat
catalina.sh start #后台启动tomcat
catalina.sh run #前台启动 tomcat
#关闭tomcat的方法
shutdown.sh 关闭tomcat
查看tomcat是否启动
netstat ss ps jps
浏览器访问测试
浏览器访问Tomcat的默认主页 http://192.168.80.7:8080
优化t
第一次启动tomcat可能会发现Tomcat启动很慢,如果/dev/random中的随机数不足,默认情况下可能会需要几十秒,可以修改jdk参数进行改。
/dev/urandom,它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
–117行–修改这一行
securerandom.source= file:/dev/urandom
总结
JDK的安装,在运行tomcat前必须将JDK安装好。
/usr/local/tomcat/bin目录中的 startup.sh 和 shutdown.sh 脚本可以直接运行,但 catalina.sh 文件需要加上命令参数,start为后台运行,run为前台运行。
/dev/random: 阻塞型,读取它就会产生随机数据,但该数据取决于熵池噪声,当熵池空了,对/dev/random 的读操作也将会被阻塞。
/dev/urandom: 非阻塞的随机数产生器,它会重复使用熵池中的数据以产生伪随机数据。 这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。 它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。
`黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
片转存中…(img-6Ct7JeDo-1715189492870)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新