JBoss EAP 8 - 使用 Standalone 运行模式

OpenShift / RHEL / DevSecOps 汇总目录

安装 JBoss EAP

安装 JBoss EAP 8 前先要安装 OpenJDK 17。
在 Linux 中安装 JBoss EAP 有以下四种安装方式:

安装方式优势限制
zip可在一个主机的不同目录下安装多份
rpm一个主机只能安装一份
jar可在一个主机的不同目录下安装多份。支持图形和字符安装过程。在安装过程中可以完成一部分配置
Installation Manager可在一个主机的不同目录下安装多份只能在线安装

在这里插入图片描述
由于 zip 安装方式支持在离线主机中安装多份运行环境,因此最灵活性。本文在 root 用户下以 zip 方式安装,解压缩的目录可称为 EAP_HOME。

运行 standalone server 实例

初次启动实例

  1. 查看 EAP_HOME/configuration/standalone.xml 文件中 <interfaces> 部分为以下内容,该配置只对 127.0.0.1 有效。
<interfaces>
  <interface name="management">
    <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
  </interface>
  <interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
  </interface>
</interfaces>
  1. 使用指定的 jboss.bind.address 和 jboss.bind.address.management 参数启动 standalone server 实例。
$ export EAP_HOME=YOUR_PATH
$ export HOST_IP=YOUR_IP_ADDRESS
$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=$HOST_IP -Djboss.bind.address.management=$HOST_IP
  1. 执行命令创建一个管理员用户 admin/redhat123。最后可以看到该用户是被同时加入到 standalone 和 domain 的用户和组配置文件中。
$ EAP_HOME/bin/add-user.sh -u 'admin' -p 'redhat123'
Updated user 'admin' to file '/root/jboss-eap-8.0/standalone/configuration/mgmt-users.properties'
Updated user 'admin' to file '/root/jboss-eap-8.0/domain/configuration/mgmt-users.properties'
Updated user 'admin' with groups  to file '/root/jboss-eap-8.0/standalone/configuration/mgmt-groups.properties'
Updated user 'admin' with groups  to file '/root/jboss-eap-8.0/domain/configuration/mgmt-groups.properties'
  1. 确认 mgmt-users.properties 文件中已有用户。
$ grep "admin=" EAP_HOME/standalone/configuration/mgmt-users.properties
admin=fa522cb75d2d2ac01fb09f2ab21e4302
$ grep "admin=" EAP_HOME/domain/configuration/mgmt-users.properties
admin=fa522cb75d2d2ac01fb09f2ab21e4302

重要启动参数

在启动 JBoss EAP Server 实例的时候可以提供以下两类参数:命令参数(启动命令参数)和系统参数(Java 系统参数)。

命令参数适用范围说明
-b=<value>Standalone,Domain将系统属性 jboss.bind.address 设为给定值
-b=<value>Standalone,Domain将系统属性 jboss.bind.address.<interface> 设为给定值
–server-config=<config>Standalone要使用的服务器配置文件的名称。默认为 standalone.xml
–domain-config=<config>Domain要使用的服务器配置文件的名称。默认为 domain.xml
–host-config=<config>Domain要使用的服务器配置文件的名称。默认值为 host.xml
系统属性适用范围说明
-Djboss.bind.address=<value>Standalone,Domain等同于 -b=<value>
-Djboss.bind.address.management=<value>Standalone,Domain等同于 -bmanagement=<value>
-Djboss.socket.binding.port-offset=<value>Standalone,Domain默认端口的偏移量
-Djboss.server.base.dir=<value>Standalone指定 Standalone 模式的 base 目录,其中包含 configuration,logs,deployments 等目录
-Djboss.domain.base.dir=<value>Domain指定 Domain 模式的 base 目录,其中包含 servers,configuration,logs,deployments 等目录
-Djboss.domain.primary.address=<value>DomainDomain 模式的 primary 地址
-Djboss.domain.primary.port=<value>DomainDomain 模式的 primary 端口

指定 Server 使用的工作目录

每个运行的 standalone server 实例都会有个工作目录。默认使用 EAP_HOME/standalone 作为实例的工作目录 ,可以通过指定 jboss.server.base.dir 系统参数更改实例的工作目录。

  1. 创建实例的工作目录,并将 configuration,deployments 和 lib 目录复制新建目录下。
$ mkdir -p /opt/my-standalone-server
$ cp -r EAP_HOME/standalone/configuration EAP_HOME/standalone/deployments EAP_HOME/standalone/lib /opt/my-standalone-server
  1. 使用新的工作目录启动 standalone server 实例。
$ EAP_HOME/bin/standalone.sh \
	-Djboss.server.base.dir=/opt/my-standalone-server \
	-Djboss.bind.address=$HOST_IP \
	-Djboss.bind.address.management=$HOST_IP \
	-Djboss.socket.binding.port-offset=10000
  1. 查看工作目录,确认在 standalone server 实例启动后新的 data,log 和 tmp 子目录被创建。
$ tree /opt/my-standalone-server -L 1
/opt/my-standalone-server
├── configuration
├── data					
├── deployments
├── lib
├── log
└── tmp

设置 JVM 参数

除了可直接修改 EAP_HOME/bin/standalone.conf 文件中的 JBOSS_JAVA_SIZING 参数外,还可通过以下方法设置 JBoss EAP Server 实例的 Java 参数。

  1. 设置 COMMON_CONF 变量。
$ export COMMON_CONF=/opt/my-standalone-server/configuration/common.conf
  1. 在 COMMON_CONF 指定的 common.conf 文件中设置 JBOSS_JAVA_SIZING 参数。
cat > $COMMON_CONF << EOF
JBOSS_JAVA_SIZING="-Xms1024m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m"
EOF
  1. 然后重启 Standalone 的 Server 实例即可。

部署应用

先将 https://github.com/RedHatQuickCourses/eap-qc-apps/releases/download/eap8-lp/temperature-converter.war 下载到本地。

用 Console 部署应用

受管部署

  1. 登录 JBoss EAP 的 Console,然后在 Deployments 页面中的下拉菜单点击 Upload Deployment。
    在这里插入图片描述
  2. 在弹出窗口中先上传 temperature-converter.war 文件,然后点击 Next。
  3. 在下图确认后点击 Finish。
    在这里插入图片描述
  4. 在最后一步点击 View Deployment 后可以看到部署应用的情况。
    在这里插入图片描述
  5. 点击上图的 View,将显示下图。
    在这里插入图片描述
  6. 查看 /opt/my-standalone-server/configuration/standalone.xml 文件,确认有以下 deployments 内容。注意 content 的 sha1 属性值。
    <deployments>
        <deployment name="temperature-converter.war" runtime-name="temperature-converter.war">
            <content sha1="4e11ae98eddcbe49628ae942e4943f58f341ac9e"/>
        </deployment>
    </deployments>
  1. 在实例的工作目录中确认有和以上 sha1 属性值同名的目录,其中包含名为 content 的文件,且该文件大小和 temperature-converter.war 一样。
$ tree /opt/my-standalone-server/data/content
/opt/my-standalone-server/data/content
└── 4e
    └── 11ae98eddcbe49628ae942e4943f58f341ac9e
        └── content
  1. 点击上图的 Back 后,在下图的 temperature-converter.war 部署右侧点击下拉框,然后选择 Undeploy 即可。
    在这里插入图片描述
  2. 确认在 data/content 中已经没有文件了。
$ tree /opt/my-standalone-server/data/content
/opt/my-standalone-server/data/content

0 directories, 0 files

非受管部署

  1. 在控制台中的 Deployment 选择 Unmanaged Deployment 菜单。
  2. 在弹出窗口按下图填入部署配置,然后点击 Add。其中 Archive 代表部署的目标并非目录,而是 WAR、EAR 等打包文件。
    在这里插入图片描述
  3. 查看 /opt/my-standalone-server/configuration/standalone.xml 文件,确认有以下 deployments 内容,部署目标是用户直接指定的文件。
    <deployments>
        <deployment name="temperature-converter.war" runtime-name="temperature-converter.war">
            <fs-archive path="/root/temperature-converter.war"/>
        </deployment>
    </deployments>
  1. 在 Console 中可使用 Undeploy 撤销部署。

用 CLI 部署应用

交互模式

  1. 执行命令进入交互模式。
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=$HOST_IP:9990
  1. 部署 temperature-converter.war,然后查看部署情况和部署状态。
[standalone@10.66.192.154:9990 /] deploy temperature-converter.war --name=temperature-converter.war
[standalone@10.66.192.154:9990 /] ls deployment
temperature-converter.war
[standalone@10.66.192.154:9990 /] deployment-info
NAME                      RUNTIME-NAME              PERSISTENT ENABLED STATUS
temperature-converter.war temperature-converter.war true       true    OK
  1. 撤销部署 temperature-converter.war,然后退出交互模式。
[standalone@10.66.192.154:9990 /] undeploy temperature-converter.war
[standalone@10.66.192.154:9990 /] quit

非交互模式

  1. 准备包含部署命令的脚本文件。
$ cat > ./deploy-cli.txt << EOF
deploy temperature-converter.war --name=temperature-converter.war
deployment-info
EOF
  1. 使用非交互模式执行脚本文件。
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=$HOST_IP:9990 --file=./deploy-cli.txt --echo-command
[standalone@192.168.1.159:9990 /] deploy /root/temperature-converter.war --name=temperature-converter.war
[standalone@192.168.1.159:9990 /] deployment-info
NAME                      RUNTIME-NAME              PERSISTENT ENABLED STATUS
temperature-converter.war temperature-converter.war true       true    OK
  1. 使用非交互模式撤销部署 temperature-converter.war。
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=$HOST_IP:9990 --command="undeploy temperature-converter.war"

配置 DataSource

准备数据库

$ yum install mariadb-server
$ systemctl start mariadb.service
$ mysql -u root -p
MariaDB [(none)]> create database lab_db;
MariaDB [(none)]> CREATE USER 'developer'@'%' IDENTIFIED BY 'redhat123';
MariaDB [(none)]> GRANT ALL privileges ON lab_db.* TO 'developer'@'%';
MariaDB [(none)]> exit;

添加 JDBC Driver 模块

  1. 下载 mariadb 的 Java 客户端 jar 包。
$ wget -c /opt https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/3.3.2/mariadb-java-client-3.3.2.jar
  1. 基于 Java 客户端 jar 包添加一个 JBoss EAP 的模块。
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=$HOST_IP:9990 --command="module add --name=com.mariadb --resources=/opt/mariadb-java-client-3.3.2.jar --dependencies=javaee.api,sun.jdk,ibm.jdk,javax.api,javax.transaction.api"
 
$ cat $EAP_HOME/modules/com/mariadb/main/module.xml
<?xml version="1.0" ?>
 
<module xmlns="urn:jboss:module:1.1" name="com.mariadb">
 
    <resources>
        <resource-root path="mariadb-java-client-3.3.2.jar"/>
    </resources>
 
    <dependencies>
        <module name="javaee.api"/>
        <module name="sun.jdk"/>
        <module name="ibm.jdk"/>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>
  1. 基于刚创建的模块向 JBoss EAP 添加 JDBC-Driver。
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=$HOST_IP:9990 --command="/subsystem=datasources/jdbc-driver=mariadb:add(driver-name=mariadb,driver-module-name=com.mariadb)"
{"outcome" => "success"}
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=$HOST_IP:9990  --command="/subsystem=datasources/jdbc-driver=mariadb:read-resource"
{
    "outcome" => "success",
    "result" => {
        "deployment-name" => undefined,
        "driver-class-name" => undefined,
        "driver-datasource-class-name" => undefined,
        "driver-major-version" => undefined,
        "driver-minor-version" => undefined,
        "driver-module-name" => "com.mariadb",
        "driver-name" => "mariadb",
        "driver-xa-datasource-class-name" => undefined,
        "jdbc-compliant" => undefined,
        "module-slot" => undefined,
        "profile" => undefined
    }
}

创建 DataSource

  1. 在 JBoss 的控制台进入 Configuration → Subsystems → Datasources & Drivers.→ Datasources,然后点击 Add Datasource。
    在这里插入图片描述
  2. 在 Add Datasource 弹出窗口的第一步先选择 MariaDB。
  3. 第 2 步配置:
    Name: test-ds
    JNDI Name: java:jboss/datasources/test-ds
  4. 第 3 步配置:
    Driver Name: mariadb
    Driver Class Name: org.mariadb.jdbc.Driver
  5. 第 4 步配置:
    Connection URL: jdbc:mariadb://localhost:3306/lab_db
    User Name: developer
    Password: redhat123
  6. 第 5 步成功测试后完成配置即可。

参考

https://redhatquickcourses.github.io/eap-admin1/eap-admin1/8/index.html
https://docs.redhat.com/en/documentation/red_hat_jboss_enterprise_application_platform/8.0/html-single/configuration_guide/index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值