在 AlmaLinux/Rocky Linux 9 上设置 Tomcat、Nginx 和 SSL在 AlmaLinux/Rocky Linux 9 上设置 Tomcat、Nginx 和 SSL在 AlmaLinux/Rocky Linux 9 上设置 Tomcat、Nginx 和 SSL在 AlmaLinux/Rocky Linux 9 上设置 Tomcat、Nginx 和 SSL
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 AlmaLinux/Rocky Linux 9 上设置 Tomcat、Nginx 和 SSL

发表 admin at 2025年2月28日
类别
  • 未分类
标签

以下是如何在 AlmaLinux/Rocky Linux 9 上安装和配置 Tomcat 10.1,并使用 Nginx 进行反向代理和 Let's Encrypt SSL 证书。

Apache Tomcat 是一个长期存在的开源 Web 服务器和 servlet 容器,它实现了 Jakarta Enterprise Edition 规范。

其最新版本 Tomcat 10.1 支持 Servlet 6.0、JavaServer Pages 3.1、WebSocket 2.1 和 JASPIC 3.0 规范,以及许多其他功能,使其成为开发和部署基于 Java 的 Web 应用程序和服务的便捷平台。

AlmaLinux 和 Rocky Linux 是最受欢迎的红帽企业 Linux 替代品。它们是可靠、安全且稳定的面向服务器的 Linux 发行版,可确保您的服务器无缝运行。

本指南将引导您在 AlmaLinux 9 或 Rocky Linux 9 上安装和配置 Tomcat 10.1。不过,除此之外,我们还会更进一步。

我们将在 Tomcat 前面安装并配置 Nginx 作为反向代理服务器,为 HTTP(S) 请求提供服务并将其转发回 Tomcat。此外,我们将通过颁发免费的 Let’s Encrypt SSL 证书来保证安全的 SSL 连接。

先决条件

您需要访问 AlmaLinux 9 或 Rocky Linux 9 服务器才能完成本指南。此外,显示的所有命令均由具有 sudo 执行权限的普通用户运行。因此,您应该拥有一台。

当然,您可以跳过命令的 sudo 部分并直接以 root 用户身份运行它们。两种情况的结果是相同的。

此外,请确保您的防火墙不会阻止服务器的端口 80 和 443。

sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --reload

第 1 步:更新软件存储库

首先,我们将使用 DNF 命令来更新可用软件包的列表。这可确保在整个安装过程中仅使用最新版本的软件包并防止出现困难。

此外,请确保系统已完全更新。如果软件包正在等待更新,请在继续之前应用它们。

sudo dnf update

第二步:安装Java运行环境

Apache Tomcat 10.1 需要 Java 运行时环境 (JRE) 标准版 11 或更高版本。因此,我们将安装 OpenJDK 11,Java 平台的开源实现。

sudo dnf install java-11-openjdk-headless

安装完成后,让我们确认现在有一个可以工作的 Java 环境。

java -version

第三步:创建Tomcat系统用户

这一步也可以被认为是可选的,但我强烈推荐它。在其中,我们将创建一个仅用于 Tomcat 工作的系统用户。

这样做可以降低安全复杂性的可能性,例如,如果我们为此目的使用 root 帐户。

以下命令将在您的 AlmaLinux 9 或 Rocky Linux 9 系统上创建名为 tomcat 的用户和组:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

步骤4:在AlmaLinux/Rocky Linux 9上安装Tomcat

Tomcat是一个独立于平台的服务器,只要安装了Java,安装就很简单。不幸的是,默认情况下,Tomcat 在 Alma Linux 9 或 Rocky Linux 9 存储库中不可用。

因此,首先,您需要下载合适的版本。在撰写本文时,最新的可用版本是 Tomcat 10.1。

您可以在下载之前从 Tomcat 下载页面检查最新版本,如有必要,请在下面的 wget 命令中进行调整。

当然,请确保您的Linux系统安装了wget工具。如果没有,您可以通过键入以下内容轻松安装:

sudo dnf install wget

然后,下载 Tomcat 服务器:

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.1/bin/apache-tomcat-10.1.1.tar.gz

下载完成后,将 tar 文件解压到 /opt/tomcat 目录:

sudo tar xzvf apache-tomcat-10.*.tar.gz -C /opt/tomcat --strip-components=1

接下来,设置适当的文件权限:

sudo chown -R tomcat:tomcat /opt/tomcat/

第5步:配置Tomcat Web管理界面

Tomcat 提供了基于 Web 的管理控制台,但您应该创建用户和角色才能使用它。它们在 /opt/tomcat/conf/tomcat-users.xml 文件中定义。因此,使用您喜欢的文本编辑器打开该文件:

sudo vim /opt/tomcat/conf/tomcat-users.xml

将以下代码粘贴到   标记内。更改管理员和经理访问权限的“PASSWORD”字符串。

<!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="manager" password="PASSWORD" roles="manager-gui" />

<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="PASSWORD" roles="manager-gui,admin-gui" />

另外,默认情况下,Tomcat Web 管理界面只能从本地主机访问。因此,如果您想从任何地方访问它,您必须对其进行配置。

您需要编辑“/opt/tomcat/webapps/manager/META-INF/context.xml”文件并添加您访问 Tomcat Web 管理界面的远程系统的 IP 地址。

假设这是一个 IP 地址为 1.2.3.4 的系统。使用您喜欢的文本编辑器打开文件:

sudo vim /opt/tomcat/webapps/manager/META-INF/context.xml

然后按如下方式更改该行:

如您所见,允许的 IP 地址列表由竖线“|”分隔。保存并退出文件。

现在,对“/opt/tomcat/webapps/host-manager/META-INF/context.xml”文件再次执行相同的更改。

sudo vim /opt/tomcat/webapps/host-manager/META-INF/context.xml

第6步:创建Tomcat Systemd服务

默认情况下,我们没有 Tomcat 的 systemd 单元文件;因此,我们无法将其作为启动、停止和重新启动意义上的服务进行管理。那么,让我们创建一个。

使用您喜欢的终端文本编辑器创建文件 tomcat.service:

sudo vim /etc/systemd/system/tomcat.service

粘贴以下代码,然后保存并退出文件。

[Unit]
Description=Apache Tomcat Server
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

步骤7:启用并启动Tomcat服务

首先,重新加载 systemd 守护进程以应用更改:

sudo systemctl daemon-reload

然后,将 Tomcat 设置为开机自动启动:

sudo systemctl enable tomcat

最后,在 AlmaLinux/Rocky Linux 9 系统上启动 Tomcat 服务器:

sudo systemctl start tomcat

检查 Tomcat 服务器的状态以确保其已启动并正在运行:

sudo systemctl status tomcat

第8步:访问Tomcat

在继续之前,我们将确保 Tomcat 服务器在 AlmaLinux 9 或 Rocky Linux 9 系统上正确安装并按预期运行。

默认情况下,Tomcat 在端口 8080 上侦听传入连接。因此,您应该暂时使用以下命令在服务器防火墙上打开此端口。

sudo firewall-cmd --add-port=8080/tcp

然后将浏览器指向“http://:8080”或与服务器 IP 地址关联的域名。

为了本指南的目的,我们创建了一个临时子域“tomcat.nerezia.com”,我们将使用它。

到目前为止,一切都很好。 Tomcat服务器已成功安装并运行在我们的AlmaLinux/Rocky Linux 9系统上。

当您单击“管理器应用程序”或“主机管理器”按钮时,系统会要求您提供管理员用户名和密码。输入您的凭据,然后登录。在下一页上,您应该看到 Web 应用程序管理器/主机管理器。

第 9 步:使用 SSL 证书保护 Tomcat

为了提供与 Tomcat 服务器的安全加密通信,我们将使用 Let’s Encrypt 为我们的子域 tomcat.nerezia.com 获取免费的 SSL 证书,这将提供 HTTPS 功能。

为此,我们需要在系统上安装几个附加软件包,这些软件包不属于 AlmaLinux/Rocky Linux 9 存储库,但存在于 EPEL 存储库中。所以,我们先添加它。

sudo dnf install epel-release

然后,安装 certbot 包,这是一个自动化的 Let’s Encrypt 证书颁发程序。

sudo dnf install certbot

最后,让我们生成免费的 SSL 证书。

sudo certbot certonly --agree-tos -m bobby@linuxiac.com --no-eff-email --standalone --preferred-challenges http -d tomcat.nerezia.com

太好了,我们现在有了有效的 SSL 证书。当然,请将“-m”选项后面的部分替换为您的实际电子邮件地址。当证书到期更新时,您将收到通知。 Let's Encrypt 证书有效期为 90 天。

请记住将“-d”后面的部分替换为您的域名。请查看我们的 Let’s Encrypt 和 Certbot 文章了解更多详细信息。现在让我们继续最后一步。

第10步:为Tomcat设置Nginx反向代理

正如已经提到的,Tomcat 默认侦听端口 8080。因此,我们需要将 Nginx 设置为反向代理,将 HTTP(S) 请求转发到 Tomcat 的 8080 端口。

首先,安装 Nginx Web 服务器。

sudo dnf install nginx

接下来,为 Tomcat 创建一个新的服务器块(虚拟主机)配置文件。

sudo vim /etc/nginx/conf.d/tomcat.conf

将以下代码粘贴到文件中,确保调整 SSL 证书的域名和文件名。

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name tomcat.nerezia.com;

    ssl_certificate /etc/letsencrypt/live/tomcat.nerezia.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tomcat.nerezia.com/privkey.pem;

    access_log /var/log/nginx/tomcat-access.log;
    error_log /var/log/nginx/tomcat-error.log;

    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

server {
    listen 80;
    listen [::]:80;
    server_name tomcat.nerezia.com;
    return 301 https://$host$request_uri;
}

保存并退出文件。然后,要应用更改,请启用 Nginx 服务并重新启动 Web 服务器:

sudo systemctl enable nginx
sudo systemctl restart nginx

检查 Nginx 服务是否功能齐全:

sudo systemctl status nginx

最后,运行以下命令来更改 SELinux 策略。它在安全级别启用反向代理功能。

sudo setsebool -P httpd_can_network_relay on

现在启动浏览器并导航到您的域地址。再次,现在熟悉的页面将向您打招呼,但这次所有流量都是安全的 HTTPS 并由 Nginx 提供服务。

请记住暂时禁用对端口 8080 的访问,因为我们不再需要它。

sudo firewall-cmd --remove-port=8080/tcp

结论

恭喜!您已在 AlmaLinux/Rocky Linux 9 上成功安装并配置了 Apache Tomcat 10.1,并使用 Nginx 进行反向代理和 Let's Encrypt SSL 证书。现在,您的 Tomcat 服务器已完全运行并准备用于生产。

这标志着我们的指南的结束。我希望我对你有所帮助。有任何想法和建议欢迎在下面的评论部分留言。

享受使用 Apache Tomcat。有关更多信息,请访问 Tomcat Doc 上的官方文档。

©2015-2025 Norria support@norria.com