OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2016/07/03
更新日: 2016/07/05

OSSでLinuxサーバ構築

WildFly 10.0.0をAWSのEC2(RHEL 7.2)へインストール

トップページOSSでLinuxサーバ構築 > WildFly 10.0.0をAWSのEC2(RHEL 7.2)へインストール
このエントリーをはてなブックマークに追加

概要

 オープンソースのJava EEアプリケーションサーバである WildFly 10.0.0 をAmazon Web ServicesのEC2インスタンスへインストールします。 OSのバージョンはRHEL 7.2です。 今回はOracle Java SEのJDK 8も併せてインストールします。

構成

想定環境

 WildFlyをインストールするサーバ環境としてAWS(Amazon Web Services)のEC2を利用しました。 サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
インスタンスタイプt2.micro
vCPU1
メモリ1GB
ディスクSSD 10GiB
リージョンオレゴン
価格無料

サーバ構成

OSバージョン

Red Hat Enterprise Linux 7.2 x86_64

ソフトウェア・パッケージ一覧

  • jdk-8u92-linux-x64.rpm
  • wildfly-10.0.0.Final.tar.gz

クライアント構成

OSバージョン

Windows 7 Ultimate Service Pack 1 64bit

ソフトウェア・パッケージ一覧

  • Internet Explorer 11

サーバ構築

インストール

 WildFlyの動作前提となるOracle Java(JDK)のインストーラとWildFlyのアーカイブをwgetコマンドで入手します。 なお、AWS のRHELには 7.2インスタンスにはwgetコマンドがインストールされていないので、まずはwgetパッケージをインストールします。

(1) wgetパッケージのインストール

 yumでwgetパッケージをインストールします。

$ sudo su -
Last login: Sat Jul  2 13:26:25 EDT 2016 from p03c407.tokynt01.ap.so-net.ne.jp on pts/0
Last failed login: Sat Jul  2 13:30:57 EDT 2016 on pts/0
There was 1 failed login attempt since the last successful login.
# yum install wget
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
rhui-REGION-client-config-server-7                                                                                   | 2.9 kB  00:00:00
rhui-REGION-rhel-server-releases                                                                                     | 3.7 kB  00:00:00
rhui-REGION-rhel-server-rh-common                                                                                    | 3.8 kB  00:00:00
(1/5): rhui-REGION-client-config-server-7/x86_64/primary_db                                                          | 5.4 kB  00:00:00
(2/5): rhui-REGION-rhel-server-rh-common/7Server/x86_64/group                                                        |  104 B  00:00:00
(3/5): rhui-REGION-rhel-server-rh-common/7Server/x86_64/primary_db                                                   | 104 kB  00:00:00
(4/5): rhui-REGION-rhel-server-rh-common/7Server/x86_64/updateinfo                                                   |  28 kB  00:00:00
(5/5): rhui-REGION-rhel-server-releases/7Server/x86_64/primary_db                                                    |  22 MB  00:00:01
(1/2): rhui-REGION-rhel-server-releases/7Server/x86_64/group_gz                                                      | 134 kB  00:00:00
(2/2): rhui-REGION-rhel-server-releases/7Server/x86_64/updateinfo                                                    | 1.2 MB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-10.el7_0.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================
 Package                Arch                     Version                           Repository                                          Size
============================================================================================================================================
Installing:
 wget                   x86_64                   1.14-10.el7_0.1                   rhui-REGION-rhel-server-releases                   546 k

Transaction Summary
============================================================================================================================================
Install  1 Package

Total download size: 546 k
Installed size: 2.0 M
Is this ok [y/d/N]: y ←yを入力する
Downloading packages:
wget-1.14-10.el7_0.1.x86_64.rpm                                                                                      | 546 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : wget-1.14-10.el7_0.1.x86_64                                                                                              1/1
  Verifying  : wget-1.14-10.el7_0.1.x86_64                                                                                              1/1

Installed:
  wget.x86_64 0:1.14-10.el7_0.1

Complete!

(2) インストールモジュールのダウンロード

 JDK 8u92とWildFly 10.0.0をwgetでダウンロードします。

# cd /media/
# mkdir installer
# cd installer/
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm"
--2016-07-02 13:39:36--  http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm
Resolving download.oracle.com (download.oracle.com)... 23.3.105.32, 23.3.105.11
Connecting to download.oracle.com (download.oracle.com)|23.3.105.32|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://edelivery.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm [following]
--2016-07-02 13:39:36--  https://edelivery.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm
Resolving edelivery.oracle.com (edelivery.oracle.com)... 23.6.102.140
Connecting to edelivery.oracle.com (edelivery.oracle.com)|23.6.102.140|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://edelivery.oracle.com/osdc-otn/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm [following]
--2016-07-02 13:39:36--  https://edelivery.oracle.com/osdc-otn/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm
Reusing existing connection to edelivery.oracle.com:443.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm?AuthParam=1467481296_65ee672272f42a936bfc92dfdb20688b [following]
--2016-07-02 13:39:36--  http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm?AuthParam=1467481296_65ee672272f42a936bfc92dfdb20688b
Connecting to download.oracle.com (download.oracle.com)|23.3.105.32|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 165953904 (158M) [application/x-redhat-package-manager]
Saving to: ‘jdk-8u92-linux-x64.rpm’

100%[==================================================================================================>] 165,953,904 4.93MB/s   in 35s

2016-07-02 13:40:12 (4.51 MB/s) - ‘jdk-8u92-linux-x64.rpm’ saved [165953904/165953904]

# wget http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.tar.gz
--2016-07-02 13:48:59--  http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.tar.gz
Resolving download.jboss.org (download.jboss.org)... 23.72.14.23
Connecting to download.jboss.org (download.jboss.org)|23.72.14.23|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 137189474 (131M) [application/x-gzip]
Saving to: ‘wildfly-10.0.0.Final.tar.gz’

100%[==================================================================================================>] 137,189,474 8.85MB/s   in 28s

2016-07-02 13:49:28 (4.73 MB/s) - ‘wildfly-10.0.0.Final.tar.gz’ saved [137189474/137189474]

# ls -l
total 296044
-rw-r--r--. 1 root root 165953904 Apr  1 13:07 jdk-8u92-linux-x64.rpm
-rw-r--r--. 1 root root 137189474 Jan 29 20:57 wildfly-10.0.0.Final.tar.gz

(3) JDK 8u92のインストール

 JDKのrpmパッケージをインストールします。

# rpm -ihv jdk-8u92-linux-x64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_92-2000:1.8.0_92-fcs    ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...

 JDKは複数バージョンのJDKが同時にインストールされている場合、 どのバージョンを利用するか選択して切り替える必要があります。 今回はインストールした1バージョンのJDKだけなので切替は必要ありませんが、一応確認しておきます。 また、インストールされているJDKのバージョンを確認しておきます。

# alternatives --config java

There is 1 program that provides 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/java/jdk1.8.0_92/jre/bin/java ←JDK(javaコマンド)が1つのバージョンしかインストールされていないことを確認

Enter to keep the current selection[+], or type selection number: ←[Enter]キーを押す
# alternatives --config javac

There is 1 program that provides 'javac'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/java/jdk1.8.0_92/bin/javac ←JDK(javacコマンド)が1つのバージョンしかインストールされていないことを確認

Enter to keep the current selection[+], or type selection number: ←[Enter]キーを押す
# java -version
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

(4) WildFlyのインストール

 WildFlyをインストールします。インストールと言っても必要なファイルが .tar.gz 形式でアーカイブされているだけなので、/opt/ ディレクトリ配下に展開するだけです。

# tar zxvf wildfly-10.0.0.Final.tar.gz -C /opt/
wildfly-10.0.0.Final/
wildfly-10.0.0.Final/.installation/
wildfly-10.0.0.Final/appclient/
wildfly-10.0.0.Final/appclient/configuration/
wildfly-10.0.0.Final/bin/
(中略)
wildfly-10.0.0.Final/welcome-content/jbosscommunity_logo_hori_white.png
wildfly-10.0.0.Final/welcome-content/noconsole.html
wildfly-10.0.0.Final/welcome-content/noredirect.html
wildfly-10.0.0.Final/welcome-content/wildfly.css
wildfly-10.0.0.Final/welcome-content/wildfly_logo.png
# ls -l /opt/
total 4
drwxr-xr-x. 10 505 505 4096 Jan 29 17:12 wildfly-10.0.0.Final ←WildFlyのプログラムが展開された

設定

(1) WildFly用のOSグループ作成

 インストールしたWildFly関連のファイルはUID、GIDがいずれも505となっています。 CentOS 7.2にはデフォルトではそのようなOSユーザ、OSグループは存在していません。 そこで、WildFlyを管理するための専用OSユーザ、OSグループを作成します。 名前はいずれも wildfly とします。 まずはOSグループ wildfly を作成します。GIDは 1001 とします。

# groupadd -g 1001 wildfly
# tail -n 2 /etc/group
ec2-user:x:1000:
wildfly:x:1001: ←wildflyグループが作成された

(2) WildFly用のOSユーザ作成

 OSユーザ wildfly を作成します。UIDは 1001 とし、プライマリグループを 1001 とします。

# useradd -u 1001 -g 1001 wildfly
# tail -n 2 /etc/passwd
ec2-user:x:1000:1000:Cloud User:/home/ec2-user:/bin/bash
wildfly:x:1001:1001::/home/wildfly:/bin/bash ←wildflyユーザが作成された

(3) OSユーザのパスワード設定

 作成したOSユーザ wildfly のパスワードを設定します。

# passwd wildfly
Changing password for user wildfly.
New password: ←パスワードを入力
Retype new password: ←パスワードを再入力
passwd: all authentication tokens updated successfully.

(4) WildFlyのインストールファイルの所有者・所有グループ変更

 インストールしたWildFly関連のファイルの所有者・所有グループを wildflyユーザ、wildflyグループに設定します。

# cd /opt/
# chown -R wildfly:wildfly wildfly-10.0.0.Final/

(5) WildFlyインスタンスのバインドアドレス変更

 WildFlyインストール後の初期状態では、バインドアドレスがループバックアドレス(127.0.0.1)に設定されているため、 サーバの外部から接続することができません。そこで、バインドアドレスをサーバのIPアドレスに変更します。 ここではサーバのIPアドレスが 172.31.29.129 である場合の設定例です。

# su - wildfly
$ cd /opt/wildfly-10.0.0.Final/standalone/configuration/
$ vi standalone.xml
ファイル名:/opt/wildfly-10.0.0.Final/standalone/configuration/standalone.xml
※以下、該当箇所のみ変更※
            <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
         ↓変更
            <wsdl-host>${jboss.bind.address:172.31.29.129}</wsdl-host>

            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
         ↓変更
            <inet-address value="${jboss.bind.address.management:172.31.29.129}"/>

            <inet-address value="${jboss.bind.address:127.0.0.1}"/>
         ↓変更
            <inet-address value="${jboss.bind.address:172.31.29.129}"/>

(6) WildFlyインスタンスの起動

 バインドアドレスを設定したらWildFlyインスタンスを起動します。 起動用のシェルスクリプトが準備されているので、それを利用します。 なお、起動用のシェルスクリプトはフォアグラウンドで動作するようになっており、 プロンプトが占有されるので、バックグラウンドで起動するようにします。

$ cd /opt/wildfly-10.0.0.Final/bin/
$ ./standalone.sh &
[1] 9764
$ =========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/wildfly-10.0.0.Final

  JAVA: java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

14:15:42,793 INFO  [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final
14:15:43,178 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final
14:15:43,291 INFO  [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) starting
14:15:45,375 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
14:15:45,401 INFO  [org.xnio] (MSC service thread 1-1) XNIO version 3.3.4.Final
14:15:45,418 INFO  [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.3.4.Final
14:15:45,742 INFO  [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 4.0.18.Final
14:15:45,753 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 56) WFLYWS0002: Activating WebServices Extension
14:15:45,781 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 55) WFLYUT0003: Undertow 1.3.15.Final starting
14:15:45,783 WARN  [org.jboss.as.txn] (ServerService Thread Pool -- 54) WFLYTX0013: Node identifier property is set to the default value. Please make sure it is unique.
14:15:45,794 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0003: Undertow 1.3.15.Final starting
14:15:45,801 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 53) WFLYSEC0002: Activating Security Subsystem
14:15:45,829 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 46) WFLYNAM0001: Activating Naming Subsystem
14:15:45,843 INFO  [org.jboss.as.jsf] (ServerService Thread Pool -- 44) WFLYJSF0007: Activated the following JSF Implementations: [main]
14:15:45,869 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 38) WFLYCLINF0001: Activating Infinispan subsystem.
14:15:45,909 INFO  [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.4.Final
14:15:45,961 INFO  [org.jboss.as.naming] (MSC service thread 1-2) WFLYNAM0003: Starting Naming Service
14:15:45,972 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 33) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
14:15:46,087 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-1) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
14:15:46,217 INFO  [org.wildfly.extension.io] (ServerService Thread Pool -- 37) WFLYIO001: Worker 'default' has auto-configured to 2 core threads with 16 task threads based on your 1 available processors
14:15:46,333 INFO  [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.2.Final)
14:15:46,359 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 55) WFLYUT0014: Creating file handler for path '/opt/wildfly-10.0.0.Final/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]']
14:15:46,519 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = h2
14:15:46,789 INFO  [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0481: Strict pool slsb-strict-max-pool is using a max instance size of 16 (per class), which is derived from thread worker pool sizing.
14:15:46,789 INFO  [org.jboss.as.ejb3] (MSC service thread 1-1) WFLYEJB0482: Strict pool mdb-strict-max-pool is using a max instance size of 4 (per class), which is derived from the number of CPUs on this host.
14:15:46,905 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0012: Started server default-server.
14:15:47,192 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0018: Host default-host starting
14:15:47,280 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0006: Undertow HTTP listener default listening on 172.31.29.129:8080
14:15:47,422 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/wildfly-10.0.0.Final/standalone/deployments
14:15:48,066 INFO  [org.jboss.ws.common.management] (MSC service thread 1-2) JBWS022052: Starting JBossWS 5.1.3.Final (Apache CXF 3.1.4)
14:15:48,093 INFO  [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-1) ISPN000128: Infinispan version: Infinispan 'Mahou' 8.1.0.Final
14:15:48,266 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
14:15:48,527 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://172.31.29.129:9990/management
14:15:48,543 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://172.31.29.129:9990
14:15:48,543 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started in 6225ms - Started 267 of 553 services (371 services are lazy, passive or on-demand)

$

 アプリケーションがデプロイされていない状態では、WildFlyインスタンスの起動時間は6秒弱ぐらいでした。

(7) AWSのセキュリティグループの設定追加(本番運用では不要)

 本番運用ではユーザがWildFlyのアプリに直接アクセスせず、Apache HTTP Server経由でのアクセスにする予定ですので、 この手順は不要です。ただ今回はWildFlyの勉強のために直接接続して色々試してみるためにあえて設定します。 本番運用の際には設定を外す予定です。

 EC2管理コンソールの左メニューから[セキュリティグループ]を選択後、画面右上に表示されたセキュリティグループ一覧の中から、 WildFlyをインストールしたEC2インスタンスに設定済みの[セキュリティグループ]を選択します。 画面右下に選択したセキュリティグループの情報が表示されますので、[インバウンド]タブを選択し、[編集]ボタンをクリックします。

 「インバウンドルールの編集」画面が表示されたら、[ルールの追加]ボタンをクリックします。 ルールの行が最下行に1行追加されますので、次の通り入力して、[保存]ボタンをクリックします。

項目内容
タイプカスタム TCPIP ルール
プロトコルTCP
ポート範囲8080
送信元任意の場所 0.0.0.0/0

 セキュリティグループの一覧表示に戻ります。 追加したルールがインバウンドのルール一覧に表示されていることを確認します。

動作テスト

(1) プロセス確認

 WildFlyインスタンスは1つのjavaプロセスとして表示されますので、 以下のように「java -D~」で始まるプロセスが起動していることを確認します。

$ ps -ef | grep java
wildfly   9808  9764  5 14:15 pts/0    00:00:06 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/wildfly-10.0.0.Final/standalone/log/server.log -Dlogging.configuration=file:/opt/wildfly-10.0.0.Final/standalone/configuration/logging.properties -jar /opt/wildfly-10.0.0.Final/jboss-modules.jar -mp /opt/wildfly-10.0.0.Final/modules org.jboss.as.standalone -Djboss.home.dir=/opt/wildfly-10.0.0.Final -Djboss.server.base.dir=/opt/wildfly-10.0.0.Final/standalone
wildfly   9903  9689  0 14:17 pts/0    00:00:00 grep --color=auto java

(2) ブラウザからの接続確認

 PCのブラウザからWildFlyをインストールしたサーバにアクセスします。 今回利用したEC2インスタンスのパブリックIPが「54.149.159.115」とすると、デフォルトのリスニングポートは「8080」なので、 URLは「http://54.149.159.115:8080」となります。 以下のような画面が表示されれば、WildFlyのインストールと起動は成功しています。

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会


第000414号