什么是雄猫?
在本文中,我们将演示如何安装 Apache CentOS 8 上的 Tomcat。在我们开始之前,让我们准确定义什么 Apache 雄猫是。 Apache 将 Tomcat 定义为:“一种开源的 servlet 容器、JavaServer Pages、Java 表达式语言和 WebSocket 技术,它还充当 Web 服务器。它提供了一个基于“纯 Java”的 HTTP 服务器环境,可以在其中执行 Java。” Tomcat 使用 Java 编程语言并与用 Java 编写的 Web 应用程序相关联。
先决条件
我们的首要任务是确保我们的系统得到更新。 由于我们要在 CentOS 8 上安装 Tomcat,我们将运行以下命令。
[root@host ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
[root@host ~]# yum -y install epel-release
[root@host ~]# yum -y update -y
接下来,我们需要验证是否已经安装了 Java。
[root@host ~]# java -version
-bash: java: command not found
[root@host ~]#
如果我们没有安装 Java,我们将收到上面提到的输出。
安装 Java
继续前进,让我们安装 Java。 Apache 如果系统上不存在 Java,Tomcat 将无法正常工作。 此外,我们需要确保我们正在安装 Java OpenJDK 11。因为它是开源的并且是长期发布的,所以我们不会遇到任何许可问题。 为了完成这个任务,我们将使用以下命令。
[root@host ~]# dnf install java-11-openjdk-devel
Last metadata expiration check: 0:53:36 ago on Tue 04 Feb 2020 02:50:27 PM EST.
Dependencies resolved.
======================================================================
Package Architecture Version Repository Size
======================================================================
Installing:
java-11-openjdk-devel x86_64 1:11.0.5.10-2.el8_1 AppStream 3.3 M
...
...
...
javapackages-runtime 201801
Transaction Summary
======================================================================
Install 53 Packages
Total download size: 67 M
Installed size: 255 M
Downloading Packages:
(1/53): abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm 2.8 MB/s | 155 kB 00:00
(2/53): at-spi2-atk-2.26.2-1.el8.x86_64.rpm 4.7 MB/s | 89 kB 00:00
(3/53): adwaita-cursor-theme-3.28.0-2.el8.noarch.rpm
...
...
...
Complete!
[root@host ~]#
接下来,我们将通过运行此命令来验证安装的 Java 版本。
[root@host ~]# java -version
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)
[root@host ~]#
安装 Tomcat
注意:在撰写本文时,Tomcat 的最新版本是 9.0.30。 如果您想下载最新版本,请访问 这个 Tomcat 9 的下载链接 检查最新版本。
首先,我们需要为 Tomcat 创建一个用户。
[root@host ~]#useradd -r tomcat
[root@host ~]#
接下来,我们将创建一个文件夹,然后使用“cd”命令将目录更改为我们将下载 Tomcat 的文件夹。
[root@host ~]# mkdir /usr/local/tomcat9
[root@host ~]# cd /usr/local/tomcat9
[root@host tomcat9]#
现在,让我们使用 curl. (如果 wget 安装在您的 CentOS 8 版本上,它也是一个选项。如果没有,您可能需要安装它以供以后使用)
[root@host tomcat9]# curl -o tomcat9.tar.gz https://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10.5M 100 10.5M 0 0 3404k 0 0:00:03 0:00:03 --:--:-- 3404k
[root@host tomcat9]#
注意:使用 curl 带有 -o 标志的命令允许我们下载 tar.gz 文件并将其在本地保存为我们选择的任何文件名。 在这种情况下,我们只是将文件保存为 tomcat9.tar.gz。
接下来,我们可以将“tomcat9 tar.gz”文件解压到我们的工作文件夹中。
[root@host tomcat]# tar -xvf tomcat9.tar.gz
<filescroll>
[root@host tomcat9]#
[root@host tomcat9]# ll
total 10912
-rw-r--r-- 1 root root 11026056 Jan 31 18:46 apache-tomcat-9.0.30.tar.gz
drwxr-x--- 2 root root 4096 Jan 31 18:47 bin
-rw-r----- 1 root root 18982 Dec 7 11:46 BUILDING.txt
drwx------ 2 root root 4096 Dec 7 11:46 conf
-rw-r----- 1 root root 5409 Dec 7 11:46 CONTRIBUTING.md
drwxr-x--- 2 root root 4096 Jan 31 18:47 lib
-rw-r----- 1 root root 57092 Dec 7 11:46 LICENSE
drwxr-x--- 2 root root 4096 Dec 7 11:42 logs
-rw-r----- 1 root root 2333 Dec 7 11:46 NOTICE
-rw-r----- 1 root root 3255 Dec 7 11:46 README.md
-rw-r----- 1 root root 6898 Dec 7 11:46 RELEASE-NOTES
-rw-r----- 1 root root 16262 Dec 7 11:46 RUNNING.txt
drwxr-x--- 2 root root 4096 Jan 31 18:47 temp
drwxr-x--- 7 root root 4096 Dec 7 11:43 webapps
drwxr-x--- 2 root root 4096 Dec 7 11:42 work
[root@host tomcat]#
现在,我们需要修改 /usr/local/tomcat9/ 目录的所有权。
[root@host tomcat9]# chown -R tomcat:tomcat /usr/local/tomcat9
[root@host tomcat9]# ll
total 10912
-rw-r--r-- 1 tomcat tomcat 11026056 Jan 31 18:46 apache-tomcat-9.0.30.tar.gz
drwxr-x--- 2 tomcat tomcat 4096 Jan 31 18:47 bin
-rw-r----- 1 tomcat tomcat 18982 Dec 7 11:46 BUILDING.txt
drwx------ 2 tomcat tomcat 4096 Dec 7 11:46 conf
-rw-r----- 1 tomcat tomcat 5409 Dec 7 11:46 CONTRIBUTING.md
drwxr-x--- 2 tomcat tomcat 4096 Jan 31 18:47 lib
-rw-r----- 1 tomcat tomcat 57092 Dec 7 11:46 LICENSE
drwxr-x--- 2 tomcat tomcat 4096 Dec 7 11:42 logs
-rw-r----- 1 tomcat tomcat 2333 Dec 7 11:46 NOTICE
-rw-r----- 1 tomcat tomcat 3255 Dec 7 11:46 README.md
-rw-r----- 1 tomcat tomcat 6898 Dec 7 11:46 RELEASE-NOTES
-rw-r----- 1 tomcat tomcat 16262 Dec 7 11:46 RUNNING.txt
drwxr-x--- 2 tomcat tomcat 4096 Jan 31 18:47 temp
drwxr-x--- 7 tomcat tomcat 4096 Dec 7 11:43 webapps
drwxr-x--- 2 tomcat tomcat 4096 Dec 7 11:42 work
[root@host tomcat9]#
默认情况下,您的文件将位于以下文件夹:/usr/local/tomcat9,配置文件将存储在:/usr/local/tomcat9/conf
[root@host tomcat9]# ll
total 144
drwxr-x--- 2 tomcat tomcat 4096 Feb 4 17:26 bin
-rw-r----- 1 tomcat tomcat 18982 Dec 7 11:46 BUILDING.txt
drwx------ 3 tomcat tomcat 4096 Feb 4 15:54 conf
-rw-r----- 1 tomcat tomcat 5409 Dec 7 11:46 CONTRIBUTING.md
drwxr-x--- 2 tomcat tomcat 4096 Feb 4 15:50 lib
-rw-r----- 1 tomcat tomcat 57092 Dec 7 11:46 LICENSE
drwxr-x--- 2 tomcat tomcat 4096 Feb 4 15:54 logs
-rw-r----- 1 tomcat tomcat 2333 Dec 7 11:46 NOTICE
-rw-r----- 1 tomcat tomcat 3255 Dec 7 11:46 README.md
-rw-r----- 1 tomcat tomcat 6898 Dec 7 11:46 RELEASE-NOTES
-rw-r----- 1 tomcat tomcat 16262 Dec 7 11:46 RUNNING.txt
drwxr-x--- 2 tomcat tomcat 4096 Feb 4 17:27 temp
drwxr-x--- 7 tomcat tomcat 4096 Dec 7 11:43 webapps
drwxr-x--- 3 tomcat tomcat 4096 Feb 4 15:54 work
设置环境变量
现在,我们可以使用以下命令配置 CATALINA_HOME 环境变量:
[root@host tomcat9]# echo "export CATALINA_HOME="/usr/local/tomcat9"" >> ~/.bashrc
[root@host tomcat9]# source ~/.bashrc
设置此变量是为了确保系统上的所有用户都可以访问软件。
创建和配置 Systemd 服务
首先,让我们回顾一下我们的 Java 信息,因为我们需要这些信息来填充我们的单元文件的一部分。
[root@host tomcat]# java -version
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.ets0.5+10-LTS, mixed mode, sharing)
[root@host tomcat]#
[root@host tomcat9]# alternatives --list | grep java
jre_openjdk auto /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64
javac auto /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64/bin/javac
java_sdk_11_openjdk auto /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64
java_sdk_openjdk auto /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64
jre_11 auto /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64
java auto /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64/bin/java
java_sdk_11 auto /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64
[root@host tomcat9]#
接下来,为确保将 Tomcat 设置为服务,我们将创建一个简单的 systemd 单元文件。
注意:单元文件是一个纯文本记录,它定义了可供 systemd 守护进程管理的系统资源。
[root@host tomcat9]# touch /etc/systemd/system/tomcat.service
[root@host tomcat9]# vim /etc/systemd/system/tomcat.service
现在,我们可以将以下信息添加到我们的新单元文件中。
[Unit]
Description=Apache Tomcat Server
After=syslog.target network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=CATALINA_PID=/usr/local/tomcat9/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat9
Environment=CATALINA_BASE=/usr/local/tomcat9
ExecStart=/usr/local/tomcat9/bin/catalina.sh start
ExecStop=/usr/local/tomcat9/bin/catalina.sh stop
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
除了上面列出的指令之外,该单元文件还可以包含多个指令。 在此之后,我们需要保存文件(使用 :wq)并重新加载服务以应用更改。
[root@host tomcat9]# systemctl daemon-reload
现在我们可以测试 systemd Java 配置文件了。
启动、启用和检查 Tomcat 的状态
接下来,让我们启动Tomcat服务,然后启用它。
[root@host tomcat9]# systemctl start tomcat.service
[root@host tomcat9]# systemctl enable tomcat.service
现在,我们可以使用以下命令检查其状态。
[root@host tomcat9]# systemctl status tomcat.service
● tomcat.service - Apache Tomcat Server
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-02-04 17:27:23 EST; 23min ago
Main PID: 59815 (java)
Tasks: 42 (limit: 10686)
Memory: 93.1M
CGroup: /system.slice/tomcat.service
└─59815 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat9/conf/logging.properties -Djava.util.logging.>
Feb 04 17:27:23 host.lwkbcentos.com systemd[1]: tomcat.service: Service RestartSec=10s expired, scheduling restart.
Feb 04 17:27:23 host.domain.com systemd[1]: tomcat.service: Scheduled restart job, restart counter is at 485.
Feb 04 17:27:23 host.domain.com systemd[1]: Stopped Apache Tomcat Server.
Feb 04 17:27:23 host.domain.com systemd[1]: Starting Apache Tomcat Server...
Feb 04 17:27:23 host.domain.com catalina.sh[59801]: Existing PID file found during start.
Feb 04 17:27:23 host.domain.com catalina.sh[59801]: Removing/clearing stale PID file.
Feb 04 17:27:23 host.domain.com catalina.sh[59801]: Tomcat started.
Feb 04 17:27:23 host.domain.com systemd[1]: Started Apache Tomcat Server.
最后,按 ‘q’ 键退出状态检查并返回 bash 迅速的。
版本检查
要检索 Tomcat 服务器信息,我们可以使用以下命令:
[root@host bin]# /usr/local/tomcat9/bin/version.sh
Using CATALINA_BASE: /usr/local/tomcat9
Using CATALINA_HOME: /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Server version: Apache Tomcat/9.0.30
Server built: Dec 7 2019 16:42:04 UTC
Server number: 9.0.30.0
OS Name: Linux
OS Version: 4.18.0-147.3.1.el8_1.x86_64
Architecture: amd64
JVM Version: 11.0.5+10-LTS
JVM Vendor: Oracle Corporation
[root@host bin]#
测试
接下来,让我们打开浏览器来测试连接。
加载 https://localhost:8080 或者 https://server.ip:8080 进入您的浏览器,您应该会看到如下图所示的图像。
错误?
如果有机会,你得到一个“err_ssl_protocol_error” 访问 https://ip.ad.dr.ess:8080/ 时的页面,使用验证错误 curl 一旦验证,请执行以下步骤。
user@host:~$ curl -Iv https://67.225.186.120:8080
* Trying 67.225.186.120:8080...
* TCP_NODELAY set
* connect to 67.225.186.120 port 8080 failed: Connection refused
* Failed to connect to 67.225.186.120 port 8080: Connection refused
* Closing connection 0
curl: (7) Failed to connect to 67.225.186.120 port 8080: Connection refused
1. 检查以确保在防火墙中打开 Java/Tomcat 端口
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --zone=public --permanent --add-port=8443/tcp
2. 运行 netstat 命令检查服务器是否正在侦听 IPv4 地址(和/或 IPv6 地址,如果需要)。
查看 netstat 后,我们看到 Tomcat 只绑定了 IPv6 协议端口。
[root@host tomcat9]# netstat -nlp | grep java
tcp6 0 0 :::8080 :::* LISTEN 33080/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 33080/java
tcp6 0 0 :::8009 :::* LISTEN 33080/java
注意:您可能需要使用“yum install net-tools”命令安装 Netstat 来查看此问题,因为我们的 CentOS 8 版本默认不包含 netstat 命令。
要解决这个问题,请在您的 CATALINA_BASE 或 CATALINA_HOME bin/ 目录中创建一个名为 setenv.sh 的文件
(我们使用了 /usr/local/tomcat9/bin 文件夹)。
接下来,创建一个名为 setenv.sh 的新文件。
cd bin/
touch setenv.sh
vim setenv.sh
单击插入并将以下行添加到文件中。
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
此条目会覆盖 Tomcat 使用的默认设置。 一旦该任务完成,使用 “:wq” 保存并退出文件并重新加载服务以保存我们的更改。
systemctl daemon-reload
现在,让我们再次检查端口。
[root@host tomcat9]# netstat -nlp | grep java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 59815/java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 59815/java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 59815/java
验证正确的防火墙端口是否打开。
[root@host ~]# firewall-cmd --zone=public --list-ports | grep 8080
8080/tcp 8443/tcp
[root@host ~]#
配置设置
以下是 Tomcat 的一些有用的配置设置。
添加用户
有时,我们可能需要添加新用户或 admin 用户。 我们可以通过转到 Tomcat conf 文件夹并修改这些设置来完成此操作。
[root@host conf]# cd /usr/local/tomcat9/conf
<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="_SECRET_PASSWORD_" roles="manager-gui,admin-gui" />
注意:我们可以通过 vi 或 vim 打开文件,或者利用文件管理器并使用文本编辑器打开文件。
最后,使用 :wq 保存文件。
更改端口
有时,您可能希望在备用端口上运行 Tomcat。 为此,我们可以修改 server.xml 文件中的连接器端口设置。
这些是要采取的步骤。
[root@host conf]# cd /usr/local/tomcat9/conf/
[root@host conf]# vim /usr/local/tomcat9/conf/server.xml
在 server.xml 文件中或在文本编辑器中,我们可以修改“连接器端口”行,将其从端口 8080 更改为 80 或我们选择的任何其他端口号。
Line
69 <Connector port="8080" protocol="HTTP/1.1"
70 connectionTimeout="20000"
71 redirectPort="8443" />
结论
总体而言,Tomcat 很容易促进客户端和 servlet 之间的数据交换,为 Web 应用程序提供编程平台,并承担识别和授权客户端的功能,以安全可靠的方式为每个客户端创建会话。
比较供应商?
考虑查看我们的 Liquidweb vs DigitalOcean 帖子,以获取有关您的托管项目或 SMB 基础架构的更多可靠信息。 查看性能、支持和轻松迁移方面的比较。
还有更多问题吗? 给我们打电话 800.580.4985,或打开 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问交谈,了解您今天如何利用这项技术!