Jetty は、Elastic Compute Service (ECS) インスタンス上で Java Web アプリケーションを実行するための、軽量なオープンソースのサーブレットコンテナです。Apache Tomcat と比較して、Jetty は軽量なアプリケーション、高同時実行数のシナリオ、分散環境により適しています。このガイドでは、Linux または Windows に Jetty 12 をインストールし、デプロイメントを検証する方法について説明します。
前提条件
開始する前に、以下の準備が整っていることを確認してください。
ECS インスタンスにパブリック IP アドレス (静的なシステム割り当て) または関連付けられた Elastic IP アドレス (EIP) があること。詳細については、「EIP」をご参照ください。
ポート 22 (SSH)、3389 (RDP)、および 8080 (Jetty) でのインバウンドトラフィックを許可するセキュリティグループルールが設定されていること。詳細については、「セキュリティグループルールの追加」をご参照ください。
インスタンスに Java 環境がデプロイされていること。詳細については、「Java 環境のデプロイ」をご参照ください。
Linux
この手順では、Jetty 12.0.16 をインストールします。異なるバージョンを使用する場合は、コマンド内のバージョン番号とディレクトリパスを置き換えてください。
クイックスタート
Jetty に精通している場合は、次のコマンドを実行して、動作するサーバーを構築できます。
# Jetty のダウンロードと展開
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/12.0.16/jetty-home-12.0.16.tar.gz --no-check-certificate
tar -zxvf jetty-home-12.0.16.tar.gz
sudo mv jetty-home-12.0.16 /usr/local/jetty/
# jetty-base ディレクトリの作成と環境変数の設定
sudo mkdir /usr/local/jetty-base
echo 'export JETTY_HOME=/usr/local/jetty' >> ~/.bashrc
echo 'export JETTY_BASE=/usr/local/jetty-base' >> ~/.bashrc
source ~/.bashrc
# jetty-base の初期化と Jetty の起動
cd /usr/local/jetty-base
sudo java -jar $JETTY_HOME/start.jar --add-module=server,http,deploy
sudo java -jar $JETTY_HOME/start.jar --add-module=demos
nohup sudo java -jar $JETTY_HOME/start.jar &その後、ブラウザで http://<ECS のパブリック IP アドレス>:8080 を開きます。Jetty のテストページが表示されたら、デプロイメントは完了です。
説明付きの詳細な手順については、次のセクションに進んでください。
操作手順
Linux インスタンスに接続します。詳細については、「ワークベンチを使用して SSH 経由で Linux インスタンスに接続」をご参照ください。
Jetty のインストールパッケージをダウンロードして展開します。
重要ダウンロード URL が有効でなくなった場合、または異なるバージョンの Jetty が必要な場合は、Jetty の公式サイトから最新の URL を取得してください。Jetty のバージョンによってサポートされる Java 開発キット (JDK) のバージョンが異なります。バージョン履歴を確認して、ご利用の JDK と互換性のあるバージョンを選択してください。
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/12.0.16/jetty-home-12.0.16.tar.gz --no-check-certificate tar -zxvf jetty-home-12.0.16.tar.gz
展開したファイルを
/usr/local/jetty/に移動します。sudo mv jetty-home-12.0.16 /usr/local/jetty/jetty-baseディレクトリを作成します。sudo mkdir /usr/local/jetty-baseJetty は
JETTY_HOME(Jetty のディストリビューション) とJETTY_BASE(サーバーの構成と Web アプリ) の 2 つのディレクトリを使用します。これらを分離することで、構成に触れることなく Jetty をアップグレードできます。JETTY_HOMEとJETTY_BASEの環境変数を設定します。~/.bashrcを編集用に開きます。sudo vim ~/.bashrcIキーを押して挿入モードに入ります。次の行を追加します。export JETTY_HOME=/usr/local/jetty export JETTY_BASE=/usr/local/jetty-baseEscキーを押し、:wqと入力してEnterキーを押し、ファイルを保存して閉じます。変更を適用します。
source ~/.bashrc
jetty-baseディレクトリを初期化します。jetty-baseディレクトリに移動します。cd /usr/local/jetty-base必要なモジュールでディレクトリを初期化します。
説明利用可能なすべての Jetty モジュールをリスト表示するには、
java -jar $JETTY_HOME/start.jar --list-modules=*を実行します。Jetty 9 を使用する場合は、--add-moduleを--add-to-startに置き換えてください。sudo java -jar $JETTY_HOME/start.jar --add-module=server,http,deployコマンドが実行されると、
$JETTY_BASE/start.d/ディレクトリと、サーバー構成情報を含む他のディレクトリが作成されます。
サンプルアプリケーションをデプロイし、Jetty を起動します。
Jetty のサンプル Web アプリケーションをデプロイします。
説明Jetty 10 または 11 の場合は、
demosをdemoに置き換えます。Jetty 9 の場合は、代わりにsudo mv $JETTY_HOME/demo-base/webapps/ROOT $JETTY_BASE/webappsを実行します。独自の WAR ファイルでテストするには、$JETTY_BASE/webappsにアップロードします。詳細については、「ファイルのアップロードまたはダウンロード」をご参照ください。sudo java -jar $JETTY_HOME/start.jar --add-module=demosJetty を起動します。
説明Jetty はデフォルトでポート 8080 をリッスンします。ポート 8080 がすでに使用中かどうかを確認するには、
sudo netstat -tunlp | grep 8080を実行します。別のポート (例:8081) で Jetty を起動するには、nohup sudo java -jar $JETTY_HOME/start.jar jetty.http.port=8081 &を実行します。nohup sudo java -jar $JETTY_HOME/start.jar &
重要jetty-baseディレクトリから次のコマンドを実行してください。デプロイメントを検証します。
Jetty が実行中であることを確認します。
ps aux | grep jettyJetty が正常に起動した場合、出力には
start.jarを含む Java プロセスが含まれます。ローカルマシンのブラウザで
http://<ECS のパブリック IP アドレス>:8080を開きます。Jetty のテストページが表示されたら、Java Web 環境のデプロイは成功です。説明ポートを変更した場合は、
8080をご自身のポート番号に置き換え、セキュリティグループがそのポートでのインバウンドトラフィックを許可していることを確認してください。詳細については、「セキュリティグループルールの追加」をご参照ください。独自の WAR ファイルをデプロイした場合は、http://<ECS のパブリック IP アドレス>:8080/<パッケージ名>にアクセスしてアクセスを確認してください。
Windows
この手順は、Jetty 10、11、および 12 のみに適用されます。
この手順では、Jetty 12.0.16 をインストールします。異なるバージョンを使用する場合は、手順内のバージョン番号とディレクトリパスを置き換えてください。
Windows インスタンスに接続します。詳細については、「ワークベンチを使用して RDP 経由で Windows インスタンスに接続」をご参照ください。
Jetty の公式サイトから Jetty のインストールパッケージをダウンロードします。Jetty のバージョンによってサポートされる JDK のバージョンが異なります。ダウンロードする前に、バージョンの互換性テーブルを確認してください。


ダウンロードしたパッケージをインストールディレクトリに展開します。この例では、パッケージは
C:\downloadに展開されます。重要スペースを含まないパスに展開してください。
JETTY_HOME環境変数を設定します。[この PC] を右クリックし、[プロパティ] を選択します。

[バージョン情報] ページで、一番下までスクロールし、[システムの詳細設定] をクリックします。

[環境変数] をクリックします。

[システム環境変数] セクションで、[新規] をクリックします。変数名を
JETTY_HOMEに、変数の値を Jetty のインストールパス (例:C:\download\jetty-home-12.0.16) に設定します。[OK] をクリックします。
[OK] をクリックして保存します。
jetty-baseフォルダを作成します。この例では、フォルダはC:\download\jetty-baseに作成されます。
jetty-baseフォルダを初期化します。jetty-baseフォルダに移動し、アドレスバーにcmdと入力してEnterキーを押し、コマンドプロンプトを開きます。
必要なモジュールでフォルダを初期化します。
java -jar %JETTY_HOME%/start.jar --add-module=http,server,deployコマンドが実行されると、
jetty-baseにはstart.dディレクトリと他のサーバー構成ファイルが含まれます。
サンプルアプリケーションをデプロイし、Jetty を起動します。
Jetty のサンプル Web アプリケーションをデプロイします。Jetty 10 または 11 の場合は、
demosをdemoに置き換えます。説明独自の WAR ファイルでテストするには、
<jetty-base>\webapps(例:C:\download\jetty-base\webapps) にアップロードします。詳細については、「ファイルのアップロードまたはダウンロード」をご参照ください。java -jar %JETTY_HOME%/start.jar --add-module=demosJetty を起動します。Jetty が実行中はコマンドプロンプトウィンドウを開いたままにしてください。
説明Jetty はデフォルトでポート 8080 をリッスンします。ポート 8080 が使用中かどうかを確認するには、
netstat -ano | findstr :8080を実行します。別のポート (例:8081) で起動するには、java -jar %JETTY_HOME%/start.jar jetty.http.port=8081を実行します。java -jar %JETTY_HOME%/start.jar
デプロイメントを検証します。ローカルマシンのブラウザで
http://<ECS のパブリック IP アドレス>:8080を開きます。Jetty のテストページが表示されたら、Java Web 環境のデプロイは成功です。説明ポートを変更した場合は、
8080をご自身のポート番号に置き換え、セキュリティグループがそのポートでのインバウンドトラフィックを許可していることを確認してください。詳細については、「セキュリティグループルールの追加」をご参照ください。独自の WAR ファイルをデプロイした場合は、http://<ECS のパブリック IP アドレス>:8080/<パッケージ名>にアクセスしてアクセスを確認してください。
次のステップ
Web サイトの構築:Jetty が実行された後、インスタンス上で Web サイトを構成し、そのパブリック IP アドレスにドメイン名を紐付けます。詳細については、「Web サイトの構築」をご参照ください。
アプリケーションのデプロイ:アプリケーションの WAR ファイルを
$JETTY_BASE/webapps(Linux) または<jetty-base>\webapps(Windows) にコピーします。Jetty が起動すると、アプリケーションはhttp://<ECS のパブリック IP アドレス>:8080/<パッケージ名>でアクセス可能になります。Jetty の構成詳細については、「Jetty オペレーションガイド」をご参照ください。データベースの追加:アプリケーションがデータベースを必要とする場合は、ApsaraDB RDS for MySQL インスタンスに接続するか、ECS インスタンスに直接 MySQL をデプロイします。詳細については、「データベース概要」をご参照ください。
可用性の向上:Server Load Balancer (SLB) インスタンスを使用して、複数の Jetty インスタンスにトラフィックを分散します。詳細については、「はじめに」をご参照ください。
ファイルの転送: オンプレミスのファイルをインスタンスにアップロードします。詳細については、「Linux インスタンスにファイルをアップロードまたはダウンロードする」をご参照ください。
トラブルシューティング
デプロイ後に http://<ECS のパブリック IP アドレス>:8080 にアクセスできない
最も一般的な原因は、ポートのブロックと Jetty ポートの変更の 2 つです。
ファイアウォールまたは SELinux によるブロック
Linux では、システムのファイアウォールまたは Security-Enhanced Linux (SELinux) が外部接続をブロックしていないか確認してください。必要に応じて無効にします。
SELinux:SELinux の有効化または無効化
Windows では、Windows ファイアウォールがポート 8080 をブロックしていないことを確認してください。詳細については、「Windows インスタンスのシステムファイアウォールの管理」をご参照ください。
Jetty が別のポートをリッスンしている
カスタムポートで Jetty を起動した場合は、URL をそれに合わせて更新し、セキュリティグループがそのポートでのインバウンドトラフィックを許可していることを確認してください。詳細については、「セキュリティグループルールの追加」をご参照ください。