介绍
简介
Tomcat服务器是Apache的一个开源免费的Web容器。它实现了JavaEE平台下部分技术规范,属于轻量级应用服务器。
版本说明
Tomcat JDK Servlet JSP 10.0.X 8 and later 5.0 3.0 9.0.x 8 and later 4.0 2.3 8.0.x 7 and later 3.1 2.3 7.0.x 6 and later 3.0 2.2 6.0.x 5 and later 2.5 2.1
安装
普通安装
下载地址
配置环境变量
前提:配置java的环境变量(Tomcat是用Java语言开发的Web容器)
JAVA_HOME 路径(如C:\Program Files\Java\jdk-11.0.12)
path中添加 %JAVA_HOME%\bin
防止tomcat启动时闪屏
CLASS_PATH %JAVA_HOME%\lib;
启动与关闭
windows系统
启动
1.在bin目录点击startup.bat
2.在cmd输入:catalina.bat start
关闭
1.在bin目录点击shutdown.bat
2.在cmd输入:catalina.bat stop
3.关闭窗口 访问 localhost:8080
docker安装
查看tomcat 镜像
docker search tomcat
下载tomcat镜像
docker pull docker.io/tomee
1启动tomcat容器 名称,端口
docker run -d -p 8080:8080 docker.io/tomee
--name 命名(一般在run后面)
-d 后台运行
-p 宿主机端口:容器内端口
-v使用数据卷
版本号 docker.io/tomee
浏览器用这个网址打开tomcat 192.168.66.100:8080
2启动tomcat容器并配置数据卷
docker run -d -p 8080:8080 -v /opt/webapps:/usr/local/tomee/webapps docker.io/tomee
2使用tomcat
在Linux写个/opt/webapps/test/index.html然后在用192.168.66.100:8080/test/index.html打开
3启动并使用指定卷容器给tomcat配置数据卷
docker run -d -p 8080:8080 -v 容器卷名:/usr/local/tomee/webapps docker.io/tomee
3使用tomcat
通过查看指定容器卷详情信息获取存放地址/var/lib/docker/volumes/88/_data, 在_data创建/test/index.html,然后在浏览器192.168.66.100:8080/test/index.html访问
目录
tomcat目录
bin
bin目录主要是用来存放tomcat的命令文件,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。
conf
conf目录主要是用来存放tomcat的一些配置文件。
lib
lib目录主要用来存放tomcat运行需要加载的jar包。
logs
logs目录用来存放tomcat在运行过程中产生的日志文件。
temp
temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响) webapps
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包的形式发布应用。
work
work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
配置文件conf目录
Tomcat 的配置文件由4个xml组成:context.xml/web.xml/server.xml/tomcat-users.xml
context.xml
context.xml 是 Tomcat 公用的环境配置。 Tomcat 服务器会定时去扫描这个文件。 一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器 。
web.xml
Web应用程序描述文件,都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。
server.xml
是 tomcat 服务器的核心配置文件,server.xml的每一个元素都对应了 tomcat中的一个组件, 通过对xml中元素的配置,实现对 tomcat中的各个组件和端口的配置。
tomcat-users.xml
配置访问Tomcat的用户以及角色的配置文件。
解决控制台乱码以及修改监听端口
解决控制台乱码
控制台产生乱码的原因是在Tomcat在输出日志中使用的是UTF-8编码,而我们中文的Windows操作系统使用的是GBK编码。 由于编码格式不统一,所以出现了乱码。
解决方式:
修改conf目录中的logging.properties文件重新指定的编码方式
java.util.logging.ConsoleHandler.encoding = GBK
修改Tomcat监听端口
Tomcat默认监听端口为8080。可以通过修改server.xml文件来改变Tomcat的监听端口。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
TomcatManager
Tomcat Manager
Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。 默认情况下,Tomcat Manager是处于禁用状态的。准确的说,Tomcat Manager需要以用户角色进行登录 并授权才能使用相应的功能,不过Tomcat并没有配置任何默认的用户,因此我们需要先进行用户配置后才 能使用Tomcat Manager。
配置Tomcat Manager的访问用户
Tomcat Manager中没有默认用户,我们需要在tomcat-users.xml文件配置。
Tomcat Manager的用户配置需要配置两个部分:角色配置、用户名及密码配置。
Tomcat Manager中的角色分类
manager-gui角色:允许访问HTML GUI和状态页面(即URL路径为/manager/html/*)
manager-script角色:允许访问文本界面和状态页面(即URL路径为/manager/text/*)
manager-jmx角色:允许访问JMX代理和状态页面(即URL路径为/manager/jmxproxy/*)
manager- status角色:仅允许访问状态页面(即URL路径为/manager/status/*)
配置用户及角色
修改tomcat-users.xml
<role rolename ="manager-gui"/> <user username ="tomcat" password ="tomcat" roles="manager-gui" />
解除访问限制
进入Tomcat的webapps目录下,打开webapps/manager/META-INF/context.xml文件,修改下面这段配置
<context antiresourcelocking="false" privileged="true"> <!-- 把下面这段注释掉 --> <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> </context>
Tomcat架构
Server
启动一个server实例(即一个JVM进程),它监听在8005端口以接收shutdown命令。 Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例, 必须配置它们使用不同的端口。
<Server port="8005" shutdown="SHUTDOWN">
Port:接收关闭请求的端口,默认8005,若启动多个tomcat,需要配置多个不同端口
Shutdow:关闭请求指令,默认为SHUTDOWN
Service
Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收 请求并将其转发至关联的引擎进行处理。困此,Service要包含一个引擎、一个或多个连接器
<Service name="Catalina">
Name:服务器的名称,默认为Catalina
Connector
支持处理不同请求的组件,一个引擎可以有一个或多个连接器,以适应多种请求方式。 默认只开启了处理Http协议的连接器。如果需要使用其他协议,需要在Tomcat中配置该协议的连接器 在Tomcat中连接器类型通常有4种:HTTP连接器/SSL连接器/AJP 1.3连接器/proxy连接器
<Connector port="8888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
Port:监听的端口,为接收请求的端口,默认8080
Protocol:连接器使用的协议,默认HTTP/1.1;
connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒;
redirectPort:如果支持的协议是HTTP,接HTTPS请求时,转发至此属性定义的端口
maxThreads:支持的最大连接数,默认为200
Engine
Engine是Servlet处理器的一个实例,即servlet引擎,定义在server.xml中的Service标签中。 Engine需要defaultHost属性来为其定义一个接收所有发往非明确定义虚拟主机的请求的Host组件
<Engine name="Catalina" defaultHost="localhost">
Name:引擎名称
defaultHost:在Engine中定义的多个虚拟主机的主机名称中至少要有一个跟defaultHost定义的主机名称同名
Host
Host组件位于Engine容器中用于接收请求并进行相应处理的虚拟主机。
通过该容器可以运行Servlet或者JSP来处理请求
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
Name:虚拟主机名称
appBase:寻找放在tomcat的web资源的目录
autoDeploy:找到的web资源是否自动部署,默认为true;
unpackWARs:找到的web资源是否自动解压,默认为true;
Context
<Context path="/test" docBase="D:\bjsxt\itbaizhan.war" />
若web资源不在webapps中,则需要此组件告诉虚拟主机web资源位置
Path:浏览器访问项目的访问路径(随便起名)
docBaseweb:资源位置
资源访问
访问内部资源
放在webapps下的资源都可以访问【http://localhost:8080/......】
默认访问webapps/ROOT/index.html【http://localhost:8080】
访问外部资源
资源放在非webapps下(如D:\tomcat\index.html)--------配置架构组件conf-server.xml------- -------在Host组件下新添Context组件 <Context path="/jia" docBase="d:/tomcat"/> -------- -------访问http://localhost:8080/jia/index.html
修改访问ip及资源目录
Tomcat新建资源目录webapps2放置资源--------配置架构组件conf-server.xml--------
<Host name="jia" appBase="webapps" unpackWARs="true" autoDeploy="true"/> ------访问jia:8080
完成电脑域名与IP的映射
先修改编辑权限,右击C:\Windows\System32\drivers\etc\hosts------属性----安全----编辑----USers---------- ------权限:允许全部√-------修改hosts文件----最下面写上 127.0.0.1 jia