good-arrow’s blog

https://good-arrow.net/

Tomcat9 を AdoptOpenJDK で動作させる on Ubuntu 20.04 × apt

前記事に続いて「GroupSession」を Ubuntu 20.04 LTS で動作させたときの Java の対応。
Debian/Ubuntu の Tomcat9 でのファイルアクセス権エラーについて - good-arrow’s blog

なぜこの環境と方法を選んでいるか

GroupSession 公式の手順で構築すると、root 権限で Tomcat を実行することになる。
これは現在のWEBサーバー公開の環境として非常に推奨されていない。

よりセキュアで、よりOSと親和性が高く、かつパッケージ管理が容易な手段で、
CentOS 終了やトレンドも含めて考えると、自然にこの環境を選択することになる。

GroupSession の全機能を試していないので、完全に動作するかはわかりません。
とはいえ、環境依存するなら Java で開発する意味が全く無くなるんですけど。



AdoptOpenJDK のインストール

AdoptOpenJDK 公式の apt によるインストール手順がこちら。
Installation | AdoptOpenJDK - Open source, prebuilt OpenJDK binaries
手順どおりにするだけです。

とりあえず Ubuntu の通常アップデート

sudo apt -y update
sudo apt -y upgrade
sudo apt -y update

Ubuntu の OSバージョンを確認します。

> cat /etc/os-release
(中略)
UBUNTU_CODENAME=focal      <= この「focal」を確認する

手順どおりにコマンドを実行

sudo apt install -y wget apt-transport-https gnupg
wget https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
gpg --no-default-keyring --keyring ./adoptopenjdk-keyring.gpg --import public
gpg --no-default-keyring --keyring ./adoptopenjdk-keyring.gpg --export --output adoptopenjdk-archive-keyring.gpg
rm adoptopenjdk-keyring.gpg
sudo mv adoptopenjdk-archive-keyring.gpg /usr/share/keyrings

次は長いですが、1行で入力します。OSバージョンの部分を、先程の「focal」に置き換えています。

echo "deb [signed-by=/usr/share/keyrings/adoptopenjdk-archive-keyring.gpg] https://adoptopenjdk.jfrog.io/adoptopenjdk/deb focal main" | sudo tee /etc/apt/sources.list.d/adoptopenjdk.list

引き続き手順どおりにコマンドを実行し、AdoptOpenJDK をインストールします。

sudo apt-get update
sudo apt-cache search adoptopenjdk
sudo apt-get install adoptopenjdk-11-hotspot



Tomcat9 のインストール

apt で管理ツールも含めて Tomcat9 をインストールしています。
不要な場合は、はずしてください。

sudo apt -y install tomcat9 tomcat9-admin


  • インストールされている Java を確認する
sudo update-alternatives --config java


  • Tomcat9 で使用する JDK を AdoptOpenJDK に設定します
    [sudo vi /etc/default/tomcat9]
(中略)
JAVA_HOME=/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64


  • manager-gui 用のアカウントを設定する
    [/etc/tomcat9/tomcat-user.xml]
<tomcat-users>
         ​(中略、以下追記 )
         ​<role rolename="manager-gui"/>
         ​<user username="tomcat" password="s3cret" roles="manager-gui"/>
</tomcat-users>

※ユーザー名tomcat、パスワードs3cretは必ず任意のものに変更してください。

  • Tomcat9 の再起動
sudo systemctl restart tomcat9


manager-gui からアプリを配置する 例

http://サーバーのIP:8080/manager/ を開いて

  • コンテキストパス:/gsession/
  • WARフィアルまたはディレクトリのURL:/home/username/gsession.war

のように入力し「配備」する。

f:id:harukeee:20210824225610p:plain


http://サーバーのIP:8080/gsession/ のようにアプリを開く。


余談

GroupSession の 公式に倣って、わざわざ AdoptOpenJDK を使って動かしていますが、
実は AdoptOpenJDK を使わなくても apt から普通に openjdk11 をインストールすれば動く説。
別に Java に詳しくなく、動作検証もしてないけど、何となく動いてたよ。という報告。

両方インストールして openjdk11 で動かしてみて、問題があれば

JAVA_HOME=/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64

を変えればいいだけですかね。