是什么 ? | : | a reference implementation of the Servlet and JSP technologies. |
开发语言 | : | Java |
开发组织 | : | Apache |
官方主页 | : | http://tomcat.apache.org |
操作系统 | 包管理器 | 安装命令 |
---|---|---|
Windows | scoop | scoop install tomcat |
Windows | Chocolatey | choco install -y Tomcat |
macOS | HomeBrew | brew install tomcat |
GNU/Linux | HomeBrew | brew install tomcat |
apt | sudo apt-get install -y tomcat | |
CentOS | yum | sudo yum install -y tomcat |
dnf | sudo dnf install -y tomcat | |
openSUSE | zypper | sudo zypper install -y tomcat |
Alpine Linux | apk | sudo apk add tomcat |
pacman | sudo pacman -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge tomcat |
step1、安装依赖
所有时 | Terminal + Shell |
下载时 | cURL |
解压时 | tar + gzip |
运行时 | JRE | JDK |
step2、使用curl命令下载编译好的Tomcat
二进制压缩包 ()
curl -LO http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz
step3、使用tar解压Tomcat
压缩包
tar vxf ~/Downloads/apache-tomcat-7.0.55.tar.gz -C ~/bin
step4、配置环境变量
export TOMCAT_HOME=~/bin/apache-tomcat-7.0.55
export PATH=TOMCAT_HOME/bin:$PATH
step1、创建一个存放日志的目录
mkdir -p ~/docker_volume/tomcat/logs
step2、下载Docker Official Tomcat Image, 并创建一个容器,然后启动该容器:
docker run -d \
-p 8888:8080 \
-v ~/docker_volume/tomcat/logs:/usr/local/tomcat/logs \
--name tomcat \
tomcat:9-jdk8-adoptopenjdk-openj9
step3、通过http://localhost:8888
访问
bin
目录是存放各种命令行工具的,如下:
startup.sh | 启动Tomcat |
shutdown.sh | 停止Tomcat |
version.sh | 获取Tomcat运行时环境信息 |
configtest.sh | 检查配置文件语法是否正确的,如果正确会启动Tomcat |
catalina.sh | 单个实例在Linux平台上的启动脚本 |
Tomcat
使用的Jar
包存放目录,包括servlet
、jsp
、el
语言等。
Tomcat
是Servlet
和JSP
规范的实现,而Servlet
和JSP
规范都有不同的版本, 不同的版本意味着支持的功能不同,如果我们在开发过程中使用了高版本的Servlet
和JSP
的功能, 而在部署的时候使用了低版本的Servlet
和JSP
,那么就会出现错误,我们如何知道我们当前安装的Tomcat
是哪个版本的Servlet
和JSP
的实现呢?
servlet-api.jar
就是Servlet
规范的实现。
jsp-api.jar
就是JSP
规范的实现。
解压这两个文件,查看META-INF
下的MANIFEST.MF
文件。
查看Servlet
版本:
unzip -o servlet-api.jar -d /tmp/ > /dev/null && cat /tmp/META-INF/MANIFEST.MF
查看JSP
版本:
unzip -o jsp-api.jar -d /tmp/ > /dev/null && cat /tmp/META-INF/MANIFEST.MF
全局配置文件存放目录。所有的配置文件都在这里。
所谓虚拟主机,就是将一个或多个主机名和Tomcat所在的服务器进行绑定。由于一个IP地址可以和多个主机进行帮定, 我们可以将不同的主机指向服务器(指硬件)上的不同文件夹,造成一个服务器(或者一个IP)多个主机的“虚拟主机”效果。 这个实现起来相当的简单。只需要在server.xml文件中新建Host节点,将其属性进行不同设置即可。
示例:
<Host name="wwww.fpliu.com" appBase="webapps" unpackWARs="true" autoDeploy="true" />
我们都有过访问网站的经历。我们一般只输入了主机名,那么假设我们现在作为网络服务提供者,将要对外发布网站,我们怎么让用户只输入我们的主机名就能看到我们为他/她准备的网页呢?
首先我们需要将监听端口设置为80,道理很简单,用户不会在浏览器输入:8080来访问网站,浏览器也不会自动将请求发送到服务器的8080端口。
示例:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
一般的,要访问的首页文件是index.html
。如果让用户输入这么一长串,显然用户体验不好!web.xml
这个配置文件是对所有站点的共同属性做出了设置。比如大家看文件结尾处:
示例:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
这个叫做欢迎页面,当没有输入资源地址时,会由上至下地查找,获取页面,进行响应。 改动它就可以,但是不建议在这里改,会使得所有站点设置变化,你应该将其复制到你需要改动的站点下的web.xml,进行设置。
一般,将Tomcat
作为Web服务器的时候,会将Web应用部署到该文件夹中。
一个Tomcat
可以管理很多个Web App
,我们把要Tomcat
管理的那些Web App
都放到该目录下, 启动Tomcat
之后就可以访问了。
webapps
目录中有一个文件夹叫ROOT
,这是默认访问的应用。 比如在浏览器中输入localhost:8080,浏览器会将该URL补充为:http://localhost:8080/,在前面加了协议,在后面加了/,这个/就表示ROOT的意思。
存放JSP页面缓存的目录。
从work里进入Catalina后的如localhost站点文件夹下的项目,我们可以看到那些jsp页面会被编译成Servlet Java类文件,下次再来访问时, 就直接运行servlet类就可以向客户端反应响应页面了,所以第一次访问时会比较慢,因为新发布上去的页面在第一个人访问时, 会先编译成servlet文件,所以慢了,一旦编译好,那么除非jsp页面修改,不然下次访问直接运行servlet就可以响应用户, 编译后的文件都会存储在work目录下。而tomcat显示的目录,都会从这个缓存里找编译后的jsp对应的class文件。 所以当清空了work目录后,该过程将会从新来过。有的时候会遇到一个问题,就是修改后的页面在tomcat运行的时候显示不了修改后的痕迹。 这个时候删除work目录下对应的项目文件夹,重新启动tomcat就可以了。
Tomcat
运行过程中产生的日志存放目录。