目录
Tomcat
1.Tomcat简介
Tomcat是一个开源的、轻量级的、运行速度快的Web应用服务器,是Apache软件基金会的一个项目。Tomcat是一个Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,提供了一个Java HTTP web服务器环境,使得Java代码可以运行在服务器端。Tomcat可以作为独立的Web服务器运行,也可以作为Apache HTTP Server的插件运行,或者与其他Java应用服务器(如JBoss、WebLogic等)配合使用。它广泛应用于Java Web开发中,是Java开发人员常用的Web服务器之一。2.
2.Tomcat特点
- 轻量级:Tomcat的安装包相对较小,占用系统资源较少,适合于低配置的服务器或个人开发环境。
- 易于使用:Tomcat提供了简单易用的管理界面,可以方便地配置和管理Web应用。
- 高性能:Tomcat采用了多线程处理请求,能够处理大量并发访问,提供快速的响应速度。
- 可扩展性:Tomcat支持插件机制,可以通过添加插件来扩展其功能,满足不同的需求。
- 跨平台:Tomcat可以在多种操作系统上运行,包括Windows、Linux和Mac OS等。
3.Tomcat的工作流程
-
启动Tomcat:当Tomcat服务器启动时,它会加载配置文件(如server.xml)并初始化一些必要的组件,如连接器(Connector)、容器(Container)等。
-
监听端口:Tomcat的连接器(Connector)负责监听一个或多个端口,等待客户端的请求。默认情况下,Tomcat监听的端口为8080。
-
接收请求:当客户端(如浏览器)发送一个HTTP请求时,请求会被发送到Tomcat服务器的监听端口。连接器接收到请求后,会进行解析和处理。
-
请求分发:根据请求的URL,Tomcat会将请求分发给对应的容器(Container)。容器可以是Engine、Host或Context,它们分别对应着不同层级的Web应用。
-
Servlet处理请求:容器会根据请求的URL找到对应的Servlet,并调用Servlet的doGet()或doPost()等方法来处理请求。Servlet可以生成动态的HTML页面、处理表单提交、访问数据库等。
-
生成响应:Servlet处理请求后,会生成相应的响应。响应可以是HTML页面、JSON数据等。
-
响应返回给客户端:Tomcat的连接器会将生成的响应返回给客户端,客户端(浏览器)会解析响应并显示在页面上。
-
关闭Tomcat:当Tomcat服务器关闭时,它会释放资源、关闭连接器等,确保服务器的正常关闭。
在整个过程中,Tomcat负责接收、分发和管理请求,并将响应发送回客户端。它还提供了一些额外的功能,如会话管理、安全认证、日志记录等。通过配置文件和插件,Tomcat可以进行灵活的配置和扩展,以满足不同的需求和场景。
4. Tomcat项目部署
4.1java环境安装
#安装jdk环境
[root@localhost ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
#查看安装的版本
[root@localhost ~]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
4.2tomcat部署
上官网下载tomcat
#下载tomcat软件包
[root@localhost ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80.tar.gz
[root@localhost ~]#
#解压部署
[root@localhost ~]# tar xf apache-tomcat-9.0.80.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache-tomcat-9.0.80 bin etc games include lib lib64 libexec sbin share src
#创建软连接
[root@localhost local]# ln -s apache-tomcat-9.0.80/ tomcat
[root@localhost local]# ll
total 0
drwxr-xr-x. 9 root root 220 Oct 11 15:53 apache-tomcat-9.0.80
drwxr-xr-x. 2 root root 6 Aug 12 2018 bin
drwxr-xr-x. 2 root root 6 Aug 12 2018 etc
drwxr-xr-x. 2 root root 6 Aug 12 2018 games
drwxr-xr-x. 2 root root 6 Aug 12 2018 include
drwxr-xr-x. 2 root root 6 Aug 12 2018 lib
drwxr-xr-x. 2 root root 6 Aug 12 2018 lib64
drwxr-xr-x. 2 root root 6 Aug 12 2018 libexec
drwxr-xr-x. 2 root root 6 Aug 12 2018 sbin
drwxr-xr-x. 5 root root 49 Oct 7 16:44 share
drwxr-xr-x. 2 root root 6 Aug 12 2018 src
lrwxrwxrwx. 1 root root 21 Oct 11 15:54 tomcat -> apache-tomcat-9.0.80/
#启动tomcat服务
[root@localhost local]# cd /usr/local/tomcat/bin
[root@localhost bin]# ls
bootstrap.jar commons-daemon.jar makebase.sh tomcat-juli.jar
catalina-tasks.xml configtest.bat setclasspath.bat tomcat-native.tar.gz
catalina.bat configtest.sh setclasspath.sh tool-wrapper.bat
catalina.sh daemon.sh shutdown.bat tool-wrapper.sh
ciphers.bat digest.bat shutdown.sh version.bat
ciphers.sh digest.sh startup.bat version.sh
commons-daemon-native.tar.gz makebase.bat startup.sh
[root@localhost bin]# ./catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost bin]# 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 [::]:*
#: 8005是用来关闭服务的端口号
测试
编写测试页面
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# mkdir test
[root@localhost webapps]# cd test/
[root@localhost test]# vim index.jsp
[root@localhost test]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
4.3尝试访问webapps目录中其他项目
#解决办法
[root@localhost ~]# cd /usr/local/tomcat/conf/
[root@localhost conf]# ls
Catalina context.xml logging.properties tomcat-users.xsd
catalina.policy jaspic-providers.xml server.xml web.xml
catalina.properties jaspic-providers.xsd tomcat-users.xml
[root@localhost conf]# vim tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat123" roles="manager-gui"/>
</tomcat-users> #:写在这一行之上,写在后方无效
[root@localhost tomcat]# cd webapps/manager/META-INF/
[root@localhost META-INF]# vim context.xml
将 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/> 改为
allow="192\.168\.200\.\d+|::1|0:0:0:0:0:0:0:1"/>
#修改配置文件后重启服务
[root@localhost META-INF]# /usr/local/tomcat/bin/catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-jul
i.jar
Using CATALINA_OPTS:
[root@localhost META-INF]# 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 META-INF]# ps -ef | grep tomcat
root 11161 1328 0 17:06 pts/0 00:00:00 grep --color=auto tomcat
[root@localhost META-INF]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-jul
i.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost META-INF]# 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 [::]:*
在examples这个项目中也是同样操作
[root@localhost META-INF]# cd
[root@localhost ~]# cd /usr/local/tomcat/webapps/examples/META-INF/
[root@localhost META-INF]# vim context.xml
把allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 修改为
allow="192\.168\.200\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> #加入本机网段
[root@localhost META-INF]# /usr/local/tomcat/bin/catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@localhost META-INF]# 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 META-INF]# ps -ef | grep tomcat
root 11273 1328 0 17:38 pts/0 00:00:00 grep --color=auto tomcat
[root@localhost META-INF]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost META-INF]# 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 [::]:*
5.tomcat多实例部署
在同一台主机上部署多个tomcat服务
环境说明:
tomcat实例 | tomcat版本 | 端口号 |
---|---|---|
tomcat01 | tomcat-9.0.80 | 8005、8080、8443 |
tomcat02 | tomcat-9.0.80 | 8006、8081、8444 |
#安装java环境
#安装jdk环境
[root@localhost ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
#查看安装的版本
[root@localhost ~]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
#下载tomcat软件包
[root@localhost ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80.tar.gz
[root@localhost ~]#
#解压部署
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80.tar.gz
[root@localhost ~]# tar xf apache-tomcat-9.0.80.tar.gz
[root@localhost ~]# mv apache-tomcat-9.0.80 /usr/local/tomcat01
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80.tar.gz
[root@localhost ~]# tar xf apache-tomcat-9.0.80.tar.gz
[root@localhost ~]# mv apache-tomcat-9.0.80 /usr/local/tomcat02
#更改端口号,修改tomcat02的端口,防止与tomcat01的端口冲突,tomcat01保持默认不修改
[root@localhost ~]# cd /usr/local/tomcat02/conf/
[root@localhost conf]# ls
catalina.policy jaspic-providers.xml server.xml web.xml
catalina.properties jaspic-providers.xsd tomcat-users.xml
context.xml logging.properties tomcat-users.xsd
[root@localhost conf]# vim server.xml
把<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
redirectPort="8443"
修改为<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"
redirectPort="8444"
#开启服务
[root@localhost ~]# /usr/local/tomcat01/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat01
Using CATALINA_HOME: /usr/local/tomcat01
Using CATALINA_TMPDIR: /usr/local/tomcat01/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat01/bin/bootstrap.jar:/usr/local/tomcat01/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 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@localhost ~]# /usr/local/tomcat02/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat02
Using CATALINA_HOME: /usr/local/tomcat02
Using CATALINA_TMPDIR: /usr/local/tomcat02/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat02/bin/bootstrap.jar:/usr/local/tomcat02/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 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 1 [::ffff:127.0.0.1]:8006 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 100 *:8081 *:*
LISTEN 0 128 [::]:22 [::]:*
#配置多实例测试网页
[root@localhost ~]# cd /usr/local/tomcat01/webapps/
[root@localhost webapps]# mkdir test
[root@localhost webapps]# cd test
[root@localhost test]# vim index.jsp
[root@localhost test]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Tomcat01");
%>
</body>
</html>
[root@localhost ~]# cd /usr/local/tomcat02/webapps/
[root@localhost webapps]# mkdir test
[root@localhost webapps]# cd test
[root@localhost test]# vim index.jsp
[root@localhost test]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Tomcat02");
%>
</body>
</html>
测试