《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 实例
初次启动实例
- 查看 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>
- 使用指定的 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
- 执行命令创建一个管理员用户 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'
- 确认 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> | Domain | Domain 模式的 primary 地址 |
-Djboss.domain.primary.port=<value> | Domain | Domain 模式的 primary 端口 |
指定 Server 使用的工作目录
每个运行的 standalone server 实例都会有个工作目录。默认使用 EAP_HOME/standalone 作为实例的工作目录 ,可以通过指定 jboss.server.base.dir 系统参数更改实例的工作目录。
- 创建实例的工作目录,并将 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
- 使用新的工作目录启动 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
- 查看工作目录,确认在 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 参数。
- 设置 COMMON_CONF 变量。
$ export COMMON_CONF=/opt/my-standalone-server/configuration/common.conf
- 在 COMMON_CONF 指定的 common.conf 文件中设置 JBOSS_JAVA_SIZING 参数。
cat > $COMMON_CONF << EOF
JBOSS_JAVA_SIZING="-Xms1024m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m"
EOF
- 然后重启 Standalone 的 Server 实例即可。
部署应用
先将 https://github.com/RedHatQuickCourses/eap-qc-apps/releases/download/eap8-lp/temperature-converter.war 下载到本地。
用 Console 部署应用
受管部署
- 登录 JBoss EAP 的 Console,然后在 Deployments 页面中的下拉菜单点击 Upload Deployment。
- 在弹出窗口中先上传 temperature-converter.war 文件,然后点击 Next。
- 在下图确认后点击 Finish。
- 在最后一步点击 View Deployment 后可以看到部署应用的情况。
- 点击上图的 View,将显示下图。
- 查看 /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>
- 在实例的工作目录中确认有和以上 sha1 属性值同名的目录,其中包含名为 content 的文件,且该文件大小和 temperature-converter.war 一样。
$ tree /opt/my-standalone-server/data/content
/opt/my-standalone-server/data/content
└── 4e
└── 11ae98eddcbe49628ae942e4943f58f341ac9e
└── content
- 点击上图的 Back 后,在下图的 temperature-converter.war 部署右侧点击下拉框,然后选择 Undeploy 即可。
- 确认在 data/content 中已经没有文件了。
$ tree /opt/my-standalone-server/data/content
/opt/my-standalone-server/data/content
0 directories, 0 files
非受管部署
- 在控制台中的 Deployment 选择 Unmanaged Deployment 菜单。
- 在弹出窗口按下图填入部署配置,然后点击 Add。其中 Archive 代表部署的目标并非目录,而是 WAR、EAR 等打包文件。
- 查看 /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>
- 在 Console 中可使用 Undeploy 撤销部署。
用 CLI 部署应用
交互模式
- 执行命令进入交互模式。
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=$HOST_IP:9990
- 部署 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
- 撤销部署 temperature-converter.war,然后退出交互模式。
[standalone@10.66.192.154:9990 /] undeploy temperature-converter.war
[standalone@10.66.192.154:9990 /] quit
非交互模式
- 准备包含部署命令的脚本文件。
$ cat > ./deploy-cli.txt << EOF
deploy temperature-converter.war --name=temperature-converter.war
deployment-info
EOF
- 使用非交互模式执行脚本文件。
$ 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
- 使用非交互模式撤销部署 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 模块
- 下载 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
- 基于 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>
- 基于刚创建的模块向 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
- 在 JBoss 的控制台进入 Configuration → Subsystems → Datasources & Drivers.→ Datasources,然后点击 Add Datasource。
- 在 Add Datasource 弹出窗口的第一步先选择 MariaDB。
- 第 2 步配置:
Name: test-ds
JNDI Name: java:jboss/datasources/test-ds - 第 3 步配置:
Driver Name: mariadb
Driver Class Name: org.mariadb.jdbc.Driver - 第 4 步配置:
Connection URL: jdbc:mariadb://localhost:3306/lab_db
User Name: developer
Password: redhat123 - 第 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