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

作成日: 2017/04/29

OSSでLinuxサーバ構築

WildFly 10.1.0をさくらのVPS(CentOS 7.2)へインストールし、systemdで起動を管理する

トップページOSSでLinuxサーバ構築 > WildFly 10.1.0をさくらのVPS(CentOS 7.2)へインストールし、systemdで起動を管理する
このエントリーをはてなブックマークに追加

概要

 さくらインターネットが提供する「さくらのVPS」を利用して、WildFlyのインストールを行います。 これまでもWildFlyのインストール手順は公開してきましたが、今回はsystemdを利用してサービスの起動状態を管理したり、 firewalldが稼働している状態で、WildFlyへの通信許可を設定する手順を追加しました。 サーバ環境として利用するさくらのVPSは有料サービスですが、2週間無料でお試し利用できます(2017年4月29日時点)。 本格運用前に導入手順やレスポンス(性能)を試すには十分な期間なので、是非利用してみてください。

構成

想定環境

 WildFlyをインストールするサーバ環境としてさくらインターネットが提供する「さくらのVPS」を利用しました。 サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
CPU仮想2コア
メモリ1GB
ディスクSSD 30GB
ゾーン東京第2ゾーン
価格月額972円(税込)

サーバ構成

OSバージョン

CentOS 7.2.1511 x86_64

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

  • jdk-8u131-linux-x64.rpm
  • wildfly-10.1.0.Final.tar.gz

クライアント構成

OSバージョン

Windows 10 Pro 64bit

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

  • Microsoft Edge 38.14393.1066.0

サーバ構築

インストール

 WildFlyを稼働させるにはJDKが必要となります。 今回はCentOSに同梱しているOpenJDKではなく、Oracle JDKを利用します。 インストールに必要なOracle JDKのRPMパッケージとWildFlyのアーカイブをwgetでダウンロードして使用します。

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

 Oracle JDK 8u131とWildFly 10.1.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/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"
--2017-04-28 00:51:44--  http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
Resolving download.oracle.com (download.oracle.com)... 23.32.248.10, 125.56.201.178
Connecting to download.oracle.com (download.oracle.com)|23.32.248.10|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://edelivery.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm [following]
--2017-04-28 00:51:44--  https://edelivery.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
Resolving edelivery.oracle.com (edelivery.oracle.com)... 23.2.38.98, 2600:1417:27:39a::2d3e, 2600:1417:27:3bd::2d3e
Connecting to edelivery.oracle.com (edelivery.oracle.com)|23.2.38.98|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm?AuthParam=1493308425_c9f1f1aa5c37ff4229119cb5e0dab808 [following]
--2017-04-28 00:51:45--  http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm?AuthParam=1493308425_c9f1f1aa5c37ff4229119cb5e0dab808
Connecting to download.oracle.com (download.oracle.com)|23.32.248.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 169983496 (162M) [application/x-redhat-package-manager]
Saving to: 'jdk-8u131-linux-x64.rpm'

100%[==============================================================================>] 169,983,496 8.22MB/s   in 21s

2017-04-28 00:52:06 (7.63 MB/s) - 'jdk-8u131-linux-x64.rpm' saved [169983496/169983496]

# wget http://download.jboss.org/wildfly/10.1.0.Final/wildfly-10.1.0.Final.tar.gz
--2017-04-28 00:54:42--  http://download.jboss.org/wildfly/10.1.0.Final/wildfly-10.1.0.Final.tar.gz
Resolving download.jboss.org (download.jboss.org)... 69.192.184.35
Connecting to download.jboss.org (download.jboss.org)|69.192.184.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 139025162 (133M) [application/x-gzip]
Saving to: 'wildfly-10.1.0.Final.tar.gz'

100%[==============================================================================>] 139,025,162 10.9MB/s   in 13s

2017-04-28 00:54:55 (10.4 MB/s) - 'wildfly-10.1.0.Final.tar.gz' saved [139025162/139025162]

# ls -l
total 301768
-rw-r--r-- 1 root root 169983496 Mar 16 05:05 jdk-8u131-linux-x64.rpm ←Oracle JDK
-rw-r--r-- 1 root root 139025162 Aug 19  2016 wildfly-10.1.0.Final.tar.gz ←WildFly

(2) Oracle JDK 8u131のインストール

 ダウンロードしたOracle JDKのRPMパッケージをインストールします。

# rpm -ihv jdk-8u131-linux-x64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_131-2000:1.8.0_131-fcs  ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

(3) WildFly 10.1.0のインストール

 ダウンロードしたWildFlyのアーカイブを展開します。 展開先は /opt/ ディレクトリ配下とします。 WildFlyのインストールはいわゆるインストーラが実行されるものではなく、 .tar.gz形式のアーカイブを解凍するだけで終わりです。

# tar zxvf wildfly-10.1.0.Final.tar.gz -C /opt/
wildfly-10.1.0.Final/
wildfly-10.1.0.Final/.installation/
wildfly-10.1.0.Final/appclient/
wildfly-10.1.0.Final/appclient/configuration/
wildfly-10.1.0.Final/bin/
(中略)
wildfly-10.1.0.Final/welcome-content/jbosscommunity_logo_hori_white.png
wildfly-10.1.0.Final/welcome-content/noconsole.html
wildfly-10.1.0.Final/welcome-content/noredirect.html
wildfly-10.1.0.Final/welcome-content/wildfly.css
wildfly-10.1.0.Final/welcome-content/wildfly_logo.png
# ls -l /opt/
total 4
drwxr-xr-x.  2 root root    6 Mar 26  2015 rh
drwxr-xr-x  10  505  505 4096 Aug 19  2016 wildfly-10.1.0.Final

設定

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

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

# groupadd -g 10001 wildfly
# tail -n 1 /etc/group
wildfly:x:10001: ←wildflyグループが作成された

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

 OSユーザ wildfly を作成します。 UIDは 10001 とし、プライマリグループを先ほど作成した wildfly(GID:10001) とします。 GIDと同様にUIDも他の数字でも構いません。

# useradd -u 10001 -g 10001 wildfly
# tail -n 1 /etc/passwd
wildfly:x:10001:10001::/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/
# ls -l
total 4
drwxr-xr-x.  2 root root    6 Mar 26  2015 rh
drwxr-xr-x  10  505  505 4096 Aug 19  2016 wildfly-10.1.0.Final
# chown -R wildfly:wildfly wildfly-10.1.0.Final
# ls -l
total 4
drwxr-xr-x.  2 root    root       6 Mar 26  2015 rh
drwxr-xr-x  10 wildfly wildfly 4096 Aug 19  2016 wildfly-10.1.0.Final

(5) WildFlyのインストールディレクトリにシンボリックリンクを作成

 WildFlyの展開ディレクトリは、名称変更していなければ wildfly-10.1.0.Final となります。 通常アクセスする際は wildfly という名のシンボリックリンクを指定するようにしておけば、 今後新バージョンがリリースされた際に新バージョンのインストールファイルを /opt/ にインストールし、 シンボリックリンクを張り替えるだけで新バージョンに切り替えて使用することができます。

# ln -s wildfly-10.1.0.Final wildfly
# ls -l
total 4
drwxr-xr-x.  2 root    root       6 Mar 26  2015 rh
lrwxrwxrwx   1 root    root      20 Apr 28 01:05 wildfly -> wildfly-10.1.0.Final
drwxr-xr-x  10 wildfly wildfly 4096 Aug 19  2016 wildfly-10.1.0.Final

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

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

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

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

(7) WildFlyをsystemdに登録

 WildFlyのインストールファイルにはWildFlyをsystemdに登録するために 必要なファイルが準備されています。ファイルを所定の場所にコピーします。

# cd /etc/
# mkdir wildfly
# cd wildfly/
# cp -piv /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf .
'/opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf' -> './wildfly.conf'
# ls -l
total 4
-rw-r--r-- 1 wildfly wildfly 165 Aug 19  2016 wildfly.conf ←これ
# cd /etc/systemd/system/
# cp -piv /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service .
'/opt/wildfly/docs/contrib/scripts/systemd/wildfly.service' -> './wildfly.service'
# ls -l
total 12
drwxr-xr-x. 2 root    root      30 Sep 14  2016 basic.target.wants
lrwxrwxrwx. 1 root    root      41 Sep 14  2016 dbus-org.fedoraproject.FirewallD1.service -> /usr/lib/systemd/system/firewalld.service
lrwxrwxrwx. 1 root    root      46 Sep 14  2016 dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root    root      57 Sep 14  2016 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
lrwxrwxrwx. 1 root    root      37 Sep 14  2016 default.target -> /lib/systemd/system/multi-user.target
drwxr-xr-x. 2 root    root      85 Sep 14  2016 default.target.wants
drwxr-xr-x  2 root    root      31 Oct 31 16:24 getty.target.wants
drwxr-xr-x. 2 root    root    4096 Oct 31 16:24 multi-user.target.wants
drwxr-xr-x. 2 root    root      49 Sep 14  2016 sockets.target.wants
drwxr-xr-x. 2 root    root    4096 Sep 14  2016 sysinit.target.wants
drwxr-xr-x. 2 root    root      43 Sep 14  2016 system-update.target.wants
-rw-r--r--  1 wildfly wildfly  409 Aug 19  2016 wildfly.service ←これ
# cd /opt/wildfly/bin/
# cp -piv /opt/wildfly/docs/contrib/scripts/systemd/launch.sh .
'/opt/wildfly/docs/contrib/scripts/systemd/launch.sh' -> './launch.sh'
# ls -l
total 264
-rw-r--r-- 1 wildfly wildfly  2178 Aug 19  2016 add-user.bat
-rw-r--r-- 1 wildfly wildfly  2444 Aug 19  2016 add-user.properties
-rw-r--r-- 1 wildfly wildfly  1069 Aug 19  2016 add-user.ps1
-rwxr-xr-x 1 wildfly wildfly  2230 Aug 19  2016 add-user.sh
-rw-r--r-- 1 wildfly wildfly  3748 Aug 19  2016 appclient.bat
-rw-r--r-- 1 wildfly wildfly  1841 Aug 19  2016 appclient.conf
-rw-r--r-- 1 wildfly wildfly  2464 Aug 19  2016 appclient.conf.bat
-rw-r--r-- 1 wildfly wildfly  2473 Aug 19  2016 appclient.conf.ps1
-rw-r--r-- 1 wildfly wildfly  1151 Aug 19  2016 appclient.ps1
-rwxr-xr-x 1 wildfly wildfly  4467 Aug 19  2016 appclient.sh
drwxr-xr-x 2 wildfly wildfly   111 Apr 28 00:58 client
-rw-r--r-- 1 wildfly wildfly  8451 Aug 19  2016 common.ps1
-rw-r--r-- 1 wildfly wildfly  5915 Aug 19  2016 domain.bat
-rw-r--r-- 1 wildfly wildfly  2561 Aug 19  2016 domain.conf
-rw-r--r-- 1 wildfly wildfly  3331 Aug 19  2016 domain.conf.bat
-rw-r--r-- 1 wildfly wildfly  2921 Aug 19  2016 domain.conf.ps1
-rw-r--r-- 1 wildfly wildfly  3052 Aug 19  2016 domain.ps1
-rwxr-xr-x 1 wildfly wildfly 11006 Aug 19  2016 domain.sh
-rw-r--r-- 1 wildfly wildfly  1852 Aug 19  2016 jboss-cli-logging.properties
-rw-r--r-- 1 wildfly wildfly  2370 Aug 19  2016 jboss-cli.bat
-rw-r--r-- 1 wildfly wildfly   774 Aug 19  2016 jboss-cli.ps1
-rwxr-xr-x 1 wildfly wildfly  2556 Aug 19  2016 jboss-cli.sh
-rw-r--r-- 1 wildfly wildfly  1569 Aug 19  2016 jboss-cli.xml
-rw-r--r-- 1 wildfly wildfly  1664 Aug 19  2016 jconsole.bat
-rw-r--r-- 1 wildfly wildfly   863 Aug 19  2016 jconsole.ps1
-rwxr-xr-x 1 wildfly wildfly  2139 Aug 19  2016 jconsole.sh
-rw-r--r-- 1 wildfly wildfly  1936 Aug 19  2016 jdr.bat
-rw-r--r-- 1 wildfly wildfly   693 Aug 19  2016 jdr.ps1
-rwxr-xr-x 1 wildfly wildfly  1996 Aug 19  2016 jdr.sh
-rwxr-xr-x 1 wildfly wildfly   215 Aug 19  2016 launch.sh ←これ
-rw-r--r-- 1 wildfly wildfly 41828 Aug 19  2016 launcher.jar
-rw-r--r-- 1 wildfly wildfly    57 Aug 19  2016 product.conf
-rw-r--r-- 1 wildfly wildfly  8660 Aug 19  2016 standalone.bat
-rw-r--r-- 1 wildfly wildfly  2410 Aug 19  2016 standalone.conf
-rw-r--r-- 1 wildfly wildfly  2802 Aug 19  2016 standalone.conf.bat
-rw-r--r-- 1 wildfly wildfly  2694 Aug 19  2016 standalone.conf.ps1
-rw-r--r-- 1 wildfly wildfly  1587 Aug 19  2016 standalone.ps1
-rwxr-xr-x 1 wildfly wildfly 11960 Aug 19  2016 standalone.sh
-rw-r--r-- 1 wildfly wildfly  2028 Aug 19  2016 vault.bat
-rw-r--r-- 1 wildfly wildfly   709 Aug 19  2016 vault.ps1
-rwxr-xr-x 1 wildfly wildfly  2229 Aug 19  2016 vault.sh
-rw-r--r-- 1 wildfly wildfly  1555 Aug 19  2016 wsconsume.bat
-rw-r--r-- 1 wildfly wildfly   784 Aug 19  2016 wsconsume.ps1
-rwxr-xr-x 1 wildfly wildfly  2179 Aug 19  2016 wsconsume.sh
-rw-r--r-- 1 wildfly wildfly  1494 Aug 19  2016 wsprovide.bat
-rw-r--r-- 1 wildfly wildfly   787 Aug 19  2016 wsprovide.ps1
-rwxr-xr-x 1 wildfly wildfly  2001 Aug 19  2016 wsprovide.sh

(8) WildFlyの起動と自動起動設定

 systemdへの登録が終わったので、WildFlyインスタンスを起動します。 また、systemdによるWildFlyの自動起動を有効化します。

# systemctl start wildfly ←WildFlyの起動
# systemctl status wildfly
* wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2017-04-28 01:18:29 JST; 13s ago ←起動した
 Main PID: 1825 (launch.sh)
   CGroup: /system.slice/wildfly.service
           |-1825 /bin/sh /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
           |-1826 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
           `-1882 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava...

Apr 28 01:18:29 tk0-000-00000.vs.sakura.ne.jp systemd[1]: Started The WildFly Application Server.
Apr 28 01:18:29 tk0-000-00000.vs.sakura.ne.jp systemd[1]: Starting The WildFly Application Server...
# systemctl enable wildfly ←WildFlyの自動起動設定
Created symlink from /etc/systemd/system/multi-user.target.wants/wildfly.service to /etc/systemd/system/wildfly.service.
# systemctl status wildfly
* wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; enabled; vendor preset: disabled) ←自動起動が有効になった
   Active: active (running) since Fri 2017-04-28 01:18:29 JST; 57s ago
 Main PID: 1825 (launch.sh)
   CGroup: /system.slice/wildfly.service
           |-1825 /bin/sh /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
           |-1826 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
           `-1882 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava...

Apr 28 01:18:29 tk0-000-00000.vs.sakura.ne.jp systemd[1]: Started The WildFly Application Server.
Apr 28 01:18:29 tk0-000-00000.vs.sakura.ne.jp systemd[1]: Starting The WildFly Application Server...

(9) firewalldでの通信許可

 WildFlyはデフォルトでは8080/tcpポートでリスニングしていますが、 firewalldの初期状態ではこのポートに対する通信が許可されていないため、 ブラウザからアクセスしても画面が表示されません。 そこで、8080/tcpポートに対する通信を許可します。 もし、ホストベースのファイアウォール自体が不要であれば、 systemctl stop firewalld コマンドを実行してfirewalldのサービス自体を停止しても通信できるようになります。

# firewall-cmd --state
running ←firewalldは起動中
# firewall-cmd --list-all --zone=public --permanent ←設定前の確認
public (default)
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

# firewall-cmd --zone=public --add-port=8080/tcp --permanent ←8080/tcpへの通信許可設定
success
# firewall-cmd --list-all --zone=public --permanent ←設定後の確認
public (default)
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports: 8080/tcp ←8080/tcpの通信が許可された
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

#

動作テスト

(1) プロセス確認

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

# ps -ef | grep java
wildfly   1882  1826  0 Apr28 ?        00:02:10 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/standalone/log/server.log -Dlogging.configuration=file:/opt/wildfly/standalone/configuration/logging.properties -jar /opt/wildfly/jboss-modules.jar -mp /opt/wildfly/modules org.jboss.as.standalone -Djboss.home.dir=/opt/wildfly -Djboss.server.base.dir=/opt/wildfly/standalone -c standalone.xml -b 0.0.0.0
root      5044  4865  0 00:46 pts/0    00:00:00 grep --color=auto java

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

 最後にブラウザからアクセスしてWildFly標準のWelcomeページが表示されることを確認します。 WildFlyはデフォルトで8080/tcpのポートでリスニングを行っていますので、URLにポート番号を指定する必要があります。 この画面が表示されれば、WildFlyがsystemdから正常に起動され、firewalldでの通信許可も正しく設定されています。

プロフィール

らのっち

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

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


第000414号