Tomcat
Tomcat是一个流行的Java Servlet容器,它提供了一个运行Java Web应用程序的环境。
简介:
Tomcat是由Apache软件基金会开发和维护的开源项目。它是一个轻量级的Web服务器和Servlet容器,可以运行Java Web应用程序。Tomcat提供了对Java Servlet、JavaServer Pages(JSP)和Java WebSocket的支持,是开发和部署Java Web应用程序的常用选择之一。
工作原理:
当接收到客户端的HTTP请求时,Tomcat首先作为Web服务器接收请求。然后,它通过配置的Connector监听指定的端口,等待客户端连接。一旦连接建立,Tomcat将处理HTTP请求,根据请求的URL匹配相应的Servlet或静态资源文件。Tomcat使用一个或多个线程池来处理并发请求,并通过Servlet容器调用相应的Servlet进行逻辑处理。处理完成后,Tomcat将生成HTTP响应,并通过连接的管道将响应发送回客户端。
优缺点
优点:
易于使用和部署:Tomcat提供了简单的配置和部署过程,使得开发者能够快速启动和部署Java Web应用程序。
轻量级:Tomcat的核心包相对较小,占用的系统资源较少,并且具有较快的启动时间。
可扩展性:Tomcat支持插件式架构,可以通过添加额外的组件来扩展其功能。
缺点:
性能限制:相比于一些专用的Web服务器,Tomcat在处理高并发请求时可能存在一定的性能限制。
内存消耗:由于Tomcat提供了完整的Java Servlet容器功能,它的内存消耗相对较高,特别是在部署多个应用程序时。
总体而言,Tomcat是一个强大而灵活的Java Servlet容器,广泛应用于Java Web应用程序的开发和部署。它的简单性和可扩展性使其成为开发人员的首选,尤其是对于中小型项目或初学者来说。
jdk介绍
JDK(Java Development Kit)是Java开发工具包的缩写。它是一种由Oracle Corporation提供的免费软件,用于开发、编译和运行Java应用程序。
JDK包含的主要组件和工具:
- Java编译器(javac):用于将Java源代码编译成Java字节码文件(.class文件)。
- Java运行时环境(JRE):它包含了Java虚拟机(JVM)以及Java标准类库,可以在计算机上执行Java应用程序。
- Java开发工具:JDK提供了一系列开发工具,如调试器(jdb)、文档生成器(javadoc)、jar打包工具(jar)等,这些工具可以帮助开发人员进行代码编写、调试、文档生成、打包等各种开发任务。
- Java类库:JDK包含了Java标准类库,提供了丰富的类和接口,包括字符串处理、文件操作、网络通信、图形界面、多线程等功能。
JDK的功能:
- Java开发:JDK是Java应用程序的开发工具包,开发人员可以使用其中的编译器、开发工具和类库来编写Java代码,并进行调试和测试。
- 编译:JDK提供了Java编译器(javac),将Java源代码编译成平台无关的Java字节码文件,可以在任何支持Java虚拟机的计算机上运行。
- 运行:JDK中的Java运行时环境(JRE)包含了Java虚拟机(JVM)和Java标准类库,可以执行已经编译的Java应用程序。
- 打包和部署:JDK提供了用于打包成可执行的jar文件的工具,方便应用程序的分发和部署。
- 文档生成:JDK提供了文档生成工具(javadoc),可以根据代码注释自动生成文档,方便代码的文档化和维护。
总之,JDK是Java开发的基础工具包,它包含了编译器、运行时环境、开发工具和类库等,通过它可以进行Java应用程序的开发、编译、运行和部署。
Tomcat主页面
如何部署Tomcat请阅读部署lamt架构中的部署Tomcat部分
部署完lamt架构后,我们可以通过ip加8080端口号来访问Tomcat的主页面(根目录)
但是右边的Server Status、Manager App、Host Manager都不可以访问
主页面配置
需要做以下配置
//修改tomcat-users.xml配置文件,添加一个manager-gui和admin-gui角色
[root@wanf ~]# cd /usr/local/tomcat/conf/
[root@wanf conf]# vim tomcat-users.xml
[root@wanf conf]# cat tomcat-users.xml
(省略)
(添加以下三行内容,用户名和密码可以自定义)
<role rolename="manager-gui"/> #这行
<role rolename="admin-gui"/> #这行
<user username="wanf" password="wanf001" roles="manager-gui,admin-gui"/> #这行
</tomcat-users> //在最后一行的前面加,不可以随便在哪个位置加
[root@wanf conf]#
//放行本机网段可以访问Server Status和Manager App ,加上192\.168\.179\.\d+ 这个内容
[root@wanf ~]# cd /usr/local/tomcat/webapps/manager/META-INF/
[root@wanf META-INF]# vim context.xml
[root@wanf META-INF]# cat context.xml
(省略)
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.179\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
(省略)
//放行本机网段可以访问Host Manager,加上192\.168\.179\.\d+ 这个内容
[root@wanf META-INF]# cd /usr/local/tomcat/webapps/host-manager/META-INF/
[root@wanf META-INF]# vim context.xml
[root@wanf META-INF]# cat context.xml
(省略)
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.179\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
(省略)
//放行本机网段可以访问examples,加上192\.168\.179\.\d+ 这个内容
[root@wanf ~]# cd /usr/local/tomcat/webapps/examples/META-INF/
[root@wanf META-INF]# vim context.xml
[root@wanf META-INF]# cat context.xml
(省略)
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.179\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
(省略)
//重启Tomcat服务
[root@wanf conf]# /usr/local/tomcat/bin/shutdown.sh
[root@wanf conf]# /usr/local/tomcat/bin/startup.sh
主页面功能
主机状态
管理器应用程序
主机管理器
示例examples
Tomcat多实例部署
环境
Tomcat多实例是在一台主机上部署多个Tomcat服务
Tomcat实例 | Tomcat版本 | 端口号 |
---|---|---|
tomcat-example1 | tomcat-9.0.79 | 8005 8080 8443 |
tomcat-example2 | tomcat-9.0.79 | 8006 8081 8444 |
前期准备
//配置yum源,推荐使用阿里云源
[root@wanf ~]# rm -rf /etc/yum.repos.d/*
[root@wanf ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@wanf ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@wanf ~]# yum clean all
18 files removed
[root@wanf ~]# yum makecache
//永久关闭防火墙和selinux
[root@wanf ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@wanf ~]# setenforce 0
[root@wanf ~]# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
//重启主机
[root@wanf ~]# reboot
部署多实例
//安装Java环境
[root@wanf ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
//下载Tomcat软件包
[root@wanf ~]# yum -y install wget
[root@wanf ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.79/bin/apache-tomcat-9.0.79.tar.gz
[root@wanf ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz
//解压安装tomcat-example1
[root@wanf ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz
[root@wanf ~]# tar -xf apache-tomcat-9.0.79.tar.gz
[root@wanf ~]# mv apache-tomcat-9.0.79 /usr/local/tomcat-example1
[root@wanf ~]#
//解压安装tomcat-example2
[root@wanf ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz
[root@wanf ~]# tar -xf apache-tomcat-9.0.79.tar.gz
[root@wanf ~]# mv apache-tomcat-9.0.79 /usr/local/tomcat-example2
//查看两个实例
[root@wanf ~]# cd /usr/local/
[root@wanf local]# ls | grep tomcat
tomcat-example1
tomcat-example2
[root@wanf local]#
配置多实例
tomcat服务启动后会起来三个端口,默认分别是8005(关闭端口)、8080(访问端口)、8443(重定向端口);所以如果有多个tomcat实例的话,就要修改端口,避免冲突。
//由于只有两个实例,所以只修改tomcat-example2的端口。tomcat-example保持默认。
//修改配置文件,分别修改这三行。
[root@wanf ~]# cd /usr/local/tomcat-example2/conf/
[root@wanf conf]# vim server.xml
...
<Server port="8006" shutdown="SHUTDOWN">
...
<Connector port="8081" protocol="HTTP/1.1"
...
redirectPort="8444"
...
[root@wanf conf]#
//启动tomcat-example1
[root@wanf ~]# /usr/local/tomcat-example1/bin/startup.sh
//查看端口号,8005和8080已经起来了
[root@wanf ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
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@wanf ~]#
//启动tomcat-example2
[root@wanf ~]# /usr/local/tomcat-example2/bin/startup.sh
//查看端口号,8006和8081已经起来了
[root@wanf ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
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@wanf ~]#
配置多实例测试网页
//配置tomcat-example1的测试网页
[root@wanf ~]# cd /usr/local/tomcat-example1/webapps/
[root@wanf webapps]# mkdir test1 && cd test1
[root@wanf test1]# vim index.jsp
[root@wanf test1]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("this is a tomcat-example1");
%>
</body>
</html>
[root@wanf test1]#
//配置tomcat-example2的测试网页
[root@wanf test1]# cd /usr/local/tomcat-example2/webapps/
[root@wanf webapps]# mkdir test2 && cd test2
[root@wanf test2]# vim index.jsp
[root@wanf test2]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("this is a tomcat-example2");
%>
</body>
</html>
[root@wanf test2]#
访问测试
通过8080端口访问实例1
通过8081端口访问实例2
都可以访问到