安装指南

Red Hat JBoss Web Server 5.3

安装和配置红帽 JBoss Web 服务器 5.3

摘要

本书包含有关红帽 JBoss Web 服务器的安装和基本配置的信息。

第 1 章 简介

本安装指南包括从 JBoss Web 服务器在受支持的操作系统上安装、次要升级和基本配置的步骤。Apache HTTP 服务器的安装和配置说明包括在 JBoss 核心服务文档中

1.1. 关于红帽 JBoss Web 服务器

红帽 JBoss Web 服务器是用于托管 Java Web 应用程序的完整集成和认证组件集合。它由以下组件组成:

  • Web 服务器(Apache HTTP 服务器),
  • 应用服务器(Apache Tomcat Servlet 容器),
  • 负载平衡器(mod_jk 和 mod_cluster)
  • Tomcat 原生库

1.1.1. 组件的完整列表

Red Hat JBoss Web 服务器包含以下组件:

组件Version

Apache CXF

3.2.7

Apache Tomcat 9

9.0.21

ECJ

4.12.0

Hibernate

5.3.10

JBoss logging

3.3.2

libapr

1.6.3

mod_cluster

1.4.1.Final

OpenSSL

1.1.1c

tomcat-Native

1.2.21

tomcat-Vault

1.1.8.Final

重要

Apache Tomcat 由 RHEL 平台订阅提供,作为 RHEL 6 和 RHEL 7 的一部分,但不 提供 RHEL 8。在以后的版本中,Tomcat 将作为中间件运行时订阅的一部分提供。RHEL 和 Tomcat 提供的 Tomcat 存在一些差异,它们由 Runtimes JWS 订阅提供。RHEL 6 具有 Tomcat 6,RHEL 7 具有 Tomcat 7。JWS 版本 3.1 提供 Tomcat 7 和 8 版,以及 JWS 5.x 提供 Tomcat 9。由于 RHEL 6 当前处于维护状态且未获得全面支持,因此任何 Tomcat 问题都需要仅适用于 JWS 授权版本(Tomcat 7、8 和 9)。此外,这两个项目都提供 RPM 软件包,但只有 JWS 提供 .ZIP 存档。

一些关键组件的描述如下:

  • Apache tomcat :遵循 Java Servlet 规范的 servlet 容器。JBoss Web 服务器包含 Apache Tomcat 9。
  • Apache tomcat 本地库 :一个可提高 Tomcat 可扩展性、性能和与本地服务器技术的集成的 Tomcat 库。
  • tomcat-vault :JBoss Web 服务器的扩展,用于安全存储 JBoss Web 服务器使用的密码和其他敏感信息。
  • mod_cluster 库:此库允许 Apache Tomcat 和 Apache HTTP 服务器的 mod_proxy_cluster 模块之间进行通信。这可让您将 Apache HTTP 服务器用作 JBoss Web 服务器的负载平衡器。有关 mod_cluster 配置的更多信息,或者有关替代负载均衡器 mod_jk 和 mod_ proxy 的安装和配置的更多信息,请参阅 HTTP 连接器和负载平衡指南
  • Apache 可移植运行时(APR) :提供卓越的可扩展性、性能以及与原生服务器技术的集成的运行时。APR 是一个高度可移植的库,是 Apache HTTP 服务器 2.x 的核心。它允许访问:

    • 高级 IO 功能 - 例如 sendfile、epoll 和 OpenSSL
    • 操作系统级别功能 - 例如随机数字生成和系统状态
    • 原生进程处理 - 例如,共享内存、NT 管道和 Unix 套接字
  • OpenSSL :实现安全套接字层(SSL)和传输层安全(TLS)协议的软件库,包含基本的加密库。
注意
  • 如果您需要支持 Java 应用程序的集群或会话复制支持,红帽建议您使用红帽 JBoss 企业应用平台(JBoss EAP)。

1.2. 支持的操作系统和配置

Red Hat JBoss Web 服务器支持以下操作系统和配置:

操作系统芯片组架构Java 虚拟机

Red Hat Enterprise Linux 8

x86_64

Red Hat OpenJDK 1.8.x, Red Hat OpenJDK 11, OracleJDK 11

Red Hat Enterprise Linux 7

x86_64

Red Hat OpenJDK 1.8.x, Red Hat OpenJDK 11, Oracle JDK 1.8.x, Oracle JDK 11, IBM JDK 1.8.x

Red Hat Enterpries Linux 6

x86_64, x86

Red Hat OpenJDK 1.8.x, Oracle JDK 1.8.x, Oracle JDK 11(x86_64 Only), IBM JDK 1.8.x

Microsoft Windows 2016 Server

x86_64

Red Hat OpenJDK 1.8.x, Red Hat OpenJDK 11, Oracle JDK 1.8.x, Oracle JDK 11

Microsoft Windows 2012 Server R2

x86_64

Red Hat OpenJDK 1.8.x, Red Hat OpenJDK 11, Oracle JDK 1.8.x, Oracle JDK 11

1.3. 安装红帽 JBoss Web 服务器的方法

您可以使用每个平台可用的存档安装文件,在受支持的红帽企业 Linux 和 Microsoft Windows 系统上安装 JBoss Web 服务器。您还可以使用 RPM 包在受支持的红帽企业 Linux 系统上安装 JBoss Web 服务器。

以下组件包含在存档安装文件中:这些组件是 JBoss Web 服务器安装的核心部分。

  • jws-5.3.0-application-server.zip

    • Tomcat 9
    • mod_cluster
    • tomcat-vault
  • jws-5.3.0-application-server-<platform>-<architecture>.zip

    • 特定于平台的实用程序

1.4. 组件文档捆绑包

JBoss Web 服务器包括一个附加的文档包,其中包含每个组件的原始供应商文档。本文档捆绑包 jws-docs-5.3.0.zip 在红帽客户门户网站中提供,其中包含以下组件的额外文档:

  • tomcat
  • tomcat-native
  • tomcat-vault

第 2 章 在 Red Hat Enterprise Linux 上安装 JBoss Web 服务器

您可以使用以下两种方法之一在 Red Hat Enterprise Linux 上安装 JBoss Web 服务器:

无论您选择哪一种方法,您必须首先 安装受支持的 Java 开发套件(JDK)。

2.1. 先决条件

2.1.1. 使用 YUM 软件包管理器安装 Java 开发套件(JDK)

安装 JBoss Web 服务器之前,您必须首先安装受支持的 Java 开发套件(JDK)。

如需支持的 JDK 的完整列表,请参阅 支持的操作系统和配置

流程

  1. 将您的 Red Hat Enterprise Linux 系统订阅到适当的频道:

    • OpenJDK:

      • rhel-6-server-rpms
      • rhel-7-server-rpms
      • rhel-8-server-rpms
    • IBM:

      • rhel-6-server-supplementary-rpms
      • rhel-7-server-supplementary-rpms
      • rhel-8-server-supplementary-rpms
  2. 以 root 用户身份执行安装 1.8 JDK 的命令:

    # yum install java-1.8.0-<VENDOR>-devel

    <VENDOR> 替换为 ibmopenjdk

  3. 以 root 用户身份运行以下命令以确保使用正确的 JDK:

    # alternatives --config java
    # alternatives --config javac

    这些命令返回可用 JDK 版本列表,其选择版本标有加号(+)符号。如果所选 JDK 不是所需的 JDK,请根据 shell 提示符中的指示更改到所需的 JDK。

    重要

    所有使用 java 和 java c 命令的软件都使用 替代方案 所设置的 JDK。更改 Java 替代方案可能会影响其他软件的运行。

2.1.2. 从压缩的归档(如 .zip 或 .tar)安装 JDK

安装 JBoss Web 服务器之前,您必须首先安装受支持的 Java 开发套件(JDK)。

本文档 1.2 部分 提供了受支持的 JDK 的完整列表。

如果 JDK 从供应商的网站(Oracle 或 OpenJDK)下载,请使用供应商提供的安装说明并设置 JAVA_HOME 环境变量。

如果 JDK 是从压缩的存档中安装的,请在运行 JBoss Web 服务器前设置 Tomcat 的 JAVA_HOME 环境变量。

在 Tomcat 的 bin 目录中(JWS_HOME/tomcat/bin),创建名为 setenv.sh 的文件,然后插入 JAVA_HOME 路径定义。

例如:

$ cat JWS_HOME/tomcat/bin/setenv.sh

export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64

2.1.3. Red Hat Enterprise Linux 软件包先决条件

在红帽企业 Linux 上安装 JBoss Web 服务器之前,请确保满足以下前提条件:

  • 安装了受支持的 JDK
  • 此外,需要运行 JSSE+OpenSSL 或 APR 的 RHEL-8 用户,您需要使用 Tomcat-Native 才能正常工作。Tomcat-Native 的 文件可以在原生归档目录中找到。要安装 OpenSSL 和 APR,请运行以下命令:

    # yum install openssl
    # yum install apr
  • 在安装 tomcat -native 软件包之前,您必须删除 tomcat jss 软件包。tomcatjss 软件包使用底层 NSS 安全模型,而不是 OpenSSL 安全模型。

    • 作为 root 用户,运行以下命令删除 tomcatjss

      # yum remove tomcatjss

2.2. 安装和管理 JBoss Web 服务器(ZIP)

您可以从存档文件安装 JBoss Web 服务器。与从 RPM 软件包安装相比,从存档进行安装的结果是不同的管理产品的方法。例如,您可以在启动时使用系统守护进程,并从命令行管理 JBoss Web 服务器。首先下载并提取存档文件。

2.2.1. 下载并提取 JBoss Web 服务器

这种安装方法涉及访问 红帽客户门户 和查找正确版本的 JBoss Web 服务器。

先决条件

  • 在安装 JBoss Web 服务器之前,请确保满足所有 前提条件

流程

要安装 JBoss Web 服务器,请下载并提取安装存档文件。

  1. 打开浏览器并登录 红帽客户门户
  2. Downloads
  3. 单击产品 下载列表中的 红帽 JBoss Web 服务器
  4. Version 下拉菜单中选择正确的 JBoss Web Server 版本。
  5. 对以下每个文件点 Download,确保为您的系统选择正确的平台和架构:

    • 红帽 JBoss Web 服务器 5.3 应用服务器(jws-5.3.0-application-server.zip)。
    • 用于 RHEL 的 Red Hat JBoss Web Server 5.3 原生组件(jws-5.3.0-application-server-<platform>-<architecture>.zip)。
  6. 将下载的存档文件解压缩到您的安装目录。

    例如:

    # unzip jws-5.2.0-application-server.zip -d /opt/
    # unzip -o jws-5.2.0-application-server-<platform>-<architecture>.zip -d /opt/

通过提取存档而创建的目录是 JBoss Web 服务器的顶级目录。这称为 JWS_HOME

2.2.2. 在 Red Hat Enterprise Linux 上管理 JBoss Web 服务器

在 Red Hat Enterprise Linux 上运行和管理 Red Hat JBoss Web 服务器支持两种方法:

管理 JBoss Web 服务器的建议方法是使用系统守护进程。

2.2.2.1. 使用 Red Hat Enterprise Linux 上 .zip 安装的系统守护进程管理 JBoss Web 服务器

将 JBoss Web 服务器与系统守护进程搭配使用提供了一种在系统启动时启动 JBoss Web 服务器服务的方法。系统守护进程还提供启动、停止和状态检查功能。

Red Hat Enterprise Linux 8 和 Red Hat Enterprise Linux 7 的默认系统守护进程是 systemd,Red Hat Enterprise Linux 6 的默认设置是 SysV。

注意

要确定哪个系统守护进程正在运行,请发出 ps -p 1 -o comm=

  • 对于 systemd:

    $ ps -p 1 -o comm=
    
    systemd
  • SysV:

    $ ps -p 1 -o comm=
    
    init
2.2.2.1.1. 设置并使用带有 SysV 的 JBoss Web 服务器
先决条件
  • redhat-lsb-core 软件包.要安装,请运行: yum install redhat-lsb-core
为 SysV 设置 JBoss Web 服务器

以 root 用户身份执行 .postinstall.sysv 脚本:

# cd JWS_HOME/tomcat
# sh .postinstall.sysv
使用 SysV 控制 JBoss Web 服务器

SysV 命令只能由 root 用户发出。

  • 使用 SysV 启用 JBoss Web 服务器服务在引导时启动:

    # chkconfig jws5-tomcat on
  • 使用 SysV 启动 JBoss Web 服务器:

    # service jws5-tomcat start
  • 使用 SysV 停止 JBoss Web 服务器:

    # service jws5-tomcat stop
  • 使用 SysV 验证 JBoss Web 服务器 的状态(状态 操作可由任何用户执行):

    $ service jws5-tomcat status

有关使用 SysV 的更多信息,请参阅: Red Hat Enterprise Linux 6 部署指南:运行服务

2.2.2.1.2. 设置并使用带有 systemd 的 JBoss Web 服务器
为 systemd 设置 JBoss Web 服务器

以 root 用户身份执行 .postinstall.systemd 脚本:

# cd JWS_HOME/tomcat
# sh .postinstall.systemd
使用 systemd 控制 JBoss Web 服务器

systemd 命令只能由 root 用户发布。

  • 使用 systemd 在引导时启用 JBoss Web 服务器服务:

    # systemctl enable jws5-tomcat.service
  • 使用 systemd 启动 JBoss Web 服务器:

    # systemctl start jws5-tomcat.service
  • 使用 systemd 停止 JBoss Web 服务器:

    # systemctl stop jws5-tomcat.service
  • 使用 systemd 验证 JBoss Web 服务器 的状态(状态 操作可由任何用户执行):

    # systemctl status jws5-tomcat.service

有关在 RHEL 7 中使用 systemd 的详情,请参考: RHEL 7 系统管理员指南: 管理系统服务

有关在 RHEL 8 中使用 systemd 的详情,请参考: RHEL 8 配置基本系统设置: 使用 systemctl 管理系统服务

2.2.2.2. 在命令行中管理 JBoss Web 服务器

2.2.2.2.1. 配置 JBoss Web 服务器安装
注意

以下配置步骤由. postinstall.sysv 脚本和. postinstall.systemd 脚本执行,如 使用 Red Hat Enterprise Linux 中的 .zip 安装的系统守护进程管理 JBoss Web Server所述。

运行 JBoss Web 服务器之前需要进行一些配置。本节包括以下配置过程:

设置 JAVA_HOME 环境变量

您必须为 Tomcat 设置 JAVA_HOME 环境变量,然后才能运行 JBoss Web 服务器。

在 Tomcat 的 bin 目录中(JWS_HOME/tomcat/bin),创建名为 setenv.sh 的文件,然后插入 JAVA_HOME 路径定义。

例如: 导出 JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64

创建 Tomcat 用户

按照以下步骤创建 tomcat 用户及其父组:

  1. 在 shell 提示符中,以 root 用户身份将目录更改为 JWS_HOME
  2. 运行以下命令来创建 tomcat 用户组:

    # groupadd -g 53 -r tomcat
  3. 运行以下命令在 tomcat 用户组中创建 tomcat 用户:

    # useradd -c "tomcat" -u 53 -g tomcat -s /sbin/nologin -r tomcat
将 tomcat 目录的所有权移到 tomcat 用户
  1. JWS_HOME 中,运行以下命令将 Tomcat 目录的所有权分配给 tomcat 用户,以允许用户运行 Tomcat 服务:

    # chown -R tomcat:tomcat tomcat/

    您可以使用 ls -l 验证 tomcat 用户是否为目录的所有者。

  2. 确保 tomcat 用户对所有父目录具有执行权限。例如:

    # chmod -R u+X tomcat/
2.2.2.2.2. 启动 JBoss Web 服务器

tomcat 用户身份运行以下命令:

$ sh JWS_HOME/tomcat/bin/startup.sh
2.2.2.2.3. 停止 JBoss Web 服务器

要停止 Tomcat,以 tomcat 用户身份运行以下命令:

$ sh JWS_HOME/tomcat/bin/shutdown.sh

2.3. RPM 安装

从 RPM 软件包安装 JBoss Web 服务器,将 Tomcat 作为服务安装,并将其资源安装到绝对路径中。RPM 安装选项可用于 Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 7 和 Red Hat Enterprise Linux 8。

红帽订阅管理提供了 JBoss Web 服务器的 RPM 安装软件包。

2.3.1. 将订阅附加到 Red Hat Enterprise Linux

在下载并安装 RPM 软件包前,您必须使用红帽订阅管理注册您的系统,并订阅相应的内容交付网络(CDN)存储库。

有关注册 Red Hat Enterprise Linux 的详情请参考以下步骤:

流程

  1. 登录 Red Hat Subscription Manager
  2. 单击 系统 选项卡。
  3. 单击要添加订阅的系统 名称
  4. Details 选项卡更改为 Subscriptions 选项卡,然后单击 Attach Subscriptions
  5. 选中要附加的订阅旁边的复选框,然后单击 Attach Subscriptions
注意

验证订阅是否提供了所需的 CDN 仓库:

  1. 登录 :https://access.redhat.com/management/subscriptions.
  2. Subscription Name
  3. 提供的产品 下,您需要:

    • JBoss Enterprise Web Server.
    • 红帽 JBoss 核心服务.

2.3.2. 使用 YUM 从 RPM 软件包安装 JBoss Web 服务器

流程

  1. 在命令行中,使用 subscription-manager 订阅您的操作系统版本的 JBoss Web 服务器 CDN 存储库:

    # subscription-manager repos --enable <repository>
    • Red Hat Enterprise Linux 6:

      • jws-5-for-rhel-6-server-rpms
      • jb-coreservices-1-for-rhel-6-server-rpms
    • Red Hat Enterprise Linux 7:

      • jws-5-for-rhel-7-server-rpms
      • jb-coreservices-1-for-rhel-7-server-rpms
    • Red Hat Enterprise Linux 8:

      • jws-5-for-rhel-8-x86_64-rpms
  2. 以 root 用户身份运行以下命令安装 JBoss Web 服务器:

    # yum groupinstall jws5
    重要

    对于 RPM 分发,JWS_HOME 文件夹为 /opt/rh/jws5/root/usr/share

注意
  • 虽然不建议使用组安装,但您可以单独安装每个软件包及其依赖项。
  • 安装 JBoss Web 服务器时需要以上 Red Hat JBoss Core Services 软件仓库,但 RHEL 8 系统除外。

2.3.3. 启动 JBoss Web 服务器

此流程演示了如何启动 JBoss Web 服务器。

流程

  • 在 shell 提示符下,以 root 用户身份启动 Tomcat 服务。

    • Red Hat Enterprise Linux 6:

      # service jws5-tomcat start
    • Red Hat Enterprise Linux 7 或 8:

      # systemctl start jws5-tomcat.service
      注意

      这是为 RPM 安装启动 JBoss Web 服务器的唯一支持方法。

  • 要验证 Tomcat 是否正在运行,应检查 service status 命令的输出。这可以作为任何用户执行。

    • Red Hat Enterprise Linux 6:

      # service jws5-tomcat status
    • Red Hat Enterprise Linux 7 或 8:

      # systemctl status jws5-tomcat.service
      注意

      有关在 RHEL 8 上安装和配置 HTTPD 的完整说明,请查看 此链接

2.3.4. 停止 JBoss Web 服务器

此流程演示了如何停止 JBoss Web 服务器。

流程

  • 在 shell 提示符下,以 root 用户身份停止 Tomcat 服务。

    • Red Hat Enterprise Linux 6:

      # service jws5-tomcat stop
    • Red Hat Enterprise Linux 7 或 8:

      # systemctl stop jws5-tomcat.service
  • 要验证 Tomcat 不再运行,应检查 service status 命令的输出。这可以作为任何用户执行。

    • Red Hat Enterprise Linux 6:

      # service jws5-tomcat status
    • Red Hat Enterprise Linux 7 或 8:

      # systemctl status jws5-tomcat.service
注意

有关在 RHEL 8 上安装和配置 HTTPD 的完整说明,请查看 此链接

2.3.5. 将 JBoss Web Server Services 配置为在引导时启动

使用以下命令启用 JBoss Web 服务器服务在引导时启动:

流程

  • 根据您的 Red Hat Enterprise Linux 版本,输入以下命令之一:

    • Red Hat Enterprise Linux 6:

      # chkconfig jws5-tomcat on
    • Red Hat Enterprise Linux 7 或 8:

      # systemctl enable jws5-tomcat.service

2.4. SELinux 策略

2.4.1. SELinux 策略信息

下表包含 jws5-tomcat-selinux 软件包中提供的 SELinux 策略的信息。

表 2.1. RPM 和默认 SELinux 策略

名称端口信息策略信息

jws5_tomcat

http_port_t 中的 四个端口(TCP 端口 80808005、80098443),以允许 tomcat 进程使用它们。

已安装 jws5_tomcat 策略,它会为 Tomcat 执行过程中的进程设置适当的 SELinux 域。它还设置适当的上下文,以允许 tomcat 写入 /var/opt/rh/jws5/lib/tomcat,/var/opt/rh/jws5/log/tomcat,/var/opt/rh/jws5/cache/tomcat/var/opt/rh/jws5/run/tomcat.pid

有关使用 SELinux 和其他 Red Hat Enterprise Linux 安全信息的详情,请查看 Red Hat Enterprise Linux 安全指南

2.4.2. RPM 安装的 SELinux 策略

JBoss Web 服务器的 SELinux 策略由 jws5-tomcat-selinux 软件包提供。这些软件包可在 JWS 频道中找到。

要为 JBoss Web 服务器 5.3 启用 SELinux 策略,请安装 jws5-tomcat-selinux 软件包。

2.4.3. 归档安装的 SELinux 策略

在本发行版本中,SELinux 策略在归档软件包中提供。SELinux 安全模型由内核强制实施,并确保应用程序对文件系统位置和端口等资源具有有限的访问权限。这有助于确保错误的进程(受破坏或配置不当)受到限制,在某些情况下会阻止运行。

.postinstall.selinux 文件包含在 jws-5.3.0-application-server-<platform> -<architecture&gt;.ziptomcat 文件夹中。如果需要,您可以运行. postinstall.selinux 脚本。

使用归档安装 SELinux 策略:

  1. 安装 selinux-policy-devel 软件包:

    yum install -y selinux-policy-devel
  2. 执行 .postinstall.selinux 脚本:

    cd <JWS_home>/tomcat/
    sh .postinstall.selinux
  3. 为 JBoss Web 服务器所需的端口添加访问权限。JBoss Web 服务器可以访问红帽企业 Linux 系统上的端口 8080 8009、8443 和 8005

    当 JBoss Web 服务器需要额外的端口时,请使用 semanage 命令提供必要的权限,用所需的端口替换端口号:

    semanage port -a -t http_port_t -p tcp <port>
  4. 启动 Tomcat:

    <JWS_home>/tomcat/bin/startup.sh
  5. 检查运行中进程所需 jws5_tomcat 的上下文:

    ps -eo pid,user,label,args | grep jws5_tomcat | head -n1
  6. 验证 Tomcat 目录的上下文,例如:

    ls -lZ <JWS_home>/tomcat/logs/
注意

默认情况下,提供的 SElinux 策略不处于活动状态,并且 Tomcat 进程在 unconfined_java_t 域中运行。这个域不会限制进程,如果您选择不启用所提供的 SElinux 策略,建议您采取以下安全措施:

  • tomcat 用户的文件访问权限限制为仅包含 JBoss Web 服务器运行时所需的文件和目录。
  • 不要以 root 用户身份运行 Tomcat。

第 3 章 在 Microsoft Windows 上安装 JBoss Web Server

3.1. 安装 Java 开发套件(JDK)

在 Microsoft Windows 上安装 JBoss Web Server 之前,您必须首先安装受支持的 Java 开发套件(JDK)。

有关支持的配置列表,请参阅 支持操作系统和配置

注意

有关安装 IBM JDK 的说明,请访问: https://www.ibm.com/developerworks/java/jdk/

安装甲骨文 Java 开发套件:

  1. 下载适用于您的操作系统和架构的 Oracle JDK。您可从 Oracle 网站下载 JDK 安装文件 :http://www.oracle.com/technetwork/java/javase/downloads/index.html.
  2. 双击下载的文件以开始安装。
  3. 按照安装窗口中的指示进行操作。

3.2. 下载并提取 JBoss Web 服务器

要安装 JBoss Web 服务器,请下载并提取安装存档文件。

  1. 打开浏览器并登录 红帽客户门户
  2. Downloads
  3. 单击产品 下载列表中的 红帽 JBoss Web 服务器
  4. Version 下拉菜单中选择正确的 JBoss Web Server 版本。
  5. 对以下每个文件点 Download,确保为您的系统选择正确的平台和架构:

    • 红帽 JBoss Web 服务器 5.3 应用服务器(jws-5.3.0-application-server.zip)。
    • 用于 Windows 服务器的 Red Hat JBoss Web Server 5.3 原生组件(jws-5.3.0-application-server-<platform>-<architecture>.zip)。
  6. 将下载的存档文件解压缩到您的安装目录。

通过提取存档而创建的目录是 JBoss Web 服务器的顶级目录。这称为 JWS_HOME

3.3. 配置 JBoss Web 服务器安装

运行 JBoss Web 服务器之前需要进行一些配置。本节包括以下配置过程:

设置环境变量

  1. 登录具有本地管理员权限的帐户。
  2. 进入 Control PanelSystem
  3. 单击 Advanced 选项卡。
  4. 单击 环境变量 按钮。
  5. 单击 系统变量 的新建 按钮。
  6. 对于 JAVA_HOMETM P 和 TEMP,请为您的系统输入适当的名称值对。
  7. 要使 SSL 连接器正常工作,您还需要将 JWS_HOME\bin 添加到服务要运行的用户的 PATH 环境变量。此用户默认为 SYSTEM

安装 Tomcat 服务

  1. 使用管理员权限打开命令提示,并更改到 Tomcat 版本的 bin 文件夹:

    cd /D "JWS_HOME\tomcat\bin"
  2. 使用以下命令安装 Tomcat 服务:

    call service.bat install

为 JBoss Web 服务器服务配置文件夹权限

按照以下步骤确保用于运行服务的帐户能够完全控制 JWS_HOME 文件夹及其所有子文件夹:

  1. 右键单击 JWS_HOME 文件夹并单击 Properties
  2. 选择 Security 选项卡。
  3. 单击 编辑 按钮。
  4. 单击 添加 按钮。
  5. 在文本框中,输入 LOCAL SERVICE
  6. 选中 LOCAL SERVICE 帐户的 Full Control 复选框。
  7. 点击 OK
  8. 单击 Advanced 按钮。
  9. Advanced Security Settings 对话框中,选择 LOCAL SERVICE 并单击 Edit
  10. 选中 此对象选项中所有带有继承权限的后代替换所有现有可继承权限 旁边的复选框。
  11. 通过所有打开的文件夹属性窗口,单击 确定 以应用设置。

3.4. 启动 JBoss Web 服务器

您可以从命令提示符或使用"计算机管理工具"启动 JBoss Web 服务器。

从命令提示启动 JBoss Web 服务器

  1. 打开具有管理员特权的命令提示符。
  2. 启动 Tomcat 服务:

    net start tomcat9

从计算机管理工具启动 JBoss Web 服务器

  1. 转至 StartToolsServices
  2. Services 列表中,右键单击服务的名称(Tomcat9)并点 Start
注意

些第三方应用向 Windows 中的系统目录添加库。在查找时,这些库优先于 Tomcat 库。这意味着,如果这些第三方库的名称与 Tomcat 原生库的名称相同,则会加载它们而不是通过 JBoss Web 服务器分发的库。

在这种情况下,Tomcat 可能无法启动,也不会在 Windows Event Log 或 Tomcat 日志文件中记录任何错误消息。错误只能通过使用 catalina.bat run 来查看。

如果发生此行为,请检查 C:\windows\System32\ 目录和其他 PATH 目录的内容,并确保没有 DLL 与 JBoss Web 服务器提供的内容冲突。特别是,查找 libeay32.dllssleay32.dlllibssl32.dll

3.5. 停止 JBoss Web 服务器

您可以从命令提示符或使用"计算机管理工具"停止 JBoss Web 服务器。

从命令提示停止 JBoss Web 服务器

  1. 打开具有管理员特权的命令提示符。
  2. 停止 Tomcat 服务:

    net stop tomcat9

从计算机管理工具停止 JBoss Web 服务器

  1. 转至 StartToolsServices
  2. Services 列表中,右键单击服务的名称(Tomcat9),再单击 Stop

第 4 章 为红帽 JBoss Web 服务器配置 Hibernate

Hibernate ORM 是一个对象关系映射框架,可让您将 JBoss Web 服务器连接到 JDBC 数据源。

4.1. 安装 Hibernate ORM

完成以下步骤,在 JBoss Web 服务器支持的所有平台上安装 Hibernate ORM。

先决条件

将您的项目配置为使用 JBoss Web 服务器 Maven 存储库,该存储库可作为 jboss-web-server-5.3.0-maven-repository.zip 下载

流程

  1. 从 JBoss Web 服务器 Maven 存储库获取 Hibernate JAR 文件。
  2. 将 Hibernate JAR 文件添加到您的部署 WAR 文件。

4.2. 配置 JDBC 连接池

Tomcat 为 JDBC 数据源提供了默认的连接池机制。

流程

  1. 打开部署的 /META-INF/context.xml 文件进行编辑。
  2. 修改可供应用程序使用的 JDBC 连接池,如下例所示:

    <Context>
      <Resource
        name="jdbc/DsWebAppDB"
        auth="Container"
        type="javax.sql.DataSource"
        username="sa"
        password=""
        driverClassName="org.h2.Driver"
        url="jdbc:h2:mem:target/test/db/h2/hibernate"
        maxActive="8"
        maxIdle="4"/>
    </Context>

4.3. 配置 Hibernate 连接属性

将 Hibernate 配置为使用来自 Tomcat 池的连接。如果您直接使用 Hibernate API,请使用与 hibernate.cfg.xml 类似的配置。

流程

  1. 打开部署的 /WEB-INF/classes/META-INF/persistence.xml 文件进行编辑。
  2. 配置 Hibernate 如何使用 Tomcat 的连接,如下例所示:

    <persistence version="1.0"
      xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    
      <persistence-unit name="dswebapp">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
          <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
          <property name="hibernate.connection.datasource" value="java:comp/env/jdbc/DsWebAppDB"/>
        </properties>
      </persistence-unit>
    </persistence>

4.4. 添加 JDBC 数据源

配置 Tomcat 以使用 JDBC 数据源。

流程

  1. 打开部署的 /WEB-INF/web.xml 文件进行编辑。
  2. 使用 resource-env-ref 元素配置 JDBC 数据源,如下例所示,它使用 a jdbc/DsWebAppDB 数据源:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
     <resource-env-ref>
      <resource-env-ref-name>jdbc/DsWebAppDB</resource-env-ref-name>
      <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
     </resource-env-ref>
    </web-app>

第 5 章 为红帽 JBoss Web 服务器启用 HTTP/2

Hypertext 传输协议是通过互联网在应用程序(如服务器和浏览器)之间传输数据的标准方法。

通过提供如下增强功能,HTTP/1.1 上的 HTTP/2 进行了改进:

  • 标头压缩 - 通过省略隐式信息减少传输的标头的大小,以及
  • 单个连接中的多个请求和响应 - 使用二进制帧来分解响应消息,而不是文本帧。

将 HTTP/2 与 Red Hat JBoss Web 服务器一起使用:

  • 支持通过 TLS(h2)加密 的连接。
  • 不支持 通过 TCP(h2c)进行未加密的连接。

先决条件

  • root 用户访问(红帽企业 Linux 系统)
  • Red Hat JBoss Web Server 5.0 或更高版本
  • 以下操作系统原生库(由 jws-5.3.0-application-server-<platform> -<architecture>.zip (可用)提供)。

    需要运行 JSSE+OpenSSL 或 APR 的 RHEL-8 用户,您需要使用 Tomcat-Native 才能正常工作。Tomcat-Native 的 文件可以在原生归档目录中找到。要安装 OpenSSL 和 APR,请运行以下命令:

# yum install openssl
# yum install apr
  • 支持启用 SSL 的 HTTP/2 协议的连接器。对于 JBoss Web 服务器 5.3,具有 HTTP/2 协议支持的连接器有:

    • APR 原生连接器(APR)
    • NIO 与 JSSE + OpenSSL(JSSE)连接器.
    • NIO2 与 JSSE + OpenSSL(JSSE)连接器.

流程

为连接器启用 HTTP/2:

  1. 将 HTTP/2 升级协议(<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />)添加到服务器配置中 JWS_HOME/tomcat/conf/server.xml 中的连接器。

    例如:

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="/KeyStore.jks"
                         certificateKeystorePassword="changeit"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

    server.xml 包含 APR 协议的连接器定义示例,并将升级协议升级到 HTTP/2:

    <Connector port="8443"
               protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
  2. 以 root 用户身份重新启动红帽 JBoss Web 服务器,以应用更改后的配置。

    1. 对于 SysV(Red Hat Enterprise Linux 6)用户:

      # service jws5-tomcat restart
    2. 对于 systemd(Red Hat Enterprise Linux 7)用户:

      # systemctl restart jws5-tomcat.service
    3. 对于使用 start .sh 运行 Red Hat JBoss Web 服务器的 Red Hat Enterprise Linux 用户:

      # JWS_HOME/sbin/shudown.sh
      # JWS_HOME/sbin/startup.sh
    4. 对于 Windows Server 用户:

      # net restart tomcat9

后续步骤

通过查看 Red Hat JBoss Web Server 日志或使用 curl 命令验证 HTTP/2 是否启用了:

  • 检查控制台输出日志(JWS_HOME/tomcat/logs/catalina.out),以验证 "connector 已配置为支持协商到 [h2]:

    $ cat JWS_HOME/tomcat/logs/catalina.out | grep 'h2'
    
    06-Apr-2018 04:49:26.201 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-apr-8443"] connector has been configured to support negotiation to [h2] via ALPN
  • 或者使用 curl (针对支持 HTTP2curl 版本)进行验证:

    注意

    检查 curl 是否 支持 HTTP/2:

    $ curl -V
    
    curl 7.55.1 (x86_64-redhat-linux-gnu) ...
    Release-Date: 2017-08-14
    Protocols: dict file ftp ftps gopher http https ...
    Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy Metalink PSL
    • 例如,当 HTTP/2 协议不活跃时:

      $ curl -I http://<JBoss_Web_Server>:8080/
      
      HTTP/1.1 200
      ...
    • 但是,如果 HTTP/2 协议活跃,curl 会返回

      $ curl -I https://<JBoss_Web_Server>:8443/
      
      HTTP/2 200
      ...

      其中 <JBoss_Web_Server> 是修改后连接器(如 example.com)的 URI,并且端口号取决于您的配置。

其它资源

第 6 章 Red Hat JBoss Web 服务器的 Vault

6.1. 关于红帽 JBoss Web 服务器 5.3 中的密码库.

tomcat-vault 是 Apache Tomcat 的 PicketLink vault 扩展,允许用户屏蔽密码和其他敏感字符串,并将其存储在加密的 Java 密钥存储中。使用密码库可让您停止将明文密码存储在 Tomcat 配置文件中,因为 Tomcat 可以使用密码库从密钥存储中查找密码和其他敏感字符串。

重要

有关将 CRYPT 与 Vault 搭配使用,请参阅使用 CRYPT

6.2. 从 .zip 归档安装 JBoss Web 服务器密码库

对于 tomcat 密码库,jws-5.3.0-application-server.zip 文件预安装。密码库可以在配置后使用,位于: JWS_HOME/tomcat/lib/tomcat-vault.jar

6.3. 使用 YUM 软件包管理器在 Red Hat Enterprise Linux 上安装 JBoss Web 服务器密码库

如果从红帽企业 Linux 上的 RPM 安装 JBoss Web 服务器,您需要为 tomcat-vault 安装 JBoss Web 服务器 RPM。

流程

  • 通过执行以下命令,以 root 用户身份安装密码库:

    yum install jws5-tomcat-vault

6.4. 在 JBoss Web 服务器中启用密码库

在以下步骤中,将 JWS_HOME 替换为 JBoss Web 服务器安装的路径。此外,下面的路径将 / 用作目录分隔符。

流程

  1. 如果 Tomcat 正在运行,将它停止。
  2. 编辑 JWS_HOME/tomcat/conf/catalina.properties,并添加以下行:

    org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.vault.util.PropertySourceVault

6.5. 在 JBoss Web 服务器中创建 Java 密钥存储

要使用密码库,您必须首先创建 Java 密钥存储。

重要

该过程中的值仅作示例。使用特定于环境的值替换它们。

有关参数的说明,请使用 keytool -genseckey -help 命令。

流程

  • 使用 keytool -genseckey 命令创建 Java 密钥存储:

    $ keytool -genseckey -keystore JWS_HOME/tomcat/vault.keystore -alias my_vault  -storetype jceks -keyalg AES -keysize 128 -storepass <vault_password> -keypass <vault_password> -validity 730

6.6. 外部密码库配置

tomcat-vaultvault.properties 文件可以存储在 CATALINA _BASE /conf/ 目录(如果已设置)的 JWS_HOME /tomcat/conf/conf/ 目录之外。

要设置 CATALINA_BASE 目录,请按照 Apache Tomcat 9.0 Servlet/JSP 容器文档中的运行 Apache Tomcat 9.0 Servlet/JSP 容器 文档中的"高级配置 "一节中的说明进行操作。

注意

CATALINA_BASE 的默认位置为 JWS_HOME/tomcat/,也称为 CATALINA_HOME

其它资源

有关设置 CATALINA_BASE 的更多信息,请参阅:

6.7. 初始化密码 Vault

6.7.1. 交互式地初始化 Apache Tomcat 的密码库

重要

以下值仅为示例。使用适合您的环境的值替换它们。

流程

  • 使用 tomcat-vault.sh 脚本初始化密码库:

    # JWS_HOME/tomcat/bin/tomcat-vault.sh
    
    WARNING JBOSS_HOME may be pointing to a different installation - unpredictable results may occur.
    
    =========================================================================
    
      JBoss Vault
    
      JBOSS_HOME: JWS_HOME/tomcat
    
      JAVA: java
    
    =========================================================================
    
    **********************************
    ****  JBoss Vault  ***************
    **********************************
    Please enter a Digit::
    0: Start Interactive Session
    1: Remove Interactive Session
    2: Exit
    
    0
    
    Starting an interactive session
    Enter directory to store encrypted files: JWS_HOME/tomcat/
    Enter Keystore URL: JWS_HOME/tomcat/vault.keystore
    Enter Keystore password: <vault_password>
    Enter Keystore password again: <vault_password>
    Values match
    Enter 8 character salt: 1234abcd
    Enter iteration count as a number (Eg: 44): 120
    Enter Keystore Alias: my_vault
    Initializing Vault
    Jun 16, 2018 10:24:27 AM org.apache.tomcat.vault.security.vault.PicketBoxSecurityVault init
    INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
    Vault Configuration in tomcat properties file:
    ********************************************
    ...
    KEYSTORE_URL=JWS_HOME/tomcat/vault.keystore
    KEYSTORE_PASSWORD=MASK-3CuP21KMHn7G6iH/A3YpM/
    KEYSTORE_ALIAS=my_vault
    SALT=1234abcd
    ITERATION_COUNT=120
    ENC_FILE_DIR=JWS_HOME/tomcat/
    ...
    ********************************************
    Vault is initialized and ready for use
    Handshake with Vault complete
    Please enter a Digit::
    0: Store a secured attribute
    1: Check whether a secured attribute exists
    2: Exit
    
    2

请注意 Tomcat 属性文件的输出,因为您需要用它来配置 Tomcat 以使用密码库。

6.7.2. 以非交互方式初始化 Apache Tomcat 的 Vault(弹性设置)

通过向 tomcat-vault.sh 脚本提供所需的输入,可以非交互方式创建 Apache Tomcat 的 Vault。当使用 -g, --generate -config 选项时,vault .properties 文件也作为 tomcat-vault. sh 脚本的输出创建。

重要

以下值仅为示例。使用适合您的环境的值替换它们。

流程

  • 使用 tomcat-vault.sh 脚本初始化密码库:
$ JWS_HOME/tomcat/bin/tomcat-vault.sh \
 --keystore JWS_HOME/tomcat/vault.keystore \
 --keystore-password <vault_password> \
 --alias my_vault \
 --enc-dir JWS_HOME/tomcat/ \
 --iteration 120 \
 --salt 1234abcd \
 --generate-config JWS_HOME/tomcat/conf/vault.properties

6.8. 将 Tomcat 配置为使用密码库

先决条件

流程

  • JWS_HOME/tomcat/conf/ 中,创建名为 vault.properties 的文件,其中包含初始化密码库时生成的 vault 配置。

    以下提供的值使用示例密码库以 交互方式初始化 Apache Tomcat 的密码库的步骤

    注意

    对于 KEYSTORE_PASSWORD,您必须使用初始化密码库时生成的掩码值。

    KEYSTORE_URL=JWS_HOME/tomcat/vault.keystore
    KEYSTORE_PASSWORD=MASK-3CuP21KMHn7G6iH/A3YpM/
    KEYSTORE_ALIAS=my_vault
    SALT=1234abcd
    ITERATION_COUNT=120
    ENC_FILE_DIR=JWS_HOME/tomcat/

第 7 章 配置 SSI 过滤器

7.1. 配置 SSI 过滤器

如果您像之前的版本中尝试配置 SSI 过滤器,则 SSI 指令不起作用。

流程

要使 SSI 过滤器配置正常工作,请在 conf/web.xml 文件中取消注释以下块:

    <mime-mapping>
        <extension>shtml</extension>
        <mime-type>text/x-server-parsed-html</mime-type>
    </mime-mapping>

附录 A. Java IPv4/IPv6 属性

配置 Java 属性

在 Java 中,有 2 个属性可用于配置 IPv4 和 IPv6。以下是 java.net.preferIPv4Stackjava.net.preferIPv6Addresses

java.net.preferIPv4Stack (default: false)

如果 IPv6 可用,则默认情况下底层原生套接字是 IPv6 套接字。此套接字允许应用连接和接受来自 IPv4 和 IPv6 主机的连接。如果应用仅使用 IPv4 套接字,则将此属性设为 true。但是,应用无法仅与 IPv6 通信。

java.net.preferIPv6Addresses (default: false)

如果主机同时具有 IPv4 和 IPv6 地址,并且 IPv6 都可用,则默认行为是通过 IPv6 使用 IPv4 地址。这样可实现向后兼容。如果应用程序依赖于 IPv4 地址表示法,例如: 192.168.1.1.然后,将此属性设置为 true 以更改首选项,并尽可能在 IPv4 上使用 IPv6 地址。

要将这些属性传递给 Tomcat,请在 JWS _HOME /tomcat/bin/setenv.*文件中设置 CATALINA_OPTS

注意

如果 JWS_HOME/tomcat/bin/setenv.shJWS_HOME/tomcat/bin/setenv.bat 文件不存在,则需要创建一个文件。

在 Linux 中:

导出"CATALINA_OPTS=-Djava.net.preferIPv4Stack=YOUR_VALUE -Djava.net.preferIPv6Addresses=YOUR_VALUE"

在 Windows 中:

设置 "CATALINA_OPTS=-Djava.net.preferIPv4Stack=YOUR_VALUE -Djava.net.preferIPv6Addresses=YOUR_VALUE"

配置 Tomcat 绑定

Tomcat 绑定可以在 JWS_HOME/tomcat/conf/server.xml 中设置,其 IPv6 地址:

  • 指定 Tomcat 绑定地址:

    <Server …​ 地址="TOMCAT_BINDING_ADDRESS">

  • 指定 HTTP 连接器地址:

    <Connector 协议="HTTP/1.1" …​ address="HTTP_CONNECTOR_ADDRESS">

  • 指定 AJP 连接器地址:

    <Connector 协议="AJP/1.3" …​ address="AJP_CONNECTOR_ADDRESS">