如何在 CentOS 8 上安装 Tomcat 9

[ad_1]

什么是雄猫?

在本文中,我们将演示如何安装 Apache CentOS 8 上的 Tomcat。在我们开始之前,让我们准确定义什么 Apache 雄猫是。 Apache Tomcat 将 Tomcat 定义为:“一个开源的 servlet 容器、JavaServer Pages、Java 表达式语言和 WebSocket 技术,也充当 Web 服务器。它提供了一个基于“纯 Java”的 HTTP 服务器环境,可以在其中执行 Java。” Tomcat 使用 Java 编程语言,并与用 Java 编写的 Web 应用程序相关联。

先决条件

我们的首要任务是确保我们的系统得到更新。 由于我们要在 CentOS 8 上安装 Tomcat,我们将运行以下命令。

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core) 
[[email protected] ~]#  yum -y install epel-release
[[email protected] ~]# yum -y update -y

接下来,我们需要验证是否已经安装了 Java。

[[email protected] ~]# java -version
-bash: java: command not found
[[email protected] ~]#

如果我们没有安装 Java,我们将收到上面提到的输出。

安装 Java

继续前进,让我们安装 Java。 Apache 如果系统上没有 Java,Tomcat 将无法正常工作。 此外,我们需要确保我们正在安装 Java OpenJDK 11。因为它是开源的并且是一个长期版本,所以我们不会遇到任何许可问题。 要完成此任务,我们将使用以下命令。


[[email protected] ~]# 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!
[[email protected] ~]# 

接下来,我们将通过运行此命令来验证安装的 Java 版本。

[[email protected] ~]# 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)
[[email protected] ~]#

安装Tomcat

注意:在撰写本文时,Tomcat 的最新版本为 9.0.30。 如果您想下载最新版本,请访问 Tomcat 9 的此下载链接 检查最新版本。

首先,我们需要为 Tomcat 创建一个用户。

[[email protected] ~]#useradd -r tomcat
[[email protected] ~]#

接下来,我们将创建一个文件夹,然后使用“cd”命令将目录更改为我们将下载 Tomcat 的文件夹。

[[email protected] ~]# mkdir /usr/local/tomcat9
[[email protected] ~]# cd /usr/local/tomcat9
[[email protected] tomcat9]# 

现在,让我们使用 curl. (如果您的 CentOS 8 版本上安装了 wget 也是一个选项。如果没有,您可能需要安装它以备后用)

[[email protected] 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
[[email protected] tomcat9]#

注意:使用 curl 带有 -o 标志的命令允许我们下载 tar.gz 文件并将其保存在我们选择的任何文件名本地。 在这种情况下,我们只是将文件保存为 tomcat9.tar.gz。

接下来,我们可以将“tomcat9 tar.gz”文件解压到我们的工作文件夹中。

[[email protected] tomcat]# tar -xvf tomcat9.tar.gz
<filescroll>
[[email protected] tomcat9]# 
[[email protected] 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
[[email protected] tomcat]#

现在,我们需要修改 /usr/local/tomcat9/ 目录的所有权。

[[email protected] tomcat9]# chown -R tomcat:tomcat /usr/local/tomcat9
[[email protected] 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
[[email protected] tomcat9]#

默认情况下,您的文件将位于此文件夹中:/usr/local/tomcat9 配置文件将存储在:/usr/local/tomcat9/conf

[[email protected] 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 环境变量:

[[email protected] tomcat9]# echo "export CATALINA_HOME="/usr/local/tomcat9"" >> ~/.bashrc
[[email protected] tomcat9]# source ~/.bashrc

设置此变量是为了确保系统上的所有用户都可以访问软件。

创建和配置 Systemd 服务

首先,让我们回顾一下我们的 Java 信息​​,因为我们需要这些信息来填充我们的单元文件的一部分。

[[email protected] 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)
[[email protected] tomcat]# 
[[email protected] 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

[[email protected] tomcat9]# 

接下来,为了确保我们将 Tomcat 设置为服务,我们将创建一个简单的 systemd 单元文件。

注意:单元文件是一个纯文本记录,它定义了可供 systemd 守护进程管理的系统资源。

[[email protected] tomcat9]# touch /etc/systemd/system/tomcat.service
[[email protected] 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)并重新加载服务以应用更改。

[[email protected] tomcat9]# systemctl daemon-reload

现在我们可以测试 systemd Java 配置文件。

启动、启用和检查Tomcat的状态

接下来,让我们启动Tomcat服务,然后启用它。

[[email protected] tomcat9]# systemctl start tomcat.service
[[email protected] tomcat9]# systemctl enable tomcat.service

现在,我们可以使用以下命令检查其状态。

[[email protected] 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服务器信息,我们可以使用以下命令:

[[email protected] 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

[[email protected] bin]# 

测试

接下来,让我们打开浏览器来测试连接。

加载 https://本地主机:8080 或者 https://server.ip:8080 进入您的浏览器,您应该会看到如下图所示的图像。

错误?

如果有机会,你会得到一个“err_ssl_protocol_error“页面访问https://ip.ad.dr.ess:8080/时,使用验证错误 curl 一旦验证,请执行以下步骤。

[email protected]:~$ 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协议端口。

[[email protected] 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

现在,让我们再次检查端口。

[[email protected] 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

验证正确的防火墙端口已打开。

[[email protected] ~]# firewall-cmd --zone=public --list-ports | grep 8080
8080/tcp 8443/tcp
[[email protected] ~]# 

配置设置

以下是 Tomcat 的一些有用的配置设置。

添加用户

有时,我们可能需要添加新用户或 admin 用户。 我们可以通过转到 Tomcat conf 文件夹并修改这些设置来完成此操作。

[[email protected] 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 文件中的连接器端口设置。
这些是要采取的步骤。

[[email protected] conf]# cd /usr/local/tomcat9/conf/
[[email protected] 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 与 DigitalOcean 帖子,以获取有关您的托管项目或 SMB 基础架构的更多可靠信息。 查看性能、支持和轻松迁移的比较。

还有更多问题? 给我们打电话 800.580.4985,或打开一个 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问之一交谈,以了解您今天如何利用这项技术!

[ad_2]

Related Posts