Tomcat 安装与启动
一、说明
Tomcat 是 Java Web 相关项目运行依赖的容器和中间件,是开发人员必须了解和熟悉的。
本篇文章主要整体介绍 Tomcat 的安装和启动内容。
二、安装
1)版本选择
从官网上下载 Tomcat 安装包,本文选择最新稳定的 10 版本。
打开页面,可能会很困惑,到底在下载链接这里,应该下载哪一个呢?到底是 Binary Distributions 里的 Core,还是 Deployer 呢?或者是 Source Code Distributions。
如果不知道该下载哪个?可以访问页面上的 10.1.9 下的 README 链接,就可以清楚了解和判断了。
链接地址如下:
页面截图如下:
从以上内容,我们可以得知,*.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:
logs 下的 git-bash 输入以下指令,用于查看启动日志。
这里需要说明一下,由于日志文件在第一次启动前,是没有文件的,因此,无法知道名称,我们可以先执行启动程序 start.sh,而后再过来看下 logs 下的日志文件名。
执行命令后,我们可以看到以下内容
接下来在浏览器上以下访问地址,看看能否展示页面:
浏览器最终展示了页面,说明项目启动成功了。
四、项目目录、jar、war
在真实环境的打包部署,我们会遇到项目目录、jar 包、war 包的情况。
1)项目目录
由于直接项目目录方式,是 Web 开发早期使用的方式,那时候还没有很好的包管理工具,因此,比较原始,而后,直接把这个项目目录下的所有文件,直接复制到 webapps 下,进而再启动 Tomcat 服务。
Tomcat 的 webapps 下的 ROOT 就是这种方式。
这里就不过多介绍这种方式了,毕竟已经现在主流的做法了。
2)jar
对于 pom.xml 文件,我们会在项目中制定 jar 和 war 的 package 打包方式。
对于 jar 而言,使用命令行直接运行。
这里需要注意的是,项目的 jar 包,需要内嵌集成容器,否则,启动是没有办法运行的。毕竟,程序是要依托于一定的环境之上才能跑起来的。
对于这个方式,这里就不过多介绍了。
3)war
3.1)自动解压 war
通过打 war 包,将 war 包放到 webapps 目录下,然后,启动 Tomcat,自动解压 war,最终形成一个与 war 包同名的项目目录文件。
而访问这个 war 包应用程序,实际上,就是访问的是对应的项目目录文件。
这里以 Idea 构建的一个简单的 web 应用 web-project.war 为例加以补充说明。
启动 Tomcat 之后,webapps 下就有了 web-project 目录文件。
使用浏览器访问,地址如下:
3.2)增量替换与全量替换
写到这里,小编想起了多年以前公司的事情。
当时的公司是一家国企下属技术子公司,用的是 jdk 1.5,然后,生产环境的程序,每次更新,并不是全部重新替换,而是使用一个打包工具,生成对应文件目录下的字节码文件,目录的位置与 main 下的文件位置是一样的。
然后,替换之前,就会备份当前的生产环境代码,而后,再将要替换的文件,直接拖拽到对应文件之下。就相当于如果改了 XXX.java,那么,就将其 XXX.class 直接覆盖生产环境的对应文件。而后再重新启动 Tomcat 就完事了。
当时的团队是担心,全部替换,可能会带来问题,进而影响整个生产环境系统的运行。所以,每次替换都是增量替换。
应该这样说,那个时候还没有很多好的自动化工具,团队为了降低风险,就采用了增量的方式。
现在想来,这就是很笨的做法了。今天的时代,几乎都是全量替换了。
五、自定义目录部署
为了能够提高部署效率,通常可以指定特定的目录,而不是每次都需要把文件丢到 webapps 下。
这里需要注意的是,这个特定的目录下的文件,不能是 jar 或者 war,只能是完整的项目目录。
这里将 web-project 项目文件放于指定的 project 目录下。
随后,需要在 Tomcat 目录下的 conf 里,修改 server.xml 文件。在这个文件的节点 <Host> 下方,增加以下内容即可。
好了,就写到这里,感谢你花费时间阅读,如有不妥之处,还望指出,谢谢。
版权声明: 本文为 InfoQ 作者【Andy】的原创文章。
原文链接:【http://xie.infoq.cn/article/fb99bfe4cf86d7004c41037fb】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论