WildFly 運用のための覚え書き

もうあまり使うことはないかもしれないが、Java のアプリケーションサーバ WildFly の運用のための覚え書き。

同一物理マシンに複数の WildFly を設置するのは可能か?

レガシーなプロジェクトで、JavaEE ウェブアプリと JakartaEE ウェブアプリが混在するような場合、少なくとも2台のWildFly が必要になる。27 以降の WildFly と 27 より前のバージョンがそれぞれ少なくとも一つは必要。

結論から言うとできる。

ただ、ポートがかち合わないように設定ファイルを変える。
ワイの場合は、各ポート番号に 10000 を足す。

standalone-full.xml
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="ajp" port="${jboss.ajp.port:18009}"/>
        <socket-binding name="http" port="${jboss.http.port:18080}"/>
        <socket-binding name="https" port="${jboss.https.port:18443}"/>
        <socket-binding name="iiop" interface="unsecure" port="13528"/>
        <socket-binding name="iiop-ssl" interface="unsecure" port="13529"/>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:19990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:19993}"/>
        <socket-binding name="txn-recovery-environment" port="14712"/>
        <socket-binding name="txn-status-manager" port="14713"/>
        <outbound-socket-binding name="mail-smtp">
           <remote-destination host="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:10025}"/>
        </outbound-socket-binding>
        <outbound-socket-binding name="messaging-activemq">
            <remote-destination host="${jboss.messaging.connector.host:localhost}" port="${jboss.messaging.connector.port:51616}"/>
        </outbound-socket-binding>
    </socket-binding-group>

ただし、このやり方だと activemq は 71616 となり

A maximum value of 65535 is required

と WildFly に怒られるので、10000 を引く。

こうしておくと以下のように管理画面も同時に表示できる。

めでたしめでたし。

WildFly をサービス化する

JBOSS_HOME の docs 以下のフォルダに各種サンプルファイルがあるので、これをうまく活用する。
Ubuntu の場合は、以下のようにそのまま使える。

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

この作業が終わった後、初回起動は

sudo systemctl enable --now wildfly

というコマンドで。

jboss-cli.sh による deploy

なお、サービスが走っている場合のデプロイは jboss-cli.sh を走らせ、そこから

deploy PathTo/hoge.war

で投入できる。

バックグランドで起動させる

Java の慣習でしょうか & を付ける。

standalone.sh -c stanalone-full.xml &

Ctrl+C でメッセージを終了させてもプロセスは終わってない模様。

コマンドラインから停止

バックグランドで走らせた状態では Ctrl+C では停止できないので以下のコマンドを使う。

jboss-cli.sh --connect command=shutdown

 

(適宜修正予定)

Ubuntu を upgrade する

Ubuntu をアップデートする。

クリーンインストールではなく、既存 Ubuntu マシンの OS のアップグレードの話。

まずはローカルマシンで

この記事を参考にした。
ところで apt と apt-get の違いの説明がわかりやすい。
パイプなどを使わないのであれば apt 使っとけ!ってことらしいです。

基本的には

sudo do-release-upgrade

というコマンドでいいらしいのだが、放置していた場合は apt update -> apt upgrade が必要ということらしいです。

ところで wordpress を使っていると場合によっては、mariaDB の apt で引っ張ってくる dev のサイト URL が古いままになっているする場合があるようだ。
/etc/apt/sources.list.d/maridb.list もしくは /etc/apt/sources/list あたりをチェックしましょう。
おそらくインストール時に参考にした初心者向けの記事の情報が古くなっているんでしょう。

現在(2024/3)だと、MariaDB 公式のこちらのページの以下のURLが正しいようです。

deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.X/ubuntu bionic main

さくら VPS の Ubuntu をアップグレードする

さくらインターネットのケースがこちらに記載されています。

よく

・SSH ではなくコントロールパネル→コンソールを使え

と言われている。
アップグレード途上で ssh 接続できなくなる可能性があるため、そうしているようなのだが、mac だと VNC との相性が悪く、一回でアップグレードが通るとは思えない。
だから、ある程度の作業(最後の再起動までは悪さするとは思えない)は ローカル Mac マシンの ssh でやった方がいいでしょう。
なんなら、最後の再起動も ssh 接続で行っても問題ないと思う(以下でやった時は、何も問題起こらなかった)

18 → 20 アップグレード

18 でしばらく放置していたため時間はかかったが、これはできた。途中で上のような表示が出るが、適当に答える。
最終的に以下のように表示され、指示に従って再起動すれば完了です。

お疲れ様でした。

20 → 22 アップグレード

apt update, apt upgrade は問題なくできたのだが、なぜか do-release-upgrade の最終局面で中断されてしまう。

「アップグレード作業を見積もれません 」というメッセージが表示されて巻き戻ってしまう。

なんでだ?

ログを眺める。

2024-03-09 13:15:45,131 DEBUG The package 'postgresql-plperl-10' is marked for removal but it's in the removal deny list
2024-03-09 13:15:45,134 ERROR Dist-upgrade failed: 'The package 'postgresql-plperl-10' is marked for removal but it is in the removal deny list.'

そもそも postgresql 関係はインストールした記憶はないんだが?

sudo apt-get remove postgresql-* 

で、根こそぎ削除。

これで、先に進んだ。

最終的に再起動。

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

無事、アップグレードできましたとさ。

(適宜情報追加)

WildFly の導入時にすること

X などで「わかっているのだが、覚えるには至っておらず、何度も調べてしまうこと」が度々話題になる。

vi の操作方法とかさ。

ワイの場合は WildFly の初期設定もそのうちの一つ。

一体、何度、調べただろう?

いい加減、あちこち調べるのが嫌になってきたので、忘備録的なまとめ。

管理ユーザーの設定

まずは、管理ユーザーを作成するのがいいだろう。
管理ユーザーなしでも WildFly 自体は起動できるのだが、コンソール画面に入れないので、まず、これをやる。

Linux/Mac などでは bin フォルダ内の add-user.sh を実行。Windows では add-user.bat 。

ほとんどの場合、既存プロジェクトの WildFly のバージョンアップデートに伴う移行だと思うので、管理ユーザー名も同一にしておくと迷わなくてすむ。

ただし、この手の作業が面倒に感じる理由の一つとして、「パスワードの設定方法が変わってしまう」というのもあるだろう。
今回、作業した WildFly27 では、以下のように non-alphanumeric symbol が必要とされた。

The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)

以前のように「12345678」ではダメである。英数字以外の記号を一つ含める必要がある。

他は、y と答えておいて困ることはない。

モジュールのインストール

デバイスドライバなどをインストールする。

PostgreSQL のドライバをインストールする場合には、以下のようにする。
(ドライバはここから取ってくる)

WildFly 自体を起動した状態で jboss-cli.sh を実行

You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /]

というメッセージが現れるので、connect と打ち込む。

その後

module add --name=org.postgresql --resources=(パス)\postgresql-(バージョン).jar --dependencies=javax.api,jakarta.transaction.api
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name="postgresql",driver-module-name="org.postgresql",driver-class-name="org.postgresql.Driver")

とタイプ。

上のように success が返ってくればOKです。

なお dependencies=javax.api, jakarta.transaction.api となっている点に注意。
いわゆる JavaEE -> JakartaEE 移行に伴う名前空間の変更の影響を受けています。

その他

思いつくままに。

コマンドラインでの終了のさせ方

これも何度検索かけただろう?

jboss-cli.sh --connect --command=":shutdown"

だそうです。

 

(適宜情報追加予定)

MS Windows11

もっぱら Mac で諸々の作業をするせいか Windows マシンは埃かぶってたが、WSL あたりがガジェット的に面白くなってきたようなので、触ってみるか。