本家様 https://www.eclipse.org/jetty/
Java Servletコンテナ
Tomcatでもいいのだが、小さくて分かり易いのでこちらを利用している.
RockyLinux8では jetty-9.4.30 をdnfからインストール可能ですが、ここでは最新版のJetty11をインストールしてみます

Java

Jetty11は本家様のページを見ると「Java 11+」の対応が必要な様子
RockyLinux8を最小構成で構築するとjava-8が既定でインストールされてる. これにjava-11を追加してみる

[root@jetty ~]# cat /etc/redhat-release
Rocky Linux release 8.7 (Green Obsidian)
 
[root@jetty ~]# getenforce
Enforcing
 
[root@jetty ~]# rpm -qa | grep "^java-"
java-1.8.0-openjdk-headless-1.8.0.352.b08-2.el8_7.x86_64
 
[root@jetty ~]# dnf install java-11
[root@jetty ~]# alternatives --config java     <-- javaの先をjava-11に付け替える
 
(確認)
[root@jetty ~]# java -version
openjdk version "11.0.18" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.10-2.el8_7) (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.10-2.el8_7) (build 11.0.18+10-LTS, mixed mode, sharing)
[root@jetty ~]#

jetty 導入

https://www.eclipse.org/jetty/download.phpから
「Release」欄の11.0.xにある「.tgz」リンクをコピーします

[root@jetty ~]# mkdir /opt/jetty
[root@jetty ~]# cd /opt/jetty/
[root@jetty jetty]# curl -O https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/11.0.13/jetty-home-11.0.13.tar.gz
[root@jetty jetty]# ls -lh
total 14M
-rw-r--r--. 1 root root 14M Feb 13 02:14 jetty-home-11.0.13.tar.gz
[root@jetty jetty]# tar xf jetty-home-11.0.13.tar.gz                   <-- /opt/jetty/jetty-home-11.0.13 が用意される

簡単な実行テストを行います. アプリ本体の場所を示す環境変数「JETTY_HOME」とjettyの動作設定フォルダを示す
環境変数「JETTY_BASE」を定義して、jettyのコマンドを使って「JETTY_BASE」の中にひな形を作るみたい.
... っが「JETTY_BASE」がうまく機能しない...なのでコマンド行内で「jetty.base=」て代用してます 単にその場所で実行してもいいのだけど

[root@jetty jetty]# export JETTY_HOME=/opt/jetty/jetty-home-11.0.13
[root@jetty jetty]# mkdir jetty-test
 
[root@jetty jetty]# java -jar $JETTY_HOME/start.jar jetty.base=/opt/jetty/jetty-test --add-module=http
[root@jetty jetty]# java -jar $JETTY_HOME/start.jar jetty.base=/opt/jetty/jetty-test --add-module=webapp
[root@jetty jetty]# java -jar $JETTY_HOME/start.jar jetty.base=/opt/jetty/jetty-test --add-module=demo-simple

テスト環境が用意できたので実際に動かしてみます

[root@jetty ~]# firewall-cmd --add-port=8080/tcp --zone=public --permanent
[root@jetty ~]# firewall-cmd --reload
 
[root@jetty ~]# java -jar /opt/jetty/jetty-home-11.0.13/start.jar jetty.base=/opt/jetty/jetty-test
 :

その後「http://jetty:8080/」にアクセスすると下記が表示され、
2023y02m13d_024334440.png
「/demo-simple」リンクをクリックすると下記になる.
2023y02m13d_024517918.png

終了は「java -jar ...」のフォアグランドをCtrl-Cで停止させる.

自動起動に向けて jettyの稼働ユーザを作成

jettyをrootではなく別のユーザで動かします
まずはアカウント作成

[root@jetty ~]# useradd -r -s /bin/false -d /opt/jetty -M jetty
[root@jetty ~]# id jetty
uid=993(jetty) gid=990(jetty) groups=990(jetty)
[root@jetty ~]#

そして/opt/jettyの所有権をjettyに渡す

[root@jetty ~]# cd /opt/
[root@jetty opt]# chown -R jetty. ./jetty/

自動起動に向けて

jettyのbinには「jetty.service」と「jetty.sh」が入っていた

[root@jetty ~]# ls -l /opt/jetty/jetty-home-11.0.13/bin/
total 20
-r--r--r--. 1 jetty jetty   340 Dec  8 05:59 jetty.service
-r-xr-xr-x. 1 jetty jetty 16049 Dec  8 05:59 jetty.sh
[root@jetty ~]#

これをそのまま使って自動起動をさせてみることに. 「jetty.sh」の中身を読むと想定している「Configuration files」の場所としては「/etc/default/jetty」「$HOME/.jettyrc」「/etc/jetty.conf」を想定している様子.
ここでは「/etc/default/jetty」を「Configuration files」設定ファイルとして扱います.
設定の項目も「jetty.sh」に記載されてます

[root@jetty ~]# cp /opt/jetty/jetty-home-11.0.13/bin/jetty.service /etc/systemd/system
[root@jetty ~]# cp /opt/jetty/jetty-home-11.0.13/bin/jetty.sh      /etc/init.d/jetty
[root@jetty ~]# vi /etc/systemd/system/jetty.service
[Unit]
Description=Jetty Web Application Server
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/run/jetty/jetty.pid
ExecStart=/etc/init.d/jetty start
ExecStop=/etc/init.d/jetty stop
ExecReload=/etc/init.d/jetty restart
User=jetty
Group=jetty
 
[Install]
WantedBy=multi-user.target
 
[root@jetty ~]# echo "d /run/jetty  755 jetty jetty" > /etc/tmpfiles.d/jetty.conf
[root@jetty ~]# /usr/bin/systemd-tmpfiles --create /etc/tmpfiles.d/jetty.conf
 
(設定ファイル)
[root@jetty ~]# vi /etc/default/jetty
JETTY_HOME=/opt/jetty/jetty-home-11.0.13
JETTY_USER=jetty
JETTY_ARGS=jetty.http.port=8080
JETTY_RUN=/run/jetty/
JETTY_SHELL=/bin/bash
 
JETTY_BASE=/opt/jetty/jetty-test
 
[root@jetty ~]#

っで起動

[root@jetty ~]# systemctl daemon-reload
[root@jetty ~]# systemctl enable jetty --now

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2023-02-13 (月) 05:19:47 (116d)