当您想要部署和执行使用任何 Java 技术(包括 Java Servlet、JSP 等)编写的 Java 应用程序时,您需要 Tomcat。
本篇介绍了如何在 Linux 平台上安装最新的 Apache Tomcat 9.x 版
先决条件:安装 Java 8
要正确安装和配置 Apache Tomcat 9,您需要在系统上安装 Java 版本 8。
要验证系统上的 java 版本,请执行以下操作。
$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
创建 tomcat 用户
首先,以 root 身份创建一个名为 tomcat 的用户并分配一个密码,如下所示。
adduser tomcat
passwd tomcat
接下来,su 到这个新创建的 tomcat 用户。
su - tomcat
下载 Apache Tomcat 9
转至 Apache Tomcat 9下载页面。
在Core下,点击“tar.gz”链接下载最新tomcat的tar.gz版本。
在这个例子中,我们正在下载这个文件:apache-tomcat-9.0.0.M21.tar.gz
安装 Apache Tomcat
首先,使用tar 命令解压 tar.gz 文件,如下所示
tar xvfz apache-tomcat-9.0.0.M21.tar.gz
这将创建一个包含版本号的目录 apache-tomcat。cd 到这个新目录。
cd apache-tomcat-9.0.0.M21
Apache Tomcat 9 目录
您将在此 apache-tomcat 目录下看到以下文件和目录。
$ ls -altr
drwxr-x---. 2 tomcat tomcat 6 May 4 22:42 work
drwxr-x---. 2 tomcat tomcat 6 May 4 22:42 logs
drwxr-x---. 7 tomcat tomcat 76 May 4 22:43 webapps
-rw-r-----. 1 tomcat tomcat 15946 May 4 22:45 RUNNING.txt
-rw-r-----. 1 tomcat tomcat 6709 May 4 22:45 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 1804 May 4 22:45 NOTICE
-rw-r-----. 1 tomcat tomcat 57092 May 4 22:45 LICENSE
drwx------. 2 tomcat tomcat 4096 May 4 22:45 conf
drwxr-x---. 2 tomcat tomcat 29 Jun 1 17:25 temp
drwxr-x---. 2 tomcat tomcat 4096 Jun 1 17:25 lib
drwxr-x---. 2 tomcat tomcat 4096 Jun 1 17:25 bin
在上面:
- bin - 这包含启动 tomcat、设置环境变量等所需的所有二进制文件和 shell 脚本。
- conf - 这是所有配置文件所在的 tomcat 配置目录。主要的 tomcat 服务器配置文件是位于此目录下的 server.xml。
- lib – 包含 tomcat 服务器所需的库文件和类
- logs – 包含 tomcat 的日志和输出文件(即 catalina.out 等)
- webapps – 您将在此处部署 Java Web 应用程序。任何部署在该目录下的应用程序都会被 Apache tomcat 自动加载。例如,您可以在 tomcat 上部署birt-viewer。
- 工作 - 这用作您的网络应用程序的临时工作目录。
- temp – 由 JVM 使用,它将创建由 java.io.tmpdir 指定的任何必需的临时文件。
设置 Apache Tomcat CATALINA_HOME
在 Apache tomcat 脚本中使用的 home 环境变量称为 CATALINA_HOME。
Catalina 指的是 Tomcat。
将此变量设置为我们之前提取的 apache tomcat 的完整目录,如下所示。
export CATALINA_HOME=/home/tomcat/apache-tomcat-9.0.0.M21
除了在命令行上设置之外,请确保将上述行添加到 tomcat 的 bash_profile 中,如下所示。这将确保每次以 tomcat 用户身份登录时都设置此变量。
$ vi ~/.bash_profile
export CATALINA_HOME=/home/tomcat/apache-tomcat-9.0.0.M21
注销并以 tomcat 用户身份登录以验证此环境变量设置是否正确。
$ set | grep CATALINA
CATALINA_HOME=/home/tomcat/apache-tomcat-9.0.0.M21
启动 Apache Tomcat
要启动 Apache tomcat,我们将使用名为 catalina.sh 的脚本,该脚本位于 CATALINA_HOME 的 bin 目录中。
因此,如下所示执行 catalina.sh start 以在您的系统上启动 Apache tomcat。
$ $CATALINA_HOME/bin/catalina.sh start
使用grep命令验证tomcat java进程是否启动并在后台运行如下图。
$ ps -ef | grep -i tomcat
root 3412 2045 0 17:27 pts/0 00:00:00 su - tomcat
tomcat 3413 3412 0 17:27 pts/0 00:00:00 -bash
tomcat 3463 1 1 17:30 pts/0 00:00:02 //bin/java -Djava.util.logging.config.file=/home/tomcat/apache-tomcat-9.0.0.M21/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /home/tomcat/apache-tomcat-9.0.0.M21/bin/bootstrap.jar:/home/tomcat/apache-tomcat-9.0.0.M21/bin/tomcat-juli.jar -Dcatalina.base=/home/tomcat/apache-tomcat-9.0.0.M21 -Dcatalina.home=/home/tomcat/apache-tomcat-9.0.0.M21 -Djava.io.tmpdir=/home/tomcat/apache-tomcat-9.0.0.M21/temp org.apache.catalina.startup.Bootstrap start
注意:如果它没有启动,那么您可能需要正确设置 JAVA_HOME 位置,如下所示。
查看 Tomcat 日志文件
在Tomcat启动后,可以查看日志文件来确定tomcat是否正常启动。这还将告诉您是否所有 Web 应用程序都部署没有任何问题。
日志文件是 catalina.out,如下所示。这显示了 catalina.out 的部分输出
cd $CATALINA_HOME/logs
$ more catalina.out
This is the partial output from the top of the catalina.out file. All of these line start with timestamp followed by "INFO [main] org.apache.catalina.startup.VersionLoggerListener.log", which is not shown here.
$ more catalina.out
Server version: Apache Tomcat/9.0.0.M21
Server built: May 4 2020 22:42:36 UTC
Server number: 9.0.0.0
OS Name: Linux
OS Version: 3.10.0-327.10.1.el7.x86_64
Architecture: amd64
Java Home: /usr/java/jre1.8.0_131
JVM Version: 1.8.0_131-b11
JVM Vendor: Oracle Corporation
CATALINA_BASE: /home/tomcat/apache-tomcat-9.0.0.M21
CATALINA_HOME: /home/tomcat/apache-tomcat-9.0.0.M21
以下是上述 catalina.out 日志文件的最后几行,其中显示 tomcat 服务器正常启动,没有任何问题。
INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/tomcat/apache-tomcat-9.0.0.M21/webapps/manager] has finished in [18] ms
INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 18181 ms
停止 Apache Tomcat
要使用 Apache Tomcat,请使用带有 stop 参数的相同 catalina.sh 脚本,如下所示。
$ $CATALINA_HOME/bin/catalina.sh stop
Using CATALINA_BASE: /home/tomcat/apache-tomcat-9.0.0.M21
Using CATALINA_HOME: /home/tomcat/apache-tomcat-9.0.0.M21
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-9.0.0.M21/temp
Using JRE_HOME: /
Using CLASSPATH: /home/tomcat/apache-tomcat-9.0.0.M21/bin/bootstrap.jar:/home/tomcat/apache-tomcat-9.0.0.M21/bin/tomcat-juli.jar
“catalina.sh stop”后,您将看不到任何在后台运行的java tomcat进程,如下所示。
$ ps -ef | grep -i tomcat
root 3412 2045 0 17:27 pts/0 00:00:00 su - tomcat
tomcat 3413 3412 0 17:27 pts/0 00:00:00 -bash
tomcat 3592 3413 0 17:42 pts/0 00:00:00 ps -ef
tomcat 3593 3413 0 17:42 pts/0 00:00:00 grep --color=auto -i tomcat
除了使用 catalina.sh 脚本,您还可以使用 shutdown.sh 脚本,如下所示。这做同样的事情。
$ $CATALINA_HOME/bin/shutdown.sh
以下是 catalina.out 日志文件的输出,表明 tomcat 服务器已正确关闭,没有任何问题。所有这些行都以时间戳开头,此处未显示。
INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]
INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]
JAVA_HOME 和 JRE_HOME 环境变量
了解这两个环境变量将如何影响您的 Apache Tomcat 很重要:
如果您的系统上安装了多个 Java,那么您可能希望 Apache tomcat 使用特定版本的 Java 而不是默认版本。
为此,您需要适当地设置 JRE_HOME 或 JAVA_HOME。
JRE_HOME – 这是用于 Java 运行时环境。使用此环境变量指定系统上 Java JRE 8 的位置。
JAVA_HOME – 这是用于 Java 开发工具包。使用它来指定 Java JDK 8 在您的系统上的位置。
如果您安装了 JDK,最好使用 JAVA_HOME,因为这将为您提供仅使用 JRE 时不允许的其他启动选项。
出于某种原因,如果您同时设置了 JRE_HOME 和 JAVA_HOME,那么 tomcat 将在启动期间使用 JRE_HOME。
指定这些环境变量的最佳方法是在位于 $CATALINA_HOME/bin 目录下的 setenv.sh 脚本中。
将您的 JAVA_HOME 环境变量添加到 setenv.sh 文件中,如下所示。
$ cd $CATALINA_HOME/bin
$ vi setenv.sh
JAVA_HOME=/usr/java/jdk1.8.0_131
现在当你如下图启动Tomcat时,你可以看到它正在使用JAVA_HOME环境的值来启动tomcat。
$ $CATALINA_HOME/bin/catalina.sh start
Using CATALINA_BASE: /home/tomcat/apache-tomcat-9.0.0.M21
Using CATALINA_HOME: /home/tomcat/apache-tomcat-9.0.0.M21
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-9.0.0.M21/temp
Using JRE_HOME: /usr/java/jdk1.8.0_131
Using CLASSPATH: /home/tomcat/apache-tomcat-9.0.0.M21/bin/bootstrap.jar:/home/tomcat/apache-tomcat-9.0.0.M21/bin/tomcat-juli.jar
Tomcat started.
注意:尽管在上面的输出中显示 JRE_HOME,但请注意它的值实际上是我们在 setenv.sh 文件中设置的 JAVA_HOME 的值。
此外,从 catalina.out 日志文件中,您将在启动期间看到以下内容,这确认这是使用我们设置的这个新值。
信息 [主要] org.apache.catalina.startup.VersionLoggerListener.log Java 主页:/usr/java/jdk1.8.0_131/jre
Apache Tomcat UI – 默认主页
当一切都启动并运行时,您应该可以转到以下 URL 查看 tomcat 主页。
http://{your-ip-address}:8080
默认情况下,Apache tomcat 安装在端口 8080 上运行。
如果您的系统上已经有一些其他应用程序在端口 8080 上运行,那么您可以通过将此端口值从 8080 修改为以下 server.xml 文件中的其他内容来更改此设置:
vi $CATALINA_HOME/conf/server.xml
以下是安装后默认的Apache Tomcat主页。
评论(0)