Tomcat部署

Tomcat部署

简介

Tomcat是一个免费的开源的Serlvet容器,用来运行java程序的容器

Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用;

是开发和调试Servlet(Server Applet)、JSP(Java Server Pages) 程序的首选;

Tomcat就是传说中的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中,而tomcat本身的运行也依赖于jdk环境。

常见的中间件

  1. 一般本地开发的话,小项目,或者是个人开发建议使用tomcat;
  2. linux系统建议使用jetty或apache hpppd;
  3. 大型的项目就用JBOSS或webloigc;
  4. 大项目或者商业项目一般采用:weblgoic/webshere,其他的还有jboss、glasshfish等;
  5. 一些示例项目或者小项目常采用jetty;
  6. tomcat , jboss, weblogic, websphere 一般项目tomcat就可以了。

Tomcat应用场景:lnmt

原理

Tomcat顶层结构图:

  1. Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化
  2. Container用于封装和管理Servlet,以及具体处理Request请求

一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接;

多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,必须要有人能够给她生命、掌握其生死大权,那就非 Server 莫属了!所以整个 Tomcat 的生命周期由 Server 控制。

image

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/

访问网站,选择你需要的版本

image

选择 tomcat-10 ---> v10.0.6 ---> /bin ---> apache-tomcat-10.0.6.tar.gz

image

右键复制链接,使用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端口

image

访问项目测试页面

在后面加上之前存放网页的路径(/test/)

image

访问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访问

image

输入用户名:tomcat 密码:123456

image

Host Manager页面如下

image

访问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

image
Server Status界面如下

image

2. 访问Manager App界面,点击Manager App

image

Manager App界面如下,因为访问了Server Status界面,所以不用输入密码

image

大功告成,以上就是Tomcat部署的全部步骤!!!

posted @ 2021-05-13 23:23  我爱吃芹菜~  阅读(525)  评论(0编辑  收藏  举报
Title