Tomcat 部署项目
# 05.Tomcat部署项目
我们来看看 Tomcat 怎么部署项目。
Tomcat 部署项目的方式一共有三种:
# 方式一
最简单的方法:直接将项目放到 webapps 目录下即可。
实践:在 webapps 新建一个文件夹 hello,里面新建一个文件,叫做 hello.html,添加以下内容:
<font color='red'>
Hello Tomcat!
</font>
2
3
启动 Tomcat,输入:http://localhost:8080/hello/hello.html
访问该项目:/hello
称为项目的访问路径,也叫虚拟目录,hello.html 称为资源名称
如果有很多资源,可以将项目打成一个 war 包,再将 war 包放置到 webapps 目录下,方便部署,压缩文件的传输比多个文件的传输快很多,这样简化了部署;war 包会自动解压缩成一个目录,删除 war 包,则目录也会删除。
实践:将 hello.html 压缩成一个文件,hello.zip,然后修改后缀名为 war(实际应用中,会用专用的 war 打包工具,这里只是简化)
缺点:虚拟目录名字和文件夹名字一样(不能重命名),而且每次有更新,都需要拷贝 war 包到 webapps 目录
即使 Tomcat 正在运行,也可以将 war 包放进去,并且 Tomcat 窗口中会有部署成功的日志:
我们最开始安装 Tomcat 的时候,启动后访问 localhost:8080,其实访问的就是默认项目:Tomcat 自己的 ROOT 项目
apache-tomcat-9.0.73\webapps\ROOT
然后我们访问具体某个项目的时候,没有加上资源名称,那么默认就会寻找 index.html 文件返回,例如 Tomcat 已有的项目如下:
webapps
├── docs
├── examples
├── host-manager
├── manager
└── ROOT
2
3
4
5
6
我们访问下 docs 目录:
其实打开的就是该目录下的 index.html,我们可以在浏览器中打开这个文件看看,两者是一样的:
# 方式二
修改 conf/server.xml 配置文件,指定 war 包所在的位置。
首先我们打开配置文件文件,拉到最后,找到 <Host>
标签体
然后我们在 <Host>
标签体中配置如下内容:
<Context docBase="D:\hello" path="/hehe"/>
docBase: 项目存放的路径
path:虚拟目录,就是 IP 和端口后面的路径,虚拟目录后面的才是资源名称
配置完后,<Host>
标签体内容如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="D:\hello" path="/hehe"/>
</Host>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
然后我们在 D 盘新建 hello 目录,并新建 hello.html 文件,重启 Tomcat 后访问 http://localhost:8080/hehe/hello.html:
但如此做法,修改了 Tomcat 的默认配置文件,有可能修改失败,导致 Tomcat 软件出错;并且如果人人都这样部署项目,可能会导致冲突等,配置很不安全,不推荐
# 方式三
在 conf\Catalina\localhost 创建任意名称的 XML 文件,例如 hello.xml
在文件中编写 <Context docBase="D:\hello"/>
- 虚拟目录:XML 文件的名称
- 好处:热部署,例如删除了 xml 文件名或者修改 xml 后缀,就会读取不到该文件;而修改 server.xml 需要重启服务器。强烈推荐该种方法,并且我们后续学习 JavaWeb 开发的时候,也是采用这种做法的。
Tomcat 在启动时会读取一系列的配置文件,顺序如下:
- Tomcat 自己的 conf/server.xml
- Tomcat 自己的 conf/web.xml
- Tomcat 自己的 tomcat-users.xml
- Tomcat 自己的 \conf\Catalina\localhost 目录下的 *.xml
- 加载 webapps 目录下的所有项目中的 web.xml
# 一个项目的结构
上面我们用三种方式部署了项目,其实就一个 HTML 文件,是非常非常简单的项目;实际应用中,一个项目会有很多文件,因此得有一定的结构存放这些文件,例如:
WEB-INF 目录:
- web.xml:Web 项目的核心配置文件
classes 目录:放置字节码文件的目录
lib 目录:放置依赖的 jar 包
这也是早期一个项目中该有的目录结构。
——完——