Wildfly 9 部署简介 (Domain方式)

简要介绍

Wildfly是一个开源的基于JavaEE的轻量级应用服务器,最新版本是Wildfly 10,遵循LGPL许可,意味着可以在任何商业应用中免费使用。具有启动速度快、轻量、强大的管理界面、支持JavaEE7(Wildfly 10)、易于测试等特性。
但是一旦说起Wildfly,我们一定要提到JBoss,Wildfly既是JBoss改名而来。2006年,JBoss被Redhat公司收购。 JBoss AS目前作为Redhat公司的商业产品JBoss Enterprise Application Platform的上游基础,为了使这两个产品有差异化,避免用户混淆,因此该公司在去年10月份就寻求为JBoss AS找一个新名字。

Wildfly

RedHat公司称,新名称WildFly反映了服务器“非常灵活、轻量、不羁、自由”的特性。**其实就是更新会快些,可以不再那么束缚开发者,而且商业版本还能有钱赚。但是不管怎么说,对于JBoss、开发者、使用者都是好的! **

本文仅仅是介绍基础操作和安装配置,更详细、准确、进阶的,请查看官方文档:
https://docs.jboss.org/author/display/WFLY9/Documentation

基础知识 & 操作说明

以下内容将使用网页端控制台,没有安装好Wildfly的请先安装和配置。

Wildfly Deployments

Deployments是指server相关的项目部署,server与deployments是分开的,一个server可以有多个deployments,一个deployments可以指向多个server。这点与Weblogic是一样的。

新增deployment

这里只讲解unmanaged deployment,这样可以指定一个部署路径(需要指向的Server所在Host的部署路径),而不需要上传项目EAR文件。
在deployments中配置的路径,是指此deployments所要分配的server所在host的路径,而并非Domain主机的路径。
选择 Create an unmanaged deployment

Add Deploy Step 1

Path填写项目部署文件路径,注意这里的Runtime Name必需以.war结尾
Add Deploy Step 2

分配deployment

新增deployments之后,需要分配到已创建的server group,以运行此deployment
注意这里是分配给server group,而不能直接分配给server,这是因为Wildfly注重可扩展、易管理的操作方式。这点在之后的Profiles、Groups会讲到。


Assign Deploy

Wildfly Configuration

Configuration 中可以配置Profiles、Socket Binding,这是运行一个server基本的配置项。

Wildfly Profiles

Profiles是一个定义ServerGroup配置的集合,你可以配置所有关于应用容器相关的内容,例如Datasources、Logging、Web Services等等。Wildfly内置了default/full/full-ha/ha四个Profile。

Profiles

Basically,你的项目用不到这其中的任何配置,最常见的是使用Datasources,这需要你在项目中支持Wildfly的框架,比如你怎么连接到Wildfly提供的JNDI的代码段。

这里我们直接使用内置的任何一个都可以,并不会对我们的项目产生影响。

Wildfly Socket Binding

Socket Binding

Socket binding定义了在指定的网络接口启用HTTP/HTTPS等方式的起始端口的配置,支持MuiltCast方式,但是暂时没有用到。

注意,这里的Socket binding是用于Server Group的,在此Server Group中的Server根据需要,指定端口偏移值,才是Server的端口。
例如,Socket Binding中的standard-sockets定义了http端口是8080,如果test-group应用了standard-sockets,test-group其中的test-server-1在创建时,必需设定8080的偏移值,如果是1,则test-server-1的http访问方式为IP:8081。

更改起始端口

选择需要更改的Socket类型,例如https,点击edit修改起始端口


Update Port

Wildfly Runtime

Runtime,运行时。用于管理应用容器的运行时生命周期,例如新增、启动、停止等等。

Runtime

Wildfly Host

Host即主机,你需要一个用于运行Server的host,这个就是domain/configuration/host.xml中配置的主机。每个主机的wildfly服务在启动之后,将连接到Domain,由Domain统一管理。
包括Domain自身也属于一个host,只不过同时是管理Domain的入口。
所有的Host在Domain看来都是一致的,每个Host中运行的Wildfly版本应该一致,而且Domain可以访问他们任何一个Host。

Wildfly Server Group

Server Group是同一业务类型的Server的集合,可以批量的管理在该集合之下的所有server,
Wildfly中使用了Server Group强制代替了直接管理Server的方式,也就是说,在创建Server之前,你必须要创建Server Group,再在这个Server Group中创建Server。

创建 Server Group

指定需要使用的Profile、Socket Binding,从而基本定义了这个Server Group。


Add Server Group

Wildfly Server

这里的Server才是最终运行的服务,但是Server自身只能定义自己的端口偏移值,JVM参数,System Properties等信息,其他的都由Server Group使用的Profiles和Socket Binding配置。

创建 Server

你需要指定此Server运行于哪个Host,属于哪个Server Group,端口偏移值和是否需要自启动等信息。


Add Server

更新 Server JVM

Config Server

安装和配置

这里开始讲解如何以Domain方式安装和配置Wildfly,在配置并启动后,所有其他操作尽量在网页控制台中进行,不要随意更改domain.xml或者host.xml
Domain的方式即一个管理节点(domain),多个受控节点(slave)。

DOMAIN & SLAVE: 安装JDK

[root@localhost opt]# ll
total 138892
-rw-r--r--. 1 root root 142216602 Jun  1 17:31 jdk-7u71-linux-x64.tar.gz
drwxr-xr-x. 2 root root      4096 May 10  2012 rh
[root@localhost opt]# tar zxf jdk-7u71-linux-x64.tar.gz

DOMAIN & SLAVE: 安装Wildfly

## 将wildfly的安装包放置在用户目录下
[irm@localhost ~]$ tar zxf wildfly-9.0.2.Final.tar.gz

DOMAIN & SLAVE: 配置环境变量

[irm@localhost ~]$ vi .bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

JAVA_HOME=/opt/jdk1.7.0_71
export JBOSS_HOME=/home/irm/wildfly-9.0.2.Final
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export PATH

DOMAIN : 创建Wildfly管理用户

[irm@localhost ~]$ wildfly-9.0.2.Final/bin/add-user.sh 
What type of user do you wish to add? 
 a) Management User (mgmt-users.properties) 
 b) Application User (application-users.properties)
# 输入a,以添加管理用户
(a): a

Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
# 输入用户名
Username : test
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 : 
WFLYDM0099: Password should have at least 8 characters!
# 确认则输入yes
Are you sure you want to use the password entered yes/no? yes
# 重新输入密码
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 'test' for realm 'ManagementRealm'
# 继续则输入yes
Is this correct yes/no? yes
Added user 'test' to file '/home/irm/wildfly-9.0.2.Final/standalone/configuration/mgmt-users.properties'
Added user 'test' to file '/home/irm/wildfly-9.0.2.Final/domain/configuration/mgmt-users.properties'
Added user 'test' with groups  to file '/home/irm/wildfly-9.0.2.Final/standalone/configuration/mgmt-groups.properties'
Added user 'test' with groups  to file '/home/irm/wildfly-9.0.2.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
yes/no? yes
这里需要注意,用户添加完毕后,将回馈给你此用户的secret value,可在domain与slave 的通信中用到,下文中会讲到
To represent the user add the following to the server-identities definition <secret value="YWFhYWFh" />

DOMAIN: 配置Wildfly Domain

[irm@localhost ~]$ cd wildfly-9.0.2.Final/domain/configuration/
[irm@localhost configuration]$ vi host.xml
<!-- 更改hostname为标识本机的host名称,与系统的hostname无关 -->
<host name="irms_host_1" xmlns="urn:jboss:domain:3.0">
....
<!-- 编辑server-identities标签,配置文件中没有的手动添加这一段,更改secret value为刚刚添加用户返回的值 -->
<management>
        <security-realms>
            <security-realm name="ManagementRealm">
                <server-identities>
                    <secret value="YWFhYWFh"/>
                </server-identities>
<!-- 注意下面的http-interface security-realm="ManagementRealm" 是与slave配置的不同之处,slave没有这段配置 -->
    <management-interfaces>
        <native-interface security-realm="ManagementRealm">
            <socket interface="management" port="${jboss.management.native.port:9999}"/>
        </native-interface>
        <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
            <socket interface="management" port="${jboss.management.http.port:9990}"/>
        </http-interface>
    </management-interfaces>
....
<!--这里的domain-controller中的内容是空的,因为本机服务器是domain,所以无需指定谁是controller-->
    <domain-controller>
        <local/>
    </domain-controller>
....
<!-- 编辑下面的IP地址为本机的IP地址 -->
    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:10.174.243.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:10.174.243.1}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:10.174.243.1}"/>
        </interface>
    </interfaces>
....
    <!--清空servers标签中的内容,原内容为server 的example-->
    <servers>

    </servers>

SLAVE: 配置Wildfly Slave

[irm@localhost ~]$ cd wildfly-9.0.2.Final/domain/configuration/
#### 删除domain.xml,或者重命名
[irm@localhost configuration]$ mv domain.xml domain.xml_bak
#### 编辑slave配置文件
[irm@localhost configuration]$ vi host.xml
<!-- 更改hostname为标识本机的host名称,与系统的hostname无关 -->
<host name="hostname" xmlns="urn:jboss:domain:3.0">
.....
<!-- 编辑server-identities标签,配置文件中没有的手动添加这一段,更改secret value为与domain一样的配置 -->
<management>
        <security-realms>
            <security-realm name="ManagementRealm">
                <server-identities>
                    <secret value="YWFhYWFh"/>
                </server-identities>
<!-- 更改domain-controller中的host为Wildfly Domain的IP地址 -->
<domain-controller>
        <remote protocol="remote" host="10.174.243.1" port="9999" security-realm="ManagementRealm" username="slave"/>
    </domain-controller>
<!-- 更改下面三个IP地址为本机IP地址-->
    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:10.174.243.5}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:10.174.243.5}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:10.174.243.5}"/>
        </interface>
    </interfaces>
....
    <!--清空servers标签中的内容,原内容为server 的example-->
    <servers>

    </servers>

DOMAIN & SLAVE: 配置系统服务

#### 编辑Wildfly服务所需的配置文件
[root@localhost /]# vi /etc/default/wildfly.conf
## JDK目录
JAVA_HOME="/opt/jdk1.7.0_71"

## JBOSS_HOME是Wildfly的安装根目录
JBOSS_HOME="/home/irm/wildfly-9.0.2.Final"

## 这里需要改为执行wildfly的用户
JBOSS_USER=irm

## 指定运行模式为domain
JBOSS_MODE=domain

## 指定domain的配置文件为domain.xml,slave的配置文件为host.xml
JBOSS_DOMAIN_CONFIG=domain.xml
JBOSS_HOST_CONFIG=host.xml
# 安装和启用服务,先启动Domain的服务,再启动各个Slave
[root@localhost /]# cp wildfly-9.0.2.Final/bin/init.d/wildfly-init-redhat.sh /etc/init.d/wildfly
[root@localhost /]# chmod +x /etc/init.d/wildfly
[root@localhost /]# chkconfig --add wildfly
[root@localhost /]# chkconfig wildfly on
[root@localhost /]# service wildfly start

访问Wildfly

在浏览器中访问http://DomainIP:9990/console/App.html 以管理Wildfly,这里的用户名和密码是在运行add-user.sh时配置的。

需注意的问题

  • Wildfly 9 的控制台对IE浏览器支持不佳,尽量使用Chrome或者其他浏览器代替
  • deployments的runtime name必需以.war结尾
  • 如果项目中使用了slf4j,或者项目中包含log4j.properties,则需要禁用Wildfly自身的日志功能,因为这会产生冲突
    在项目的WEB-INF目录中,编辑或新增jboss-deployment-structure.xml文件,内容如下:
<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.apache.log4j" />
            <module name="org.jboss.logging" />
            <module name="org.jboss.logging.jul-to-slf4j-stub" />
            <module name="org.jboss.logmanager" />
            <module name="org.jboss.logmanager.log4j" />
            <module name="org.slf4j" />
            <module name="org.slf4j.impl" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>
  • 如果需要禁用Wildfly的欢迎页面,需在项目的WEB-INF目录中,编辑或新增jboss-deployment-structure.xml文件,内容如下:
<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <exclude-subsystems>
            <subsystem name="webservices" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>
  • 指定项目需要使用的URL后缀,即location,需编辑或新增项目中的WEB-INF/jboss-web.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <context-root>/test</context-root>
</jboss-web>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,653评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,321评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,833评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,472评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,306评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,274评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,658评论 3 385
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,335评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,638评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,697评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,454评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,311评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,699评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,986评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,254评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,647评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,847评论 2 335

推荐阅读更多精彩内容