前記事に続いて「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
<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
のように入力し「配備」する。
http://サーバーのIP:8080/gsession/
のようにアプリを開く。
余談
GroupSession の 公式に倣って、わざわざ AdoptOpenJDK を使って動かしていますが、
実は AdoptOpenJDK を使わなくても apt から普通に openjdk11 をインストールすれば動く説。
別に Java に詳しくなく、動作検証もしてないけど、何となく動いてたよ。という報告。
両方インストールして openjdk11 で動かしてみて、問題があれば
JAVA_HOME=/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64
を変えればいいだけですかね。