ゆっきーのブログ

実践的なシステム設計開発、アプリケーションフレームワーク開発、トラブルシューティング、 後輩育成のためのブログ。その他、キャンプ、トレッキング・登山やレジャー等。

1. システムエンジニアリング Linux

Wildfly11のインストール

投稿日:2018年7月16日 更新日:


このサイトでWebアプリを公開したい。
仕事ではJBoss Enterprise Application Server(JBoss EAP)を使う機会が多いのでそれを使いたいがライセンス料がかかる。無償かつ、EAPと同様の機能を持っているWildflyを使用する。

概要

  • セキュリティや柔軟性・機能性を踏まえて、フロントにapacheを配置し、そのバックエンドにwildflyを配置する構成とする。そのため、wildflyでバインドするインターフェイスは127.0.0.1(lo)とし、外部から直接wildflyを参照できないようにする。apache側では所定のコンテキスト名を含むhttp要求をwildfly側に転送するように設定する。
  • wildflyのsysmtedサービス化に関しては、wildfly付属のdocs/contrib/scripts/systemd/にあるsystemd用ファイル群を使用する。これらのファイルを使った設定方法は、READMEの記載内容に沿う。
  • READMEの手順通りに実行してもsystemctl startができない。確認してみた所、/opt/wildfly-12.0.0.Finalディレクトリのオーナがwildflyに変更されていなかったので、このディレクトリに対してもchownする手順を追加した。
  • CentOS7, Apache2.4, Wildfly11を使用する。

構築手順

前提ソフトウェアのインストール

JDK(openjdk, openjdk-devel)をインストールする。

# yum install java
...
Installing:
 java-1.8.0-openjdk                           x86_64                  ...
...
# yum install java-1.8.0-openjdk-devel
...
# java -version
openjdk version "1.8.0_xxx"
...
# javac -version
javac 1.8.0_xxx
# alternatives --list
...
java_sdk_1.8.0  auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0....
...

Wildflyのインストール

Wildfly付属のREADMEに沿ってWildflyをsystemdのサービスとして登録する。
ローカルからしかアクセスできないので、curlを使って動作確認する。

# useradd -r -d /opt/wildfly -s /sbin/nologin wildfly

# cd /opt/
# unzip ~/work/wildfly-11.0.0.Final.zip
# ln -s /opt/wildfly-11.0.0.Final /opt/wildfly

# cd /opt/wildfly/docs/contrib/scripts/systemd/
# mkdir /etc/wildfly
# cp wildfly.conf /etc/wildfly
# cp wildfly.service /etc/systemd/system/
# cp launch.sh /opt/wildfly/bin/

# cd /opt/wildfly/bin
# cp standalone.conf standalone.conf.org
# vi standalone.conf
...
#
# Specify the location of the Java home directory.  If set then $JAVA will
# be defined to $JAVA_HOME/bin/java, else $JAVA will be "java".
#
#JAVA_HOME="/opt/java/jdk"
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-xxx"
...
# cd /opt/wildfly/standalone/configuration
# cp -p standalone.xml standalone.xml.org
# vi standalone.xml    ※下記のajp-listenerの行を追加
...
        <subsystem xmlns="urn:jboss:domain:undertow:4.0">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
                <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
                <ajp-listener name="ajp" socket-binding="ajp" />
                <host name="default-host" alias="localhost">
...
# cd /etc/wildfly
# vi wildfly.conf
...
# The address to bind to
#WILDFLY_BIND=0.0.0.0
WILDFLY_BIND=127.0.0.1
...

# chown -R wildfly.wildfly /opt/wildfly
# chown -R wildfly.wildfly /opt/wildfly-11.0.0.Final

# systemctl start wildfly.service
# systemctl status wildfly.service
# systemctl enable wildfly.service
Created symlink from /etc/systemd/system/multi-user.target.wants/wildfly.service to /etc/systemd/system/wildfly.service.

# curl http://localhost:8080    ←動作確認(下記はwildflyのウェルカムページ)
<!--
  ~ JBoss, Home of Professional Open Source.
  ~ Copyright (c) 2014, Red Hat, Inc., and individual contributors
  ~ as indicated by the @author tags. See the copyright.txt file in the
  ~ distribution for a full listing of individual contributors.
  ~
...

Apacheの設定変更

特定のURL(/app)をwildflyに転送するように設定する。
これを行うためにはapacheのmod_proxy, mod_proxy_ajpを使用する。
wildfly側には、”/app”に対応するアプリを後でデプロイする想定で設定します。
(注意)localsite.confというファイルは、サイト固有の設定をするために私が独自に作成したファイルです。実際にはhttpd.conf等の読者さんの環境に合わせた設定ファイルを編集してください。

# cd /etc/httpd/conf.d/
# vi localsite.conf    ※下記を追加
...
<Location /web-utils/>
    ProxyPass ajp://localhost:8009/app/
</Location>
...
# systemctl restart httpd.service
# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded ...
   Active: active (running) ...
...

動作確認

wildflyにサンプルのアプリ(war)をデプロイし、apache経由で参照できるか確認します。
サンプルアプリapp.warが~root/workに配置した前提で手順を記載します。

CLIを使ってアプリをデプロイします。
tail等を使ってログを確認し、正常にデプロイされた(“Deployed”が表示されている)ことを確認します。

# cd /opt/wildfly/bin/
# ./jboss-cli.sh --connect "deploy --force ~root/work/app.war"
# tail /opt/wildfly/standalone/log/server.log
...
INFO  [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0010: Deployed "app.war" (runtime-name : "app.war")
...

-1. システムエンジニアリング, Linux
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

区分データ生成ツール

区分定義書の変更時、定数や列挙体、マスタの一部を手動で修正するような運用だと、抜け漏れや間違いが発生する場合があります。この辺の手間や間違いを低減するために、区分定義書から自動的に成果物を作成するEx …

DB操作フレームワーク はJPA or mybatis?

開発に向けた準備で、開発標準を準備するフレームワーク(FW)チーム、それらを使って実装を行う業務チームが集まって、「DB操作を行うためのFWは何を使うか?」という協議になった。 FWチームは、FW・J …

postgresqlでの拡張のインストール

PostgreSQL10で暗号化関数を使用するため拡張(pgcrypto)をインストールした際の出来事を記載します。 事象 pgcryptoの拡張をインストールしたり、インストールの確認を行うと、その …

SLF4Jの仕組みと使用方法

何気に使用しているSLF4Jの仕様やその仕組みを整理したいと思います。 前提 元ネタは次のSLF4J Manualサイトです。  www.slf4j.org  1 sha …

パスワード情報の保管方式の比較

Webアプリの開発でパスワードを使ったユーザ認証を設計・実装する機会がよくある。 後輩への説明や勉強会ネタとして、この辺の話を纏めてみようと思う。 概要 オンラインバンキングやネットショッピングのサイ …