如何在 Rocky Linux 8 上安装 Apache Tomcat 10 和 Nginx如何在 Rocky Linux 8 上安装 Apache Tomcat 10 和 Nginx如何在 Rocky Linux 8 上安装 Apache Tomcat 10 和 Nginx如何在 Rocky Linux 8 上安装 Apache Tomcat 10 和 Nginx
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Rocky Linux 8 上安装 Apache Tomcat 10 和 Nginx

在此页

  1. 先决条件
  2. 第 1 步 - 安装 Java
  3. 第 2 步 - 创建系统用户
  4. 第 3 步 - 下载 Tomcat
  5. 第 4 步 - 创建 Systemd 单元文件
  6. 第 5 步 - 启动并启用 Tomcat 服务
  7. 第 6 步 - 配置防火墙
  8. 第 7 步 - 配置 Tomcat Web 管理界面
  9. 第 8 步 - 安装 SSL
  10. 第 9 步 - 安装 Nginx
  11. 第 10 步 - 运行 TomCat
  12. 结论

Tomcat 是用于基于 Java 的应用程序的开源 Web 服务器。它用于部署 Java Servlet 和 JSP 应用程序。 Java servlet 是定义服务器如何处理请求和响应的小程序。 Tomcat 充当 Java Servlet、JavaServer Pages、Java 表达式语言和 Java WebSocket 技术的开源实现。

有多个版本的 Tomcat 可用。我们将在教程中讨论 Tomcat 10 的安装。如果要安装 Tomcat 9,说明将相同。如果有任何变化,它们将在教程中指定。

在我们的教程中,我们将安装 Tomcat 10 和 Nginx 服务器作为反向代理并使用 SSL 保护它。有一个 Tomcat 10.1.x 版本,它是 Tomcat 的最新 alpha 版本,但我们不会安装它。

先决条件

  • A server running Rocky Linux 8.5

  • A non-sudo user with superuser privileges.

  • Make sure everything is updated.

    $ sudo dnf update
    
  • Packages required for the installation.

    $ sudo dnf install wget tar
    

第 1 步 - 安装 Java

Tomcat 9 和 10 需要 Java 8 及更高版本。我们将安装 OpenJDK 11,这是 Java 平台的开源实现。

运行以下命令来安装 OpenJDK。

$ sudo dnf install java-11-openjdk-devel

验证安装。

$ java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

第 2 步 - 创建系统用户

我们将创建一个新的系统用户,以通过以根用户身份运行 Tomcat 来最大限度地降低任何安全风险。对于新用户,我们将设置 /opt/tomcat 作为主目录。

运行以下命令为 Tomcat 创建一个新的系统用户。

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

第 3 步 - 下载 Tomcat

可以从其下载页面下载最新版本的 Tomcat v10。在编写本教程时,v10.0.14 是最新的可用版本。在下载 Tomcat 之前检查最新版本。

使用wget 下载Tomcat。

$ VERSION=10.0.14
$ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz

将文件解压到 /opt/tomcat 目录。

$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

创建指向 Tomcat 安装目录的最新版本 Tomcat 的符号链接。

$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

将目录的所有权更改为之前创建的用户。

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

第 4 步 - 创建系统单元文件

下一步是为 Tomcat 服务器创建一个服务文件,以便它可以自动启动。

创建并打开文件 /etc/systemd/system/tomcat.service 进行编辑。

$ sudo nano /etc/systemd/system/tomcat.service

粘贴以下代码。

[Unit]
Description=Apache Tomcat 10 Servlet container
Wants=network.target
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

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

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

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
Restart=always

[Install]
WantedBy=multi-user.target

通过按 Ctrl + X 并在提示保存时输入 Y 来保存文件。

第 5 步 - 启动并启用 Tomcat 服务

重新加载服务守护进程以启用 Tomcat 服务。

$ sudo systemctl daemon-reload

启用并启动 Tomcat 服务。

$ sudo systemctl enable tomcat --now

检查服务状态。

$ sudo systemctl status tomcat
? tomcat.service - Apache Tomcat 10 Servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-12-17 15:54:28 UTC; 24s ago
  Process: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 86226 (java)
    Tasks: 19 (limit: 11411)
   Memory: 132.7M
   CGroup: /system.slice/tomcat.service
           ??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties>

Dec 17 15:54:27 howtoforge systemd[1]: Starting Apache Tomcat 10 Servlet container...
Dec 17 15:54:28 howtoforge systemd[1]: Started Apache Tomcat 10 Servlet container.

第 6 步 - 配置防火墙

Rocky Linux 使用 Firewalld 防火墙。检查防火墙状态。

$ sudo firewall-cmd --state
running

允许 HTTP 和 HTTPS 端口。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

重新加载防火墙以启用更改。

$ sudo firewall-cmd --reload

第 7 步 - 配置 Tomcat Web 管理界面

网络管理界面只有在我们为其创建用户凭据后才能访问。

Tomcat 用户和角色在 /opt/tomcat/latest/conf/tomcat-users.xml 文件中定义。打开文件进行编辑。

$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

在 行之前添加以下行。用您的凭据替换用户名和密码。

为经理和管理员 Tomcat 门户选择不同的凭据。

<tomcat-users>
<!--
    Comments
-->
<role rolename="manager-gui"/>
    <user username="manager" password="managerpassword" roles="manager-gui" />
<role rolename="admin-gui"/>
	<user username="admin" password="adminpassword" roles="admin-gui"/>
</tomcat-users>

通过按 Ctrl + X 并在提示保存时输入 Y 来保存文件。

默认情况下,Tomcat 界面只能从本地主机访问。如果您需要从任何地方访问它,则需要对其进行配置。

打开 /opt/tomcat/latest/webapps/manager/META-INF/context.xml 进行编辑。

$ sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml

删除以下行或按照以下指定将其注释掉,方法是将其括在 中。

<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

允许从任何 IP 地址访问都存在安全风险。您可以通过仅允许从您的公共 IP 地址访问来限制它。如果您的公共 IP 地址是 22.22.22.22,则按如下方式更改该行。

 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|22.22.22.22" />

允许的 IP 地址列表由竖线 (|) 分隔。您可以添加单个 IP 地址或使用正则表达式。

通过按 Ctrl + X 并在提示保存时输入 Y 来保存文件。

对文件 /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml 也执行相同的更改。

完成后,重新启动 Tomcat 服务器。

$ sudo systemctl restart tomcat

第 8 步 - 安装 SSL

要使用 Lets Encrypt 安装 SSL 证书,我们需要安装 Certbot 工具。

首先,您需要下载并安装 EPEL 存储库。

$ sudo dnf install epel-release

运行以下命令来安装 Certbot。

$ sudo dnf install certbot

生成 SSL 证书。

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d tomcat.example.com

上面的命令会将证书下载到服务器上的 /etc/letsencrypt/live/tomcat.example.com 目录。

生成 Diffie-Hellman 组证书。

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

为 Lets Encrypt 自动更新创建一个挑战 webroot 目录。

$ sudo mkdir -p /var/lib/letsencrypt

创建 Cron 作业以更新 SSL。它将每天运行以检查证书并在需要时更新。为此,首先,创建文件 /etc/cron.daily/certbot-renew 并打开它进行编辑。

$ sudo nano /etc/cron.daily/certbot-renew

粘贴以下代码。

#!/bin/sh
certbot renew --cert-name tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

更改任务文件的权限以使其可执行。

$ sudo chmod +x /etc/cron.daily/certbot-renew

第 9 步 - 安装 Nginx

Rocky Linux 8.5 附带了最新的稳定版 Nginx。使用以下命令安装它。

$ sudo dnf module install nginx:1.20

验证安装。

$ nginx -v
nginx version: nginx/1.20.1

启用并启动 Nginx 服务。

$ sudo systemctl enable nginx --now

创建并打开文件 /etc/nginx/conf.d/tomcat.conf 进行编辑。

$ sudo nano /etc/nginx/conf.d/tomcat.conf

将以下代码粘贴到其中。

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  tomcat.example.com;

    access_log  /var/log/nginx/tomcat.access.log;
    error_log   /var/log/nginx/tomcat.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/tomcat.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/tomcat.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/tomcat.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    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 Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  tomcat.example.com;
    return 301   https://$host$request_uri;
}

完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

打开文件 /etc/nginx/nginx.conf 进行编辑。

$ sudo nano /etc/nginx/nginx.conf

在行 include /etc/nginx/conf.d/*.conf; 之前添加以下行。

server_names_hash_bucket_size  64;

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

验证 Nginx 配置文件语法。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重新启动 Nginx 服务以启用新配置。

$ sudo systemctl restart nginx

第 10 步 - 运行 TomCat

在浏览器中启动 https://tomcat.example.com,它将打开以下屏幕。

您现在可以使用我们在第 7 步中配置的登录凭据访问服务器状态、管理器应用程序和主机管理器页面。

结论

我们关于在基于 Rocky Linux 8.5 的服务器上安装和配置 Tomcat 服务器并通过 Nginx 反向代理服务并使用 SSL 保护它的教程到此结束。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com