Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

第 4 章 配置 JBoss EAP 作为服务运行

4.1. 在 Red Hat Enterprise Linux 里将 JBoss EAP 配置为服务(ZIP、安装程序方法)

预备条件

  • ZIP安装程序安装 JBoss EAP。
  • 服务器上的管理员权限。

在 Red Hat 企业版 Linux 里将 JBoss EAP 配置为服务

  1. 自定义 jboss-eap.conf 文件里的 start-up 选项。

    startup 脚本和相关的配置文件位于 EAP_HOME/bin/init.d/ 目录。用文本编辑器打开 jboss-eap.conf 并为您的 JBoss EAP 安装设置选项。

    jboss-eap.conf 文件里有几个选项,但您必须至少为 JBOSS_HOMEJBOSS_USER 提供正确的值。

    您可以自定义配置文件里提供的其他选项(取消注释相关的行并进行编辑)。但如果没有这样做,服务会用默认的配置文件启动独立模式的 JBoss EAP 服务器。

    注意

    如果您想以管理域的模式启动 JBoss EAP,请在 jboss-eap.conf 里添加 JBOSS_MODE=domain

    要设置自定义域配置文件,添加 JBOSS_DOMAIN_CONFIG=DOMAIN_CONFIG_FILE.xmlJBOSS_HOST_CONFIG=HOST_CONFIG_FILE.xml。在默认情况下,JBoss EAP 使用 domain.xmlhost.xml 作为域配置文件。

  2. 复制服务文件到系统目录里。

    1. 复制修改的服务配置文件至 /etc/default 目录。

      sudo cp EAP_HOME/bin/init.d/jboss-eap.conf /etc/default
    2. 复制服务器启动脚本至 /etc/init.d 目录,并赋予执行权限:

      sudo cp EAP_HOME/bin/init.d/jboss-eap-rhel.sh /etc/init.d
      sudo chmod +x /etc/init.d/jboss-eap-rhel.sh
  3. chkconfig 服务管理命令将新的 jboss-eap-rhel.sh 服务添加到自动启动服务列表里:

    sudo chkconfig --add jboss-eap-rhel.sh
  4. 用下列命令测试服务是否已正确安装:

    1. 对于 Red Hat Enterprise Linux 6:

      sudo service jboss-eap-rhel.sh start
    2. 对于 Red Hat Enterprise Linux 7:

      sudo service jboss-eap-rhel start

    服务将启动。如果您遇到错误,请查看错误日志并确保配置文件里的选项已正确设置。

  5. 要使服务在 Red Hat Enterprise Linux 服务器启动时自动启动,请运行下列命令:

    sudo chkconfig jboss-eap-rhel.sh on

如果您想删除 JBoss EAP 服务,请使用下列步骤。

删除 Red Hat Enterprise Linux 里的 JBoss EAP 服务

  1. 如果服务已运行,请打开一个终端窗口并用下列命令停止服务。

    1. 对于 Red Hat Enterprise Linux 6:

      sudo service jboss-eap-rhel.sh stop
    2. 对于 Red Hat Enterprise Linux 7:

      sudo service jboss-eap-rhel stop
  2. 从服务列表里删除 JBoss EAP:

    sudo chkconfig --del jboss-eap-rhel.sh
  3. 删除服务配置文件及启动脚本:

    sudo rm /etc/init.d/jboss-eap-rhel.sh
    sudo rm /etc/default/jboss-eap.conf

4.2. 在 Red Hat Enterprise Linux(RPM 安装)里将 JBoss EAP 配置为服务

预备条件

  • RPM 方式安装 JBoss EAP。
  • 服务器上的管理员权限。

通过 RPM 安装的 JBoss EAP 会安装将 JBoss EAP 作为服务运行所需的所有内容。请用下列命令激活在系统引导时自动启动的 JBoss EAP 服务。

对于以下命令,使用 eap7-standalone(独立 JBoss EAP 服务器)或 eap7-domain(管理域)替换 EAP_SERVICE_NAME

  • 对于 Red Hat Enterprise Linux 6:

    chkconfig EAP_SERVICE_NAME on
  • 对于 Red Hat Enterprise Linux 7:

    systemctl enable EAP_SERVICE_NAME.service

要启动或停止JBoss EAP 的 RPM 安装,请参考《JBoss EAP 配置指南》里的『RPM 说明』

注意

更多细节和选项,请参考《JBoss EAP 配置指南》里的『RPM 服务配置文件附录』

4.3. 配置 JBoss EAP 为 Microsoft Windows 服务器里的服务

预备条件

  • ZIP安装程序安装 JBoss EAP。
  • 服务器上的管理员权限。
  • 您必须设置环境变量 JAVA_HOME
  • JBoss EAP 服务器实例不能正在运行。
重要

在 Windows 服务器命令行提示下使用 set 命令设置的环境变量并不会持久化,您必须使用 setx 命令或控制面板里的系统界面来进行设置。

配置 JBoss EAP 为 Microsoft Windows 服务器里的服务

  1. 创建两个系统环境变量:

    • 指向 JBoss EAP 安装目录的 JBOSS_HOME
    • NOPAUSE=1
  2. 安装 JBoss Core Services Jsvc 软件包

    如果还没有配置,请下载并解压 JBoss Core Services Jsvc 软件包。

    1. 打开浏览器并登录客户门户网站:JBoss 软件下载页面
    2. Product 下拉菜单里选择 Apache Jsvc
    3. Version 下拉菜单里选择最新的版本。
    4. 在列表里找到 Red Hat JBoss Core Services Apache Jsvc,确保您选择了对应您的系统的正确平台和架构,然后点击 Download 链接。
    5. 在包含 JBoss EAP 安装目录的目录里解压下载的 ZIP 文件。

      这将导致 jbcs-jsvc-<VERSION> 目录具有和 JBoss EAP 安装目录相同的深度。例如:

      C:\Program Files
      ├── jboss-eap-7.0
      │   ├── bin
      │   └── ...
      └── jbcs-jsvc-<VERSION>
  3. 安装服务

    打开终端窗口并进入 EAP_HOME\bin

    下面是一个为独立服务器或受管域里的服务器创建新服务的基本 service.bat install 命令。关于可用选项的列表,请不带参数运行 service.bat

    执行下列命令,按要求为服务调整日志级别:

    1. 对于独立服务器:

      service.bat install /loglevel INFO
    2. 对于受管域里的服务器:

      使用 /host 参数指定由服务控制的 JBoss EAP 主机控制器的名称。您可以在管理 CLI 中执行 ls /host 查看名称。

      在以下命令中,使用 JBoss EAP 主机控制器名替换 EAP_HOST_NAME,如果没有为 /host 参数提供一个 JBoss EAP 主机控制器名,它的默认值为 master

      service.bat install /host EAP_HOST_NAME /loglevel INFO

    名为 JBossEAP 7 的新 Windows 服务将被创建。

  4. Services 控制器里检验新的服务

    打开 Windows Services 控制台(services.msc)并检验服务是否已被创建。

    如果使用了默认的服务名称,那么在 Windows 服务列表里,这个新服务的名称将是:JBossEAP7。你可以从服务控制台启动和停止服务,并修改如何启动和何时启动等设置。

  5. 通过终端窗口启动和停止 JBoss EAP 服务

    要从终端窗口启动服务,使用下列命令,有需要的话可以修改服务名称:

    net start JBossEAP7

    在终端窗口里使用下列命令停止这个服务,有需要的话可以修改服务名称:

    net stop JBossEAP7

如果您想删除 JBoss EAP 服务,请使用下列步骤。

删除 Microsoft Windows 服务器里的 JBoss EAP 服务

  1. 如果服务正在运行,请首先打开一个终端窗口并执行 net stop(加上服务的名称)来停止服务:

    net stop JBossEAP7
  2. 打开终端窗口并进入 EAP_HOME\bin,执行下列命令:

    service.bat uninstall

4.4. 用 Jsvc 将 JBoss EAP 配置为服务

JBoss Core Services Collection 中的 Apache Jsvc 组件可以被用来在 Red Hat Enterprise Linux 和 Solaris 上,以后台服务的形式运行 JBoss EAP。

注意

在 Red Hat Enterprise Linux 上,我们推荐您使用原生方法来将 JBoss EAP 作为服务运行。

Jsvc 是一系列允许 Java 应用程序作为后台服务运行在类 Unix 平台里的库和应用程序。它允许应用程序作为特权用户执行操作,然后将其身份切换到非特权用户。

Jsvc 使用三个进程:launcher、controller 和 controlled 进程。controlled 进程也是主 Java 线程。如果 JVM 崩溃,controller 进程将在 60 秒内重启它。Jsvc 是 JBoss EAP 的守护进程,它只能由特权用户启动。

安装 JBoss Core Services Jsvc 软件包

  • 对于通过 ZIP 或安装程序完成的安装:
  1. 打开浏览器并登录客户门户网站:JBoss 软件下载页面
  2. Product 下拉菜单里选择 Apache Jsvc
  3. Version 下拉菜单里选择最新的版本。
  4. 在列表里找到 Red Hat JBoss Core Services Apache Jsvc,确保您选择了对应您的系统的正确平台和架构,然后点击 Download 链接。
  5. 在包含 JBoss EAP 安装目录的目录里解压下载的 ZIP 文件。

    这将导致 jbcs-jsvc-<VERSION> 目录具有和 JBoss EAP 安装目录相同的深度。例如:

    /var/opt/
    ├── jboss-eap-7.0
    │   ├── bin
    │   └── ...
    └── jbcs-jsvc-<VERSION>
  6. 使用 Jsvc 启动 JBoss EAP 的命令示例假定已创建了 jboss 用户。如果您还没有为 JBoss EAP 创建用户,请运行下列命令来创建 jboss 用户和组:

    # groupadd -f -g 185 -r jboss
    # useradd -r -u 185 -g jboss -d EAP_HOME -s /sbin/nologin -c "JBoss" jboss
  • 对于 Red Hat Enterprise Linux 上的 RPM 安装:
  1. 登录 Red Hat Subscription Manager
  2. 点击 Subscriber Inventory 里的 Systems
  3. 根据您的操作系统版本和架构订阅相应的 JBoss Core Services CDN 资料库。

    1. 对于 Red Hat Enterprise Linux 6:

      • jb-coreservices-1-for-rhel-6-server-rpms
    2. 对于 Red Hat Enterprise Linux 7:

      • jb-coreservices-1-for-rhel-7-server-rpms
  4. 以根用户运行下列命令来安装 Jsvc:

    # yum groupinstall jbcs-jsvc
注意

确认设置了 JAVA_HOME 系统环境变量。

使用 Jsvc 将 JBoss EAP 作为独立服务器启动

下面的命令用 Jsvc 启动和停止独立模式的 JBoss EAP。下表展示了在 ZIP/安装程序或 RPM 安装模式下命令所需的路径。

表 4.1. ZIP 安装模式下的 Jsvc 文件位置 - 独立服务器模式

参考文件说明文件位置

JSVC_BIN

EAP_HOME/../jbcs-jsvc-<VERSION>/sbin/jsvc

JSVC_JAR

EAP_HOME/../jbcs-jsvc-<VERSION>/lib/commons-daemon.jar

CONF_DIR

EAP_HOME/standalone/configuration

LOG_DIR

EAP_HOME/standalone/log

表 4.2. RPM 安装模式下的 Jsvc 文件位置 - 独立服务器模式

参考文件说明文件位置

JSVC_BIN

/usr/bin/jbcs-jsvc/jsvc

JSVC_JAR

/usr/bin/jbcs-jsvc/commons-daemon.jar

CONF_DIR

/opt/rh/eap7/root/usr/share/wildfly/standalone/configuration

LOG_DIR

/opt/rh/eap7/root/usr/share/wildfly/standalone/log

用 Jsvc 启动独立模式的 JBoss EAP 服务器:

JSVC_BIN \
 -outfile LOG_DIR/jsvc.out.log   \
 -errfile LOG_DIR/jsvc.err.log   \
 -pidfile LOG_DIR/jsvc.pid  \
 -user jboss \
 -D[Standalone] -XX:+UseCompressedOops -Xms1303m \
 -Xmx1303m -XX:MaxPermSize=256m \
 -Djava.net.preferIPv4Stack=true \
 -Djboss.modules.system.pkgs=org.jboss.byteman \
 -Djava.awt.headless=true \
 -Dorg.jboss.boot.log.file=LOG_DIR/server.log \
 -Dlogging.configuration=file:CONF_DIR/logging.properties \
 -Djboss.modules.policy-permissions \
 -cp EAP_HOME/jboss-modules.jar:JSVC_JAR \
 -Djboss.home.dir=EAP_HOME \
 -Djboss.server.base.dir=EAP_HOME/standalone   \
 @org.jboss.modules.Main -start-method main \
 -mp EAP_HOME/modules \
 -jaxpmodule javax.xml.jaxp-provider \
 org.jboss.as.standalone

用 Jsvc 停止独立模式的 JBoss EAP 服务器:

JSVC_BIN \
 -stop \
 -outfile LOG_DIR/jsvc.out.log   \
 -errfile LOG_DIR/jsvc.err.log   \
 -pidfile LOG_DIR/jsvc.pid  \
 -user jboss \
 -D[Standalone] -XX:+UseCompressedOops -Xms1303m \
 -Xmx1303m -XX:MaxPermSize=256m \
 -Djava.net.preferIPv4Stack=true \
 -Djboss.modules.system.pkgs=org.jboss.byteman \
 -Djava.awt.headless=true \
 -Dorg.jboss.boot.log.file=LOG_DIR/server.log \
 -Dlogging.configuration=file:CONF_DIR/logging.properties \
 -Djboss.modules.policy-permissions \
 -cp EAP_HOME/jboss-modules.jar:JSVC_JAR \
 -Djboss.home.dir=EAP_HOME \
 -Djboss.server.base.dir=EAP_HOME/standalone   \
 @org.jboss.modules.Main -start-method main \
 -mp EAP_HOME/modules \
 -jaxpmodule javax.xml.jaxp-provider \
 org.jboss.as.standalone

使用 Jsvc 启动 JBoss EAP 受管域

下面的命令用 Jsvc 启动和停止受管域模式的 JBoss EAP。下表展示了在 ZIP/安装程序或 RPM 安装模式下命令所需的路径。

表 4.3. ZIP 安装模式下的 Jsvc 文件位置 - 受管域模式

参考文件说明文件位置

JSVC_BIN

EAP_HOME/../jbcs-jsvc-<VERSION>/sbin/jsvc

JSVC_JAR

EAP_HOME/../jbcs-jsvc-<VERSION>/lib/commons-daemon.jar

CONF_DIR

EAP_HOME/domain/configuration

LOG_DIR

EAP_HOME/domain/log

表 4.4. RPM 安装模式下的 Jsvc 文件位置 - 受管域模式

参考文件说明文件位置

JSVC_BIN

/usr/bin/jbcs-jsvc/jsvc

JSVC_JAR

/usr/bin/jbcs-jsvc/commons-daemon.jar

CONF_DIR

/opt/rh/eap7/root/usr/share/wildfly/domain/configuration

LOG_DIR

/opt/rh/eap7/root/usr/share/wildfly/domain/log

在执行下列命令前,请务必设置环境变量 JAVA_HOME

用 Jsvc 启动 JBoss EAP 受管域:

JSVC_BIN \
 -outfile LOG_DIR/jsvc.out.log   \
 -errfile LOG_DIR/jsvc.err.log   \
 -pidfile LOG_DIR/jsvc.pid  \
 -user jboss \
 -nodetach -D"[Process Controller]" -server -Xms64m \
 -Xmx512m -XX:MaxPermSize=256m \
 -Djava.net.preferIPv4Stack=true  \
 -Djboss.modules.system.pkgs=org.jboss.byteman \
 -Djava.awt.headless=true  \
 -Dorg.jboss.boot.log.file=LOG_DIR/process-controller.log \
 -Dlogging.configuration=file:CONF_DIR/logging.properties \
 -Djboss.modules.policy-permissions \
 -cp "EAP_HOME/jboss-modules.jar:JSVC_JAR" \
 org.apache.commons.daemon.support.DaemonWrapper \
 -start org.jboss.modules.Main -start-method main \
 -mp EAP_HOME/modules org.jboss.as.process-controller \
 -jboss-home EAP_HOME -jvm "${JAVA_HOME}"/bin/java \
 -mp EAP_HOME/modules -- \
 -Dorg.jboss.boot.log.file=LOG_DIR/host-controller.log \
 -Dlogging.configuration=file:CONF_DIR/logging.properties \
 -Djboss.modules.policy-permissions \
 -server -Xms64m -Xmx512m -XX:MaxPermSize=256m \
 -Djava.net.preferIPv4Stack=true \
 -Djboss.modules.system.pkgs=org.jboss.byteman \
 -Djava.awt.headless=true -- -default-jvm "${JAVA_HOME}"/bin/java \
&

用 Jsvc 停止 JBoss EAP 受管域:

JSVC_BIN \
 -stop \
 -outfile LOG_DIR/jsvc.out.log   \
 -errfile LOG_DIR/jsvc.err.log   \
 -pidfile LOG_DIR/jsvc.pid  \
 -user jboss \
 -nodetach -D"[Process Controller]" -server -Xms64m \
 -Xmx512m -XX:MaxPermSize=256m \
 -Djava.net.preferIPv4Stack=true  \
 -Djboss.modules.system.pkgs=org.jboss.byteman \
 -Djava.awt.headless=true  \
 -Dorg.jboss.boot.log.file=LOG_DIR/process-controller.log \
 -Dlogging.configuration=file:CONF_DIR/logging.properties \
 -Djboss.modules.policy-permissions \
 -cp "EAP_HOME/jboss-modules.jar:JSVC_JAR" \
 org.apache.commons.daemon.support.DaemonWrapper \
 -start org.jboss.modules.Main -start-method main \
 -mp EAP_HOME/modules org.jboss.as.process-controller \
 -jboss-home EAP_HOME -jvm $JAVA_HOME/bin/java \
 -mp EAP_HOME/modules -- \
 -Dorg.jboss.boot.log.file=LOG_DIR/host-controller.log \
 -Dlogging.configuration=file:CONF_DIR/logging.properties \
 -Djboss.modules.policy-permissions \
 -server -Xms64m -Xmx512m -XX:MaxPermSize=256m \
 -Djava.net.preferIPv4Stack=true \
 -Djboss.modules.system.pkgs=org.jboss.byteman \
 -Djava.awt.headless=true -- -default-jvm $JAVA_HOME/bin/java