Tomcat部署
简介
Tomcat是一个免费的开源的Serlvet容器,用来运行java程序的容器
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用;
是开发和调试Servlet(Server Applet)、JSP(Java Server Pages) 程序的首选;
Tomcat就是传说中的中间件
之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中,而tomcat本身的运行也依赖于jdk环境。
常见的中间件
:
- 一般本地开发的话,小项目,或者是个人开发建议使用tomcat;
- linux系统建议使用jetty或apache hpppd;
- 大型的项目就用JBOSS或webloigc;
- 大项目或者商业项目一般采用:weblgoic/webshere,其他的还有jboss、glasshfish等;
- 一些示例项目或者小项目常采用jetty;
- tomcat , jboss, weblogic, websphere 一般项目tomcat就可以了。
Tomcat应用场景:lnmt
原理
Tomcat顶层结构图:
- Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化
- Container用于封装和管理Servlet,以及具体处理Request请求
一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接;
多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,必须要有人能够给她生命、掌握其生死大权,那就非 Server 莫属了!所以整个 Tomcat 的生命周期由 Server 控制。
Tomcat主要组件
- 服务器Server:Tomcat中最顶层的容器,代表整个服务器;
- 服务Service:server中至少包含一个Service,用于提供服务,service主要包含2个部分Connector和Container;
- 连接器Connector:一个Service包含多个Connector,用于处理Sockt连接,并将Socket连接封装成Reques和Response;
- 容器Container:一个Service中只有一个Connector,用于封装和管理Servlet。
注意:连接器Connector和容器Container是Tomcat的核心
小结
(1)Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container;
(2) Server掌管着整个Tomcat的生死大权;
(4)Service 是对外提供服务的;
(5)Connector用于接受请求并将请求封装成Request和Response来具体处理;
(6)Container用于封装和管理Servlet,以及具体处理request请求。
知道了整个Tomcat顶层的分层架构和各个组件之间的关系以及作用,对于绝大多数的开发人员来说Server和Service对我们来说确实很远,而我们开发中绝大部分进行配置的内容是属于Connector和Container
配置文件
Tomcat配置文件详情:
目录 | 含义 |
---|---|
bin | 存放启动和关闭tomcat脚本 |
conf | 存放不同的配置文件(server.xml主配置文件;web.xml补充额外的功能;tocat-user.xml管理端配置(文件 用户名 密码) |
lib/japser/common | 存放tomcat运行需要的库文件(JARS) |
logs | 存放tomcat执行时的Log文件 |
src | 存放tomcat的源代码 |
webapps | tomcat的主要web发布目录 |
work | 存放jsp编译后产生的class文件 |
注意:bin目录下startup.bat为启动tomcat、shutdown.bat为关闭tomcat
Tomcat配置文件内容详情
server.xml主配置文件
防止多个项目服务端口冲突,修改端口协议
[root@localhost ~]# vim /usr/local/tomcat/first-project/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
tomcat-users.xml用户配置文件
配置登录信息(用户名:tomcat 密码:123456)
[root@localhost ~]# vim /usr/local/tomcat/first-project/conf/tomcat-users.xml
#可以在最后添加以下内容
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="admin-gui,manager-gui"/>
</tomcat-users>
Tomcat项目部署
下载安装包
Tomcat安装包网站:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/
访问网站,选择你需要的版本
选择 tomcat-10 ---> v10.0.6 ---> /bin ---> apache-tomcat-10.0.6.tar.gz
右键复制链接,使用wget命令下载到本机(192.168.110.14)
//安装wget命令
[root@localhost ~]# yum -y install wget
//下载
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.6/bin/apache-tomcat-10.0.6.tar.gz
--2021-05-13 22:52:40-- https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.6/bin/apache-tomcat-10.0.6.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11822805 (11M) [application/octet-stream]
Saving to: ‘apache-tomcat-10.0.6.tar.gz’
apache-tomcat-10.0.6 100%[======================>] 11.27M 1.72MB/s in 13s
2021-05-13 22:52:54 (863 KB/s) - ‘apache-tomcat-10.0.6.tar.gz’ saved [11822805/11822805]
java环境安装
//安装jdk环境
[root@localhost ~]# yum -y install java-11-openjdk
//查看版本
[root@localhost ~]# java -version
openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode, sharing)
安装Tomcat
//查看安装包
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-10.0.6.tar.gz
//解压安装包
[root@localhost ~]# tar xf apache-tomcat-10.0.6.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-10.0.6 apache-tomcat-10.0.6.tar.gz
//创建一个tomcat目录在/usr/local/下,用来用来存放项目
[root@localhost ~]# mkdir /usr/local/tomcat
//把解压好的安装包移到刚才创建的tomcat目录下,取名为first-project作为第一个项目
[root@localhost ~]# mv apache-tomcat-10.0.6 /usr/local/tomcat/first-project
启动Tomcat
注意事项:
- 存在多个项目的时候,不能做环境变量
- 需要进到对应的项目目录,使用 bin下的
启动脚本
以绝对路径的方式启动
//启动项目first-froject的中间件Tomcat
#进到first-project项目下
[root@localhost ~]# cd /usr/local/tomcat/first-project/
#使用bin下的启动脚本启动
[root@localhost first-project]# bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/first-project
Using CATALINA_HOME: /usr/local/tomcat/first-project
Using CATALINA_TMPDIR: /usr/local/tomcat/first-project/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/first-project/bin/bootstrap.jar:/usr/local/tomcat/first-project/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
#启动成功,8080端口起来了
#8080端口用来访问服务的;8005端口用来停止服务的,监听本机,不能访问
[root@localhost first-project]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
#查看tomcat进程
[root@localhost first-project]# ps -ef | grep tomcat
root 2659 1 8 23:20 pts/0 00:00:02 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/first-project/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/first-project/bin/bootstrap.jar:/usr/local/tomcat/first-project/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/first-project -Dcatalina.home=/usr/local/tomcat/first-project -Djava.io.tmpdir=/usr/local/tomcat/first-project/temp org.apache.catalina.startup.Bootstrap start
root 2695 1584 0 23:20 pts/0 00:00:00 grep --color=auto tomcat
创建一个Hello World的java网页
//创建一个index.jsp
[root@localhost ~]# vi index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
//创建一个test目录存放测试网页
#创建
[root@localhost ~]# mkdir /usr/local/tomcat/first-project/webapps/test/
#拷贝进去
[root@localhost ~]# cp index.jsp /usr/local/tomcat/first-project/webapps/test/
[root@localhost ~]# ls /usr/local/tomcat/first-project/webapps/test/
index.jsp
//重启服务
#停止服务
[root@localhost ~]# /usr/local/tomcat/first-project/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat/first-project
Using CATALINA_HOME: /usr/local/tomcat/first-project
Using CATALINA_TMPDIR: /usr/local/tomcat/first-project/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/first-project/bin/bootstrap.jar:/usr/local/tomcat/first-project/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
#开启服务
[root@localhost ~]# /usr/local/tomcat/first-project/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/first-project
Using CATALINA_HOME: /usr/local/tomcat/first-project
Using CATALINA_TMPDIR: /usr/local/tomcat/first-project/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/first-project/bin/bootstrap.jar:/usr/local/tomcat/first-project/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
//启动和关闭还有一种方式
#开启
[root@localhost ~]# /usr/local/tomcat/first-project/bin/catalina.sh stop
#关闭
[root@localhost ~]# /usr/local/tomcat/first-project/bin/catalina.sh start
访问测试
注意:在访问网页之前需要关闭防火墙
systemctl disable --now firewalld
sed -ri 's/^(SELINUX=).*/1disabled/g' /etc/sysconfig/selinux
setenforce 0
访问Tomcat默认主页
默认主页配置文件位置:在/webapps/
下,ROOT
文件就是默认首页的配置文件
访问IP地址(192.168.110.14) + 8080端口
访问项目测试页面
在后面加上之前存放网页的路径(/test/)
访问Host Manager界面
配置tomcat-users.xml文件
//修改配置文件,修改密码123456
[root@localhost ~]# vim /usr/local/tomcat/first-project/conf/tomcat-users.xml
#搜索</tomcat-users>,在这一行上面加上以下这两行配置
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="admin-gui"/>
</tomcat-users> //在这一行前面加上配置
配置host-manager/META-INF/context.xml文件
//授权192.168.110网段
[root@localhost ~]# vim /usr/local/tomcat/first-project/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.110.d+|127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" /> //修改这一行
<Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
</Context>
重启服务
[root@localhost ~]# /usr/local/tomcat/first-project/bin/catalina.sh stop
[root@localhost ~]# /usr/local/tomcat/first-project/bin/catalina.sh start
访问192.168.110.14:8080 ---> 点击Host Manager访问
输入用户名:tomcat 密码:123456
Host Manager页面如下
访问Server Status界面和Manager App界面
配置tomcat-users.xml文件
//修改配置文件,修改密码123456
[root@localhost ~]# vim /usr/local/tomcat/first-project/conf/tomcat-users.xml
#搜索</tomcat-users>,在这一行上面加上以下这两行配置
<role rolename="admin-gui"/>
<role rolename="manager-gui"/> //添加这一行
<user username="tomcat" password="123456" roles="admin-gui,manager-gui"/> //修改此行,添加一个manager-gui
</tomcat-users> //在这一行前面加上配置
配置manager/META-INF/context.xml 文件
//授权192.168.110网段
[root@localhost ~]# vim /usr/local/tomcat/first-project/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.110.d+|127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" /> //添加这一行
<Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
</Context>
重启服务
[root@localhost ~]# /usr/local/tomcat/first-project/bin/catalina.sh stop
[root@localhost ~]# /usr/local/tomcat/first-project/bin/catalina.sh start
1. 访问Server Status界面,点击Server Status ---> 输入用户名:tomcat 密码:123456
Server Status界面如下
2. 访问Manager App界面,点击Manager App
Manager App界面如下,因为访问了Server Status界面,所以不用输入密码