EAP7のインストールとパッチ適用

仕事でredhat社のEnterprise Application Server7(EAP7)を扱うことが多いので備忘録として記載します。

なお、このサイトでWebアプリを公開したいと考えていますが、EAP7は実運用環境で使うためにはライセンス購入が必要になると思うのでWildflyを使おうと思います。
Red Hat Developer Program Benefits

概要

現時点で最新版であるEAP7.1.3を構築するまでの手順を記載する。
大枠の手順として、まずEAP7.1.0をインストールし、7.1.1/7.1.2/7.1.3パッチを適用していく。
構築するEAP7サーバの設定方針は次の通り。

  • EAP7.1.0のインストール方法としてインストーラを使う方法と、zipファイルを解凍する方法がある。サーバ構築で意図しない設定がされる可能性があるので、自身で設定を行うzip版を使う。
  • EAP7を実行するためにJDKが必要である。Oracle JDKまたはOpen JDKを選択できるが、ここではOpen JDK(1.8)を使用する。
  • インストール先ディレクトリは、次の理由で/opt/jboss-eap-7.1とする。
    • Filesystem Hierarchy Standardではアプリのインストール先は/opt。RPM版の既定のインストール先は/opt/rh/eap7/root/usr/share/wildfly/であることもあり、/opt配下に配置するものとする。
    • インストーラではEAP-7.1.0という名前でインストールするようだが、zip版を解凍した際に作成されるjboss-eap-7.1の方が分かりやすい。あと、パッチを適用すると実際のバージョンは7.1.1, 7.1.2等のようになるので、7.1.0というディレクトリだと誤解を招くので、jboss-eap-7.1が良い。
    • /opt/rh/eap7/root/usr/share/wildfly/だとちょと長い…上記を踏まえ切りよく、/opt/jboss-eap-7.1とする。
  • EAP7では複数のインスタンスを纏めて管理するためのdomainモードと、インスタンス毎の管理となるstandaloneモードがある。今回はdomainモードの必要性がないのでstandaloneモードを使用する。
  • EAP7への侵入時のリスクを低減するために、サービス実行用の一般ユーザ(jboss)を使用する。
  • EAP7の関連のファイルは可能な限り/opt/jboss-eap-7.1に纏める。設定ファイルは、”/etc/default/jboss-eap.conf”ではなく、”/opt/jboss-eap-7.1/bin/init.d/jboss-eap.conf”とする。

手順を実施する上での前提条件は次の通り。

  1. 手順の検証はCentOS7で行った。
  2. 後述のファイルダウンロードや資料参照のために、Redhatアカウント(少なくともRed Hat Developer Program, Red Hat Customer Portal, OpenShift Online等のいずれか)の登録が必要である。
  3. 7.1.1/7.1.2/7.1.3パッチは一般には公開されておらず、カスタマーポータルでEAP7のサブスクリプションを登録したユーザがダウンロードできる。今回は、評価版のEAP7のサブスクリプションを使ってパッチをダウンロードした。なお、評価版の期限は90日であるが、90日を過ぎてもカスタマーポータルから参照できなくなるだけで、実働に影響はない。

その他、参考にした情報は次の通り。

構築手順

パッケージとパッチのダウンロード

EAP7本体のダウンロード:
redhat developerのページからダウンロードします。

  1. redhat developerページを開く。
    Red Hat Developer

    A modular, cloud-ready, Jakarta EE 10 compliant platform wit…

  2. “Zip File”(右下)のリンクをクリックするとダウンロードが開始される。
    (Redhatアカウントでログインしていないとログイン画面が表示されるのでログインしてください。)

EAP7のパッチのダウンロード:
redhatのカスタマーポータルからダウンロードします。
パッチはEAP7のサブスクリプション(使用権)を登録した人しかダウンロードできません。
購入した人しか利用できないようにも思えますが、実際には評価版の申請者も利用できるので、ここでは後者の方法でダウンロードします。

  1. カスタマーポータルページを開く。
    Red Hat Customer Portal

    Access Red Hat’s knowledge, guidance, and support through yo…

  2. 画面下の”Downloads”をクリックする。
  3. JBOSS DEVELOPMENT AND MANAGEMENT欄の”Red Hat JBoss Enterprise Application Platform”行の”Request an Evaluation”をクリックする。
  4. 評価版の説明ページが開くので”Continue”をクリックする。
    (Redhatアカウントでログインしていないとログイン画面が表示されるのでログインしてください。)
  5. ダウンロードページが開くので、”Patches”をクリックし、Update 03, 02, 01をダウンロードする。

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

前提となるソフトウェアはインストールガイドの”JBoss EAP Installation Prerequisites”を参照のこと。本来であれば詳細な条件の確認は必要だが、実行に必要なソフトウェアとしては、Java JDKのみ。
yumでopenjdk, openjdk-develをインストールします。
OracleのJDKは、javac等の開発ツールと実行環境(jre)を含んでいるが、openjdkはjreしか含んでいないので、追加でopenjdk-develをインストールします。
もしunzipコマンドがない場合は同様にyum install unzipします。

EAP7のインストール

  1. 上記でダウンロードしたファイルを任意のディレクトリに配置する。
    以降では~root/work直下に配置する前提で手順を記載する。
  2. eapパッケージを展開
  3. 基本的な設定
    /opt/jboss-eap-7.1/bin/init.d/に起動用のスクリプトや設定ファイルが存在する。
    jboss-eap-rhel.shが起動スクリプトで、このスクリプトから設定ファイルjboss-eap.confを参照する設計になっている。そのため、環境依存の設定は基本的にはjboss-eap.confに定義する。
    jboss-eap.confの設定内容は次の通り。
    JAVA_HOMEの指定に関して、alternativesから動的に取得できるが、サーバ用途の場合は安易に変更できてはいけないものなので、固定で指定した。既定ではサービス開始・終了の待機時間が60秒になっているが、デプロイするアプリによって開始/終了時間が変わるので最大で600秒(10分)待機するようにする。
  4. 起動スクリプトの訂正
    jboss-eap-rhel.shは、既定では/etc/default/jboss-eap.conf”を参照するので訂正する。
    (rootの.bashrcでJBOSS_CONFを宣言する方法も考えられる。なお、弊害として、パッチ適用時に競合が発生してしまうが、それは手動で対応する。)

  5. 実行ユーザjbossの作成と権限変更
    ホームディレクトリはEAP7のディレクトリとする。
    セキュリティを高めるために、ログインできないシェル(/sbin/nologin)を指定する。
    同様の理由でパスワードを指定しない。(指定しないとロックされた状態になるがrootからsuは可。)
  6. 単体での実行確認
    サービス化する前にjboss-eap-rhel.shコマンド単体で正常に起動できるか確認する。
    コマンド実行終了後、console.logで「開始しました」が出力されていることを確認する。
    正常に開始できていない場合、コマンドが終了しないのでCtrl+c等で中断し、console.logを確認し問題を解決する。

  7. systemdサービスとして登録する。
    前提に記載した資料をカスタマイズして、sysmtedのファイルを作成し、動作確認や起動時の有効サービスとして登録する。起動や停止の正常性は、上記同様にconsole.logを確認する。

パッチの適用

jboss-cliを使ってパッチを適用する。
パッチ適用時は、EAP7を起動しておく必要がある。

7.1.1パッチ(jboss-eap-7.1.1-patch.zip)の適用:
独自に編集しているファイルがパッチ適用対象の場合、競合が発生する。
上書き(–override-all)するか保持するか(–preserve)を選択できるが、どちらも懸念があるので、一旦上書きしてから手動でマージする。

残りの7.1.2, 7.1.3パッチの適用
同様に残りのパッチを適用する。