如何在 Debian 9 上安装 WildFly (JBoss)

WildFly ,以前称为 JBoss ,是一个用 Java 编写的跨平台开源应用程序运行时,可帮助您构建出色的应用程序。 WildFly 具有灵活性,轻量级,并且基于可插拔子系统,可根据需要添加或删除。

在本教程中,我们将带您完成在 Debian 9 上安装 WildFly 应用服务器所需的步骤。

先决条件

您登录的用户必须具有 sudo 权限才能安装软件包。

安装 Java OpenJDK

WildFly 需要安装 Java 。我们将安装 OpenJDK ,它是 Debian 9 中的默认 Java 开发和运行时:

1
2
sudo apt update
sudo apt install default-jdk

如果要使用 Oracle Java 而不是 OpenJDK ,请参考这个说明进行安装。

创建用户

创建一个新的系统用户和组来运行 WildFly 服务, 用户名为 wildfly, 用户主目录是 /opt/wildfly


1
2
sudo groupadd -r wildfly
sudo useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly

安装 WildFly

在撰写本文时,最新版本的 WildFly 是 16.0.0 。在继续下一步之前,您应该从下载页面检查是否有新版本。如果有新版本,请替换下面的命令中的变量 WILDFLY_VERSION

使用以下 wget 命令 在目录 /tmp 中下载 WildFly 存档:

1
2
WILDFLY_VERSION=16.0.0.Final
wget https://download.jboss.org/wildfly/$WILDFLY_VERSION/wildfly-$WILDFLY_VERSION.tar.gz -P /tmp

下载完成后,解压缩 tar.gz 文件并将其移至 /opt 目录:

1
sudo tar xf /tmp/wildfly-$WILDFLY_VERSION.tar.gz -C /opt/

创建一个指向 WildFly 安装目录的符号链接 wildfly

1
sudo ln -s /opt/wildfly-$WILDFLY_VERSION /opt/wildfly

WildFly 运行在用户 wildfly 下, wildfly 需要访问 WildFly 安装目录。将目录所有权更改为用户和组 wildfly

1
sudo chown -RH wildfly: /opt/wildfly

配置 Systemd

WildFly 包中包含将 WildFly 作为服务运行所必需的文件。

首先创建一个目录 /etc/wildfly 用来存放 WildFly 配置文件

1
sudo mkdir -p /etc/wildfly

将配置文件复制到 /etc/wildfly 目录:

1
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/

在此配置文件 /etc/wildfly/wildfly.conf 中允许您指定 WildFly 模式和绑定地址。默认情况下, WildFly 将以独立模式运行,并将侦听所有接口。根据您的需要编辑文件。

1
2
3
4
5
6
7
8
# The configuration you want to run
WILDFLY_CONFIG=standalone.xml

# The mode you want to run
WILDFLY_MODE=standalone

# The address to bind to
WILDFLY_BIND=0.0.0.0

接下来,将 WildFly launch.sh 脚本复制到 /opt/wildfly/bin/ 目录:

1
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/

bin 目录中的脚本需要具有可执行权限:

1
sudo sh -c 'chmod +x /opt/wildfly/bin/*.sh'

最后一步是将 systemd 单元文件复制到 /etc/systemd/system/ 目录:

1
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/

重新加载 systemd 管理配置:

1
sudo systemctl daemon-reload

启动 WildFly 服务并启用随机启动:

1
2
sudo systemctl start wildfly
sudo systemctl enable wildfly

使用以下命令检查服务状态:

1
sudo systemctl status wildfly
1
2
3
4
5
6
* wildfly.service - The WildFly Application Server
Loaded: loaded (/etc/systemd/system/wildfly.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2019-02-17 04:59:39 PST; 2s ago
Main PID: 10005 (launch.sh)
Tasks: 62 (limit: 2319)
CGroup: /system.slice/wildfly.service

调整防火墙

如果您的服务器受防火墙保护,并且您想从本地网络外部访问 WildFly 接口,则需要打开端口 8080 。

要允许端口 8080 上的访问,请键入以下命令:

1
sudo ufw allow 8080/tcp

在生产环境中运行 WildFly 应用程序时,您很可能会拥有负载均衡器或反向代理,最佳做法是仅将端口 8080 的访问权限限制到内部网络。

配置 WildFly 身份验证

现在 WildFly 已安装并运行,下一步是创建一个用户,能够使用管理控制台进行连接或使用 CLI 远程连接。

要添加新用户,请使用位于 WildFly 的 bin 目录中的脚本: add-user.sh

1
sudo /opt/wildfly/bin/add-user.sh

系统会询问您要添加的用户类型:

1
2
3
4
What type of user do you wish to add? 
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a):

选择 a 并点击 Enter

接下来,该脚本将提示您输入新用户的详细信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : buzheng
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
- The password should be different from the username
- The password should not be one of the following restricted values {root, admin, administrator}
- The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
Password :
Re-enter Password :
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
About to add user 'buzheng' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'buzheng' to file '/opt/wildfly-16.0.0.Final/standalone/configuration/mgmt-users.properties'
Added user 'buzheng' to file '/opt/wildfly-16.0.0.Final/domain/configuration/mgmt-users.properties'
Added user 'buzheng' with groups to file '/opt/wildfly-16.0.0.Final/standalone/configuration/mgmt-groups.properties'
Added user 'buzheng' with groups to file '/opt/wildfly-16.0.0.Final/domain/configuration/mgmt-groups.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret value="UGFuMjNkZWo3NyNA" />

新用户将添加到用于身份验证的属性文件中。

测试 WildFly 安装

要访问默认的 WildFly 页面,请打开浏览器并键入: http://<your_domain_or_IP_address>:8080

如果安装成功,将出现类似于以下内容的屏幕:

访问 WildFly 管理控制台

命令行界面

要从命令行访问 WildFly 管理控制台,您可以使用 jboss-cli.sh 脚本。

进入到 WildFly 的 bin 目录并使用 --connect 选项运行脚本:

1
2
cd /opt/wildfly/bin/
./jboss-cli.sh --connect

系统将要求您输入管理用户名和密码(已在上述步骤中创建):

1
2
3
Authenticating against security realm: ManagementRealm
Username: buzheng
Password:

登录后,控制台提示符将变为 [[email protected]:9990 /] 。键入 help 以获取命令和命令语法列表。

从这里,您可以部署和取消部署应用程序,管理用户和组以及配置和监视 WildFly 服务器。

Web 界面

如果您更喜欢从 GUI 管理服务器, WildFly 还提供基于 Web 的控制台。

默认情况下, WildFly 管理控制台仅在 localhost 中可用 http://localhost:9990/console 。使用您在上述步骤中创建的用户登录。

如果你想从远程地点访问控制台,您需要稍微修改 wildfly.servicewildfly.conflaunch.sh 文件。

打开 /etc/wildfly/wildfly.conf 并附加到 WILDFLY_CONSOLE_BIND=0.0.0.0文件的末尾。

1
2
3
4
5
6
7
8
9
10
11
# The configuration you want to run
WILDFLY_CONFIG=standalone.xml

# The mode you want to run
WILDFLY_MODE=standalone

# The address to bind to
WILDFLY_BIND=0.0.0.0

# The address console to bind to
WILDFLY_CONSOLE_BIND=0.0.0.0

打开 /opt/wildfly/bin/launch.sh 并编辑最后几行:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

if [ "x$WILDFLY_HOME" = "x" ]; then
WILDFLY_HOME="/opt/wildfly"
fi

if [[ "$1" == "domain" ]]; then
$WILDFLY_HOME/bin/domain.sh -c $2 -b $3 -bmanagement $4
else
$WILDFLY_HOME/bin/standalone.sh -c $2 -b $3 -bmanagement $4
fi

重新启动服务以使更改生效:

1
sudo systemctl restart wildfly

打开 /etc/systemd/system/wildfly.service 并编辑 ExecStart 行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=The WildFly Application Server
After=syslog.target network.target
Before=httpd.service

[Service]
Environment=LAUNCH_JBOSS_IN_BACKGROUND=1
EnvironmentFile=-/etc/wildfly/wildfly.conf
User=wildfly
LimitNOFILE=102642
PIDFile=/var/run/wildfly/wildfly.pid
ExecStart=/opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND $WILDFLY_CONSOLE_BIND
StandardOutput=null

[Install]
WantedBy=multi-user.target

重新加载 systemd 管理器配置:

1
sudo systemctl daemon-reload

运行以下命令重新启动 WildFly 服务:

1
sudo systemctl restart wildfly

假设您的防火墙没有阻止端口 9990 ,您应该能够访问 WildFly 管理控制台 http://<your_domain_or_IP_address>:9990/console

结论

您已在 Debian 9 服务器上成功安装了 WildFly 。您还可以访问官方 WildFly 文档并了解有关 WildFly 功能的更多信息。