ECS インスタンスに Jetty をインストールおよび設定し、軽量サーブレットコンテナーで Java Web アプリケーションをホストします。
前提条件
お使いの ECS インスタンスは、次の条件を満たしている必要があります。
-
インスタンスには、静的パブリック IP アドレスまたは Elastic IP アドレス (EIP) があります。
-
セキュリティグループは、ポート 22、3389、8080 など、リモート接続および Jetty のポートでのインバウンドアクセスを許可する必要があります。 詳細については、セキュリティグループルールの追加をご参照ください。
-
インスタンスには Java 環境がデプロイされています。 詳細については、Java 環境のデプロイをご参照ください。
手順
お使いの ECS インスタンスのオペレーティングシステムに基づいて手順を選択します。
Linux
このトピックでは、Jetty 12.0.16 を例として使用します。 異なるバージョンまたはディレクトリを使用する場合は、バージョン番号とパスを適宜置き換えてください。
-
Linux サーバーにログインします。 詳細については、Workbench を使用した Linux インスタンスへのログインをご参照ください。
-
Jetty 12 のインストールパッケージをダウンロードして解凍します。
重要-
異なるバージョンをインストールする場合、またはダウンロードリンクが無効な場合は、Jetty の公式サイトにアクセスして正しいダウンロードリンクを取得し、URL を置き換えてください。
-
Jetty のバージョンによってサポートされる JDK のバージョンは異なります。 Jetty の公式サイトで、お使いの JDK と互換性のある 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 -
-
Jetty ディレクトリを移動します。
sudo mv jetty-home-12.0.16 /usr/local/jetty/ -
jetty-baseディレクトリを作成します。sudo mkdir /usr/local/jetty-base -
環境変数を設定します。
-
~/.bashrcファイルを編集します。sudo vim ~/.bashrc -
iを押して編集モードに入り、ファイルに次の内容を追加します。説明JETTY_HOMEを実際の Jetty インストールディレクトリに、JETTY_BASEをjetty-baseディレクトリに設定します。export JETTY_HOME=/usr/local/jetty export JETTY_BASE=/usr/local/jetty-base -
Escを押し、:wqと入力してEnterを押し、ファイルを保存して閉じます。 -
変更を適用します。
source ~/.bashrc
-
-
Jetty モジュールを有効にし、
jetty-baseディレクトリを初期化します。-
jetty-baseディレクトリに移動します。cd /usr/local/jetty-base -
jetty-baseディレクトリを初期化します。 これにより、$JETTY_BASE/start.d/ディレクトリと、サーバー設定を含む他のディレクトリが作成されます。説明-
利用可能なモジュールを表示するには、
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[test@jxxx jetty-base]$ sudo java -jar $JETTY_HOME/start.jar --add-module=server,http,deploy INFO : mkdir ${jetty.base}/start.d INFO : webapp transitively enabled, ini template available with --add-module=webapp INFO : server initialized in ${jetty.base}/start.d/server.ini INFO : logging-jetty transitively enabled INFO : security transitively enabled INFO : servlet transitively enabled INFO : resources transitively enabled INFO : http initialized in ${jetty.base}/start.d/http.ini INFO : threadpool transitively enabled, ini template available with --add-module=threadpool INFO : logging/slf4j transitive provider of logging/slf4j for logging-jetty INFO : logging/slf4j dynamic dependency of logging-jetty INFO : bytebufferpool transitively enabled, ini template available with --add-module=bytebufferpool INFO : deploy initialized in ${jetty.base}/start.d/deploy.ini INFO : mkdir ${jetty.base}/resources INFO : copy ${jetty.home}/modules/logging/jetty/resources/jetty-logging.properties to ${jetty.base}/resources/jetty-logging.properties INFO : mkdir ${jetty.base}/webapps INFO : Base directory was modified -
-
-
デプロイを検証します。
重要jetty-baseディレクトリで次のコマンドを実行します。-
Jetty のサンプル Web アプリケーションをデプロイします。
-
Jetty 11 または 10 を使用する場合は、次のコマンドの
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=demos -
-
Jetty を起動します。
説明デフォルトでは、Jetty はポート 8080 でリッスンします。
sudo netstat -tunlp | grep 8080を実行して、ポートが使用中かどうかを確認します。 使用中の場合は、nohup sudo java -jar $JETTY_HOME/start.jar jetty.http.port=8081 &のように別のポートを指定します。nohup sudo java -jar $JETTY_HOME/start.jar & -
ブラウザで
http://<パブリック IP アドレス>:8080と入力します。 テストページが表示されれば、デプロイは成功です。説明-
Jetty のポートを変更した場合は、8080 を新しいポート番号に置き換え、セキュリティグループで新しいポートを許可してください。 詳細については、セキュリティグループルールの追加をご参照ください。
-
ローカルの WAR パッケージをアップロードした場合は、
http://<パブリック IP アドレス>:8080/<パッケージ名>にアクセスしてテストします。
-
-
Windows
このセクションは、Jetty 12、Jetty 11、および Jetty 10 にのみ適用されます。
このトピックでは、Jetty 12.0.16 を例として使用します。 異なるバージョンまたはディレクトリを使用する場合は、バージョン番号とパスを適宜置き換えてください。
-
Windows サーバーにログインします。 詳細については、Workbench を使用した Windows インスタンスへのログインをご参照ください。
-
Jetty をダウンロードします。
Jetty のバージョンによってサポートされる JDK のバージョンは異なります。 Jetty の公式サイトで、お使いの JDK と互換性のあるバージョンを選択し、インストールパッケージをダウンロードしてください。

-
Jetty パッケージを解凍します。
パッケージを任意の場所に解凍します。 このトピックでは、
C:\downloadを例として使用します。重要Jetty はスペースを含まないパスに解凍してください。
-
JETTY_HOME環境変数を設定します。-
[PC] を右クリックし、[プロパティ] を選択します。
-
[バージョン情報] ページで、一番下までスクロールし、[システムの詳細設定] をクリックします。
-
[環境変数] をクリックします。
-
[システム環境変数] セクションで、[新規] をクリックします。 変数名を
JETTY_HOMEに、値を Jetty のインストールディレクトリ (例:C:\download\jetty-home-12.0.16) に設定します。 [OK] をクリックします。 -
[OK] をクリックして設定を保存します。
-
-
jetty-baseフォルダーを作成します。 このトピックでは、C:\downloadを例として使用します。 -
jetty-baseフォルダーを初期化します。-
jetty-baseフォルダーに移動し、アドレスバーにcmdと入力してEnterを押し、コマンドプロンプトを開きます。 -
jetty-baseフォルダーを初期化します。 これにより、start.dディレクトリと、サーバー設定を含む他のディレクトリが作成されます。java -jar %JETTY_HOME%/start.jar --add-module=http,server,deployC:\download\jetty-base>java -jar %JETTY_HOME%/start.jar --add-module=http,server,deploy INFO : mkdir ${jetty.base}\start.d INFO : server initialized in ${jetty.base}\start.d\server.ini INFO : logging-jetty transitively enabled INFO : http initialized in ${jetty.base}\start.d\http.ini INFO : resources transitively enabled INFO : threadpool transitively enabled, ini template available with --add-modules=threadpool INFO : logging/slf4j transitive provider of logging/slf4j for logging-jetty INFO : logging/slf4j dynamic dependency of logging-jetty INFO : bytebufferpool transitively enabled, ini template available with --add-modules=bytebufferpool INFO : deploy initialized in ${jetty.base}\start.d\deploy.ini INFO : mkdir ${jetty.base}\resources INFO : copy ${jetty.home}\modules\logging\jetty\resources\jetty-logging.properties to ${jetty.base}\resources\jetty-logging.properties INFO : mkdir ${jetty.base}\webapps INFO : Base directory was modified
-
-
デプロイを検証します。
-
Jetty のサンプル Web アプリケーションをデプロイします。
Jetty 11 または 10 を使用する場合は、次のコマンドで
demosをdemoに置き換えます。説明テスト用にローカルの WAR パッケージを
<jetty-base>/webappsディレクトリにアップロードすることもできます。<jetty-base>は、jetty-baseフォルダーへのパスです (例:C:\download\jetty-base)。 詳細については、ファイルのアップロードまたはダウンロードをご参照ください。java -jar %JETTY_HOME%/start.jar --add-module=demos -
Jetty を起動します。 Jetty の起動後、コマンドプロンプトウィンドウは閉じないでください。
説明デフォルトでは、Jetty はポート 8080 でリッスンします。
netstat -ano | findstr :8080を実行して、ポートが使用中かどうかを確認します。 使用中の場合は、java -jar %JETTY_HOME%/start.jar jetty.http.port=8081のように別のポートを指定します。java -jar %JETTY_HOME%/start.jar -
ブラウザで
http://<パブリック IP アドレス>:8080と入力します。 テストページが表示されれば、デプロイは成功です。説明-
Jetty のポートを変更した場合は、8080 を新しいポート番号に置き換え、セキュリティグループで新しいポートを許可してください。 詳細については、セキュリティグループルールの追加をご参照ください。
-
ローカルの WAR パッケージをアップロードした場合は、
http://<パブリック IP アドレス>:8080/<パッケージ名>にアクセスしてテストします。
-
-
次のステップ
-
サーバー上で Web サイトを設定し、ドメイン名をインスタンスのパブリック IP アドレスに関連付けます。 詳細については、Web サイトの構築をご参照ください。
アプリケーションでデータベースが必要な場合、プロパティファイルなどの Web プロジェクトの設定ファイルにデータベース設定を追加します。 開発後、WAR パッケージを
$JETTY_BASE/webappsディレクトリにデプロイし、Jetty を起動してアプリケーションにアクセスします。 詳細については、Jetty の公式サイトをご参照ください。説明異なる Jetty バージョンを使用する場合は、URL のバージョン番号を置き換えてください。
ローカルファイルを ECS インスタンスにアップロードする方法については、ファイルのアップロードまたはダウンロード (Linux) をご参照ください。
データベースを使用するには、ApsaraDB RDS for MySQL を使用するか、インスタンスに MySQL データベースをデプロイします。
-
Server Load Balancer (SLB) を使用して、Web サイトの可用性とパフォーマンスを向上させます。
よくある質問
デプロイ後、ローカルブラウザから http://<パブリック IP アドレス>:8080 にアクセスできない
Jetty をデプロイした後、ブラウザから http://<パブリック IP アドレス>:8080 にアクセスできない場合があります。 考えられる原因は次のとおりです:
-
原因 1:ファイアウォールまたは SELinux によるアクセスのブロック
システムのファイアウォールまたは SELinux が外部からのアクセスをブロックしている可能性があります。 解決策は次のとおりです:
-
Linux:システムのファイアウォールと SELinux を無効にします。
-
Windows:システムのファイアウォールを無効にします。
-
-
原因 2:Jetty ポートのカスタマイズ
起動時に Jetty のポートを変更しました。
http://<パブリック IP アドレス>:8080の 8080 を新しいポート番号に置き換え、セキュリティグループで新しいポートを許可してください。