目的
APM製品の検証のためにOSだけではなくてJavaのプロセスも動かした状態を作りたいと思ったので、
OpenlibertyをRHEL上で動かすことに挑戦してみました。
環境
今回は、Techzone( https://techzone.ibm.com/environments )で3日間使えるRHELの仮想サーバを借用しました。
とりあえず導入手順の確立だけ行いたかったので、短期間使えるTechzoneのサーバで十分検証ができました。
導入手順
Openlibertyモジュール取得
以下のサイトにアクセスします。
https://openliberty.io/start/
JavaSEのバージョンを8,11,17が選択できるため、この中では最も新しい17を選択し、
”GenerateProject”をクリックして、アプリケーションをダウンロードします。
ダウンロードしたファイル名はデフォルトだとapp-name.zipとなります。
Mavenモジュール取得
以下のサイトにアクセスします。
https://maven.apache.org/download.cgi
現在はの最新版は以下バージョンのモジュールとなりますので、これをダウンロードしました。
apache-maven-3.9.1-bin.tar.gz
OS最新化
仮想サーバにログインし、rootにスイッチしてOSを更新します。
# yum update
unzipインストール
unzipをインストールします。
# yum install unzip
javaインストール
導入可能なjava一覧を表示します。
# yum list | grep java
・・・
java-1.8.0-openjdk-accessibility.x86_64 1:1.8.0.362.b09-2.el8_7
java-1.8.0-openjdk-demo.x86_64 1:1.8.0.362.b09-2.el8_7
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.362.b09-2.el8_7
java-1.8.0-openjdk-javadoc.noarch 1:1.8.0.362.b09-2.el8_7
java-1.8.0-openjdk-javadoc-zip.noarch 1:1.8.0.362.b09-2.el8_7
java-1.8.0-openjdk-src.x86_64 1:1.8.0.362.b09-2.el8_7
・・・
java-17-openjdk.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-demo.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-devel.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-headless.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-javadoc.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-javadoc-zip.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-jmods.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-src.x86_64 1:17.0.6.0.10-3.el8_7
java-17-openjdk-static-libs.x86_64 1:17.0.6.0.10-3.el8_7
・・・
この中からOpenlibertyに合わせてJava17を選択して、インストールします。
# yum install java-17-openjdk java-17-openjdk-devel
この時、yum istall java
としてしまうと、最新の1.8.0が入ってしまうので、
きちんとバージョンを指定して導入してください。
モジュール転送
以下のように作業用ディレクトリを作成します。
# mkdir /work
# chmod 777 /work
ここにteratermの”SSH SCP”やWinscpを使ってOpenlibertyとMavenモジュールを転送します。
Maven配置
Mavenモジュールを展開して、/optに配置します。
# cd /work
# tar zxvf apache-maven-3.9.1-bin.tar.gz
# cd /opt
# mv /work/apache-maven-3.9.1 .
# ln -s apache-maven-3.9.1 maven
グループ・ユーザ作成
デフォルトユーザでもいいのですが、アプリ実行用のユーザを作成します。
# groupadd -g 2000 aplgrp
# useradd -g aplgrp -u 2000 apluser
# cat /etc/passwd |grep apluser
apluser:x:2000:2000::/home/apluser:/bin/bash
作成したユーザはプロファイルを修正してMVNのパスを追加します。
su - apluser
vi .bash_profile
最終行に以下を追加
export PATH=$PATH:/opt/maven/bin
修正後はexit で抜けて、再度 apluserにスイッチします。
Openliberty配置
apluserのホームディレクトリ上にOpenlibertyのモジュールを展開します。
$ mkdir app-name
$ cd app-name
$ unzip /work/app-name.zip
server.xml修正
デフォルトではlocalhostでしかログインできないので、どのインターフェース経由でも接続できるように以下サイトを参考にserver.xmlを編集します。
https://qiita.com/rinaxsumomo/items/e5f2f34c54890f767182
$ vi src/main/liberty/config/server.xml
<httpEndpoint id="defaultHttpEndpoint"
httpPort="9080"
httpsPort="9443" />
↓
<httpEndpoint id="defaultHttpEndpoint"
host="*"
httpPort="9080"
httpsPort="9443" />
プロセス起動
以下コマンドでプロセスを起動します。
$ cd ~/app-name
$ mvn liberty:run
このコマンドで起動するとフォアグラウンド実行となります。
別のターミナルを開くと、以下のようなプロセスが起動しているはずです。
$ ps -ef |grep java
apluser 32648 32619 5 04:16 pts/0 00:00:52 /usr/bin/java -classpath ・・・ liberty:run
apluser 32825 32648 3 04:17 pts/0 00:00:29 /usr/lib/jvm/java-17-openjdk-17.0.7.0.7-1.el8_7.x86_64/bin/java ・・・ defaultServer
バックグラウンド実行・停止したい場合は以下となります。
起動:$ mvn liberty:start
停止:$ mvn liberty:stop
この場合、liberty:run のプロセスは出てきません。
稼働確認
プロセスの確認だけだと物足りないので、以下コマンドでアクセスしてみました。
$ curl http://localhost:9080/health
{"checks":[],"status":"UP"}$
ちゃんとUPというStatusが返ってきました。
感想
当初はJavaを最新を入れておけばいいだろうと軽く考えていて、Java1.8.0をインストールしていたために、
Openlibertyのプロセスが起動できず、詰まってしまっていました。
そこを乗り越えれば、特に詰まることもなく簡単に30分程度で導入することができました。