写点什么

Tomcat 安装与启动

作者:Andy
  • 2023-06-01
    北京
  • 本文字数:3459 字

    阅读完需:约 11 分钟

一、说明


Tomcat 是 Java Web 相关项目运行依赖的容器和中间件,是开发人员必须了解和熟悉的。


本篇文章主要整体介绍 Tomcat 的安装和启动内容。

二、安装


1)版本选择


从官网上下载 Tomcat 安装包,本文选择最新稳定的 10 版本。


https://tomcat.apache.org/download-10.cgi
复制代码



打开页面,可能会很困惑,到底在下载链接这里,应该下载哪一个呢?到底是 Binary Distributions 里的 Core,还是 Deployer 呢?或者是 Source Code Distributions。


如果不知道该下载哪个?可以访问页面上的 10.1.9 下的 README 链接,就可以清楚了解和判断了。


链接地址如下:


https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.9/README.html
复制代码


页面截图如下:



从以上内容,我们可以得知,*.tar.gz 适合用于 GNU 环境,*.zip 适合于 Windows 操作系统,*.exe 是为了提供给用户一个界面去操作程序启动运行,需要一个程序安装的过程。


bin 和 src 的区别就是,bin 版本包含二进制执行码,可以直接解压使用,src 版本包含程序源码,需要构建成功之后才能使用。


小编的环境是 Windows 10,但又不需要一个用户界面去操作启动,故而选择 *.zip 类型的,同时,又不想自己再去构建,不需要花时间去看源码,故而最终选择 Binary Distributions 下 Core 中的 64-bit Windows zip 程序。


如果实在不知道如何选择,可以把所有的包都下载下来,试一遍,就知道哪些可以,哪些不可以了,这也是一种尝试的方法,就像算法里的暴力求解一样。


这里需要提一下,对于 Embedded ,这是嵌入式的,可以简捷快速的使用 Tomcat 容器,这样我们打包项目程序的时候,同样可以使用 jar 包跑 Web 相关项目程序,而不是每次都要打 war 包放到容器里。


2)解压安装


下载好压缩包后,直接解压,将文件放到制定的目录下即可。


这个步骤没有什么复杂的环节,但是,为了能够更加正确的使用 Tomcat ,我们需要了解文件夹里的各个文件极其相关的作用。


接下来就先了解一下文件目录相关内容。


3)文件目录


打开文件夹,可以看到目录下的文件内容。



bin:包含二进制可执行代码程序,主要是 Tomcat 启动和关闭等相关操作指令;

conf:包含 Tomcat 配置文件,便于设置服务器相关的访问路径、加载文件等内容;

lib:存储程序运行的相关类库

logs:用于存储日志的文件

temp:JVM 临时存放文件的目录

webapps:存放 Web 程序应用,每个文件夹代表一个应用,Tomcat 启动后自动加载

work:web 应用的临时存储目录


其他的文件不是主要的,在此就不加以说明了。


3.1)bin


bin 目录的文件,主要使用到 start.bat、start.sh、shutdown.bat、shutdown.sh,用于启动和关闭服务器服务,*.bat 是 Windows 操作系统下使用的指令集,*.sh 则是支持 bash shell 指令的文件,换句话说,只要 Windows 系统安装了支持 bash shell 命令的程序,如 git bash、powershell 等等,也是可以直接使用的。



3.2)conf


conf 目录下文件,主要关注 server.xml,这是配置服务信息的重要文件,这在以后的开发中,也是会经常需要修改的文件。


如果可以的话,也应该把其他相关的文件了解一下,这样便于对整个 Tomcat 的运行机制有一个充分全面的认识。



3.3)logs


logs 用于存储文件日志,在项目还未第一次启动时,里面是空的。随着第一次启动项目之后,就产生了相关的日子文件,查看日子是开发人员必备的日常,这便于能够监控、排查程序。



3.4)webapps


webapps 存放应用程序,如果请求地址除了域名和端口之外,只有斜线“/”,则默认读取 ROOT 目录,需要读取其他应用时,这需要在斜线“/”后加上相应应用的文件名。


这些配置,也可以在 conf 的 server.xml 文件中设置,甚至是应用的程序位置也可以制定,而不是一定要放到 webapps 下。


以下截图是展示未经过调整的初始 Tomcat 下的 webapps 相关文件。



4)配置环境变量


在启动 Tomcat 服务之前,我们配置系统的环境变量,以便 Tomcat 可以调用 JVM 虚拟机执行程序。


通常环境变量包含 JAVA_HOME、JRE_HOME、Path。


JAVA_HOME,就是 jdk 的安装路径。


JRE_HOME,则是 java runtime 的文件路径,一般可以不用配置这个变量。


Path,则需要配置好 java 可执行文件的路径,也就是 java 安转目录下的 bin 文件。


这里就不具体详细说明环境变量如何配置了,默认读者已经做好了以上的工作。


三、启动


做好了以上的准备工作之后,我们就可以启动 Tomcat 程序,开始第一次的使用。


1)准备命令行


为了能够方便地启动和控制 Tomcat 的操作,是以事先准备好命令行。


1.1)采用 git-bash


在 Windows 系统下,为了可以使用 bash 指令,故而,采用了 git-bash 命令行。


为了可以直接使用 git-bash 命令,可以在 path 环境变量中配置。如果没有配置,是无法直接使用的。


cmd 命令下可以 输入 path 就可以查看是否配置了 git-bash。



由于 git-bash.exe,是在 Git 目录下,故而这样的变量设置就可以了。


至于如何配置环境变量,这里就不具体说明了。


1.2)特定目录下打开命令行技巧


这里有一个打开命令行的小技巧,我们在制定的文件目录下,然后,在文件地址输入框中直接输入“git-bash”,就可以弹出该文件目录下的 git-bash 命令行窗口了。


输入前的页面:



输入后的页面:



然后回车就可以了。



1.3)执行命令启动程序


回到准备命令行上。


我们分别打开 bin 和 logs 目录下 git-bash 命令行。


bin 下的 git-bash 输入以下指令,用于启动 Tomcat:


bash start.sh
复制代码


logs 下的 git-bash 输入以下指令,用于查看启动日志。


tail -f ca
复制代码


这里需要说明一下,由于日志文件在第一次启动前,是没有文件的,因此,无法知道名称,我们可以先执行启动程序 start.sh,而后再过来看下 logs 下的日志文件名。



执行命令后,我们可以看到以下内容



接下来在浏览器上以下访问地址,看看能否展示页面:


http://localhost:8080/
复制代码


浏览器最终展示了页面,说明项目启动成功了。



四、项目目录、jar、war


在真实环境的打包部署,我们会遇到项目目录、jar 包、war 包的情况。


1)项目目录


由于直接项目目录方式,是 Web 开发早期使用的方式,那时候还没有很好的包管理工具,因此,比较原始,而后,直接把这个项目目录下的所有文件,直接复制到 webapps 下,进而再启动 Tomcat 服务。


Tomcat 的 webapps 下的 ROOT 就是这种方式。


这里就不过多介绍这种方式了,毕竟已经现在主流的做法了。


2)jar


对于 pom.xml 文件,我们会在项目中制定 jar 和 war 的 package 打包方式。


对于 jar 而言,使用命令行直接运行。


java -jar <project-name>
复制代码


这里需要注意的是,项目的 jar 包,需要内嵌集成容器,否则,启动是没有办法运行的。毕竟,程序是要依托于一定的环境之上才能跑起来的。


对于这个方式,这里就不过多介绍了。


3)war


3.1)自动解压 war


通过打 war 包,将 war 包放到 webapps 目录下,然后,启动 Tomcat,自动解压 war,最终形成一个与 war 包同名的项目目录文件。


而访问这个 war 包应用程序,实际上,就是访问的是对应的项目目录文件。


这里以 Idea 构建的一个简单的 web 应用 web-project.war 为例加以补充说明。



启动 Tomcat 之后,webapps 下就有了 web-project 目录文件。


使用浏览器访问,地址如下:


http://localhost:8080/web-project/
复制代码



3.2)增量替换与全量替换


写到这里,小编想起了多年以前公司的事情。


当时的公司是一家国企下属技术子公司,用的是 jdk 1.5,然后,生产环境的程序,每次更新,并不是全部重新替换,而是使用一个打包工具,生成对应文件目录下的字节码文件,目录的位置与 main 下的文件位置是一样的。


然后,替换之前,就会备份当前的生产环境代码,而后,再将要替换的文件,直接拖拽到对应文件之下。就相当于如果改了 XXX.java,那么,就将其 XXX.class 直接覆盖生产环境的对应文件。而后再重新启动 Tomcat 就完事了。


当时的团队是担心,全部替换,可能会带来问题,进而影响整个生产环境系统的运行。所以,每次替换都是增量替换。


应该这样说,那个时候还没有很多好的自动化工具,团队为了降低风险,就采用了增量的方式。


现在想来,这就是很笨的做法了。今天的时代,几乎都是全量替换了。


五、自定义目录部署


为了能够提高部署效率,通常可以指定特定的目录,而不是每次都需要把文件丢到 webapps 下。


这里需要注意的是,这个特定的目录下的文件,不能是 jar 或者 war,只能是完整的项目目录。


这里将 web-project 项目文件放于指定的 project 目录下。



随后,需要在 Tomcat 目录下的 conf 里,修改 server.xml 文件。在这个文件的节点 <Host> 下方,增加以下内容即可。


<Context path="/web-project" docBase="C:\project\web-project" reloadable="false" />
复制代码


好了,就写到这里,感谢你花费时间阅读,如有不妥之处,还望指出,谢谢。


发布于: 2023-06-01阅读数: 25
用户头像

Andy

关注

强准备+强信念+强执行 2019-11-21 加入

以前是T型人才,当下是π型人才,未来是梳子型人才

评论

发布
暂无评论
Tomcat 安装与启动_Andy_InfoQ写作社区