Java Webは、Javaプログラミング言語とさまざまなテクノロジーおよびフレームワークを統合して、動的webアプリケーションの開発を容易にするテクノロジースタックです。 開発者は、Java Webを使用して、プラットフォーム間で展開できる複雑で高性能なwebアプリケーションを開発できます。 JettyはオープンソースのServletコンテナで、主にJava webアプリケーションの実行に使用されます。 Apache Tomcatと比較して、Jettyはより軽量で、軽量アプリケーション、同時実行性の高いシナリオ、および分散環境に適しています。 このトピックでは、Jettyを使用してElastic Compute Service (ECS) インスタンスにJava web環境をデプロイする方法について説明します。
前提条件
ECSインスタンスにJava web環境をデプロイする前に、インスタンスが次の要件を満たしていることを確認してください。
ECSインスタンスには、静的パブリックIPアドレス (システム割り当てまたは自動割り当てパブリックIPアドレスとも呼ばれます) が割り当てられるか、elastic IPアドレス (EIP) に関連付けられます。 詳細については、「EIP」をご参照ください。
インスタンスのセキュリティグループにルールが追加され、リモート接続とポート22、3389、8080などのJettyポートでのインバウンドトラフィックが許可されます。 セキュリティグループルールの追加方法については、「セキュリティグループルールの追加」をご参照ください。
インスタンスにJava環境がデプロイされています。 詳細については、「Java環境のデプロイ」をご参照ください。
手順
ECSインスタンスのオペレーティングシステムに基づいて、次の操作を実行します。
Linux
この例では、Jetty 12.0.16がインストールされています。 別のバージョンのJettyをインストールするか、他のディレクトリを使用する場合は、次のコマンドのバージョンとディレクトリを実際のバージョンとディレクトリに置き換えます。
Linux インスタンスに接続します。 詳細については、「Workbenchを使用したSSH経由のLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、Jetty 12インストールパッケージをダウンロードして解凍します。
重要Jettyの別のバージョンをインストールする場合、または次のダウンロードURLが無効な場合は、公式Jetty Webサイトにアクセスして最新のダウンロードURLを取得し、次のwgetコマンドのURLを取得したURLに置き換えます。
異なるバージョンのJettyは、異なるJava Development Kit (JDK) バージョンをサポートしています。 Java環境のデプロイ時にインストールされるJDKのバージョンに基づいて、適切なバージョンのJettyを選択します。 詳細については、公式のJetty Webサイトをご覧ください。

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インストールファイルを /usr/local/jetty /ディレクトリに移動します。
sudo mv jetty-home-12.0.16 /usr/local/jetty/次のコマンドを実行して、
jetty-baseディレクトリを作成します。sudo mkdir /usr/local/jetty-base環境変数を設定します。
次のコマンドを実行して、
~/.bashrcファイルを変更します。sudo vim ~/.bashrcIキーを押してInsertモードに入り、次のコンテンツをファイルに追加します。説明JETTYをインストールする実際のディレクトリに
JETTY_HOMEパラメーターを設定します。JETTY_BASEパラメーターをJETTY-BASEディレクトリに設定します。export JETTY_HOME=/usr/local/jetty export JETTY_BASE=/usr/local/jetty-baseEscキーを押して挿入モードを終了します。: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
環境設定を確認します。
重要次のコマンドは、
jetty-baseディレクトリで実行する必要があります。次のコマンドを実行して、Jettyが提供するサンプルwebアプリケーションをデプロイします。
Jetty 10または11を使用する場合は、次のコマンドの
デモをdemoに置き換えます。Jetty 9を使用する場合は、
sudo mv $JETTY_HOME/demo-base/webapps/ROOT $JETTY_BASE/webappsコマンドを実行してサンプルwebアプリケーションをデプロイします。
説明オンプレミスのテストプロジェクトのWARパッケージを
$JETTY_BASE/webappsディレクトリにアップロードしてテストすることもできます。 詳細については、「ファイルのアップロードまたはダウンロード」をご参照ください。sudo java -jar $JETTY_HOME/start.jar --add-module=demos次のコマンドを実行してJettyを起動します。
説明デフォルトでは、Jettyはポート8080でリッスンします。
sudo netstat -tunlp | grep 8080コマンドを実行して、ポートがすでに使用されているかどうかを確認できます。 ポートがすでに使用されている場合は、Jettyの起動時に別のポートを指定してポートの競合を取り除くことができます。 たとえば、nohup sudo java -jar $JETTY_HOME/start.jar jetty.http.port=8081 &コマンドを実行して、Jettyのポートを指定します。nohup sudo java -jar $JETTY_HOME/start.jar &オンプレミスデバイスのwebブラウザーのアドレスバーに、
http:// <ECSインスタンスのパブリックIPアドレス>:8080と入力します。 Jettyテストページが表示された場合、Java web環境は期待どおりに設定されます。説明Jettyポート番号を変更した場合は、8080を指定した新しいJettyポート番号に置き換え、インスタンスのセキュリティグループがポートでのインバウンドトラフィックを許可していることを確認します。 セキュリティグループルールの追加方法については、「セキュリティグループルールの追加」をご参照ください。
オンプレミスのテストプロジェクトのWARパッケージをアップロードした場合は、
http:// <ECSインスタンスのパブリックIPアドレス>:8080/<パッケージ名>にアクセスして、プロジェクトにアクセスできるかどうかを確認します。

Windows
このチュートリアルは、Jetty 12、Jetty 11、およびJetty 10にのみ適用されます。
この例では、Jetty 12.0.16がインストールされています。 別のバージョンのJettyをインストールするか、他のディレクトリを使用する場合は、次の手順でバージョンとディレクトリを実際のバージョンとディレクトリに置き換えます。
Windowsインスタンスに接続します。 詳細については、「Workbenchを使用したRDP経由のWindowsインスタンスへの接続」をご参照ください。
インストールするJettyインストールパッケージをダウンロードします。
異なるバージョンのJettyは異なるJDKバージョンをサポートしています。 Java環境のデプロイ時にインストールされるJDKのバージョンに基づいて、適切なバージョンのJettyを選択します。 詳細については、公式のJetty Webサイトをご覧ください。


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

Aboutページで、一番下までスクロールし、[システムの詳細設定] をクリックします。
[環境変数] をクリックします。

[システム変数] セクションで、[新規] をクリックしてシステム変数を作成し、パラメーターを設定します。 そして、[OK] をクリックします。 変数名を
JETTY_HOMEに設定し、変数値をJettyがインストールされているディレクトリ (C:\download\jetty-home-12.0.16など) に設定します。
[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,deploy
Jettyを確認します。
次のコマンドを実行して、Jettyが提供するサンプルwebアプリケーションをデプロイします。
Jetty 10または11を使用する場合は、次のコマンドの
デモを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コマンドを実行して、ポートがすでに使用されているかどうかを確認できます。 ポートがすでに使用されている場合は、Jettyの起動時に別のポートを指定してポートの競合を取り除くことができます。 たとえば、java -jar % JETTY_HOME %/start.jar jetty.http.port=8081コマンドを実行して、Jettyのポートを指定します。java -jar %JETTY_HOME%/start.jarオンプレミスデバイスのwebブラウザーのアドレスバーに、
http:// <ECSインスタンスのパブリックIPアドレス>:8080と入力します。 Jettyテストページが表示された場合、Java web環境は期待どおりに設定されます。説明Jettyポート番号を変更した場合は、8080を指定した新しいJettyポート番号に置き換え、インスタンスのセキュリティグループがポートでのインバウンドトラフィックを許可していることを確認します。 セキュリティグループルールの追加方法については、「セキュリティグループルールの追加」をご参照ください。
オンプレミスのテストプロジェクトのWARパッケージをアップロードした場合は、
http:// <ECSインスタンスのパブリックIPアドレス>:8080/<パッケージ名>にアクセスして、プロジェクトにアクセスできるかどうかを確認します。

次に何をすべきか
ECSインスタンスにJava web環境をデプロイした後、インスタンスにwebサイトを設定し、ドメイン名をインスタンスのパブリックIPアドレスにバインドできます。 詳細については、「Webサイトの構築」をご参照ください。
webアプリケーションを開発するための適切な開発ツールを選択します。 アプリケーションがアプリケーションデータを格納するためにデータベースを必要とする場合は、対応するwebプロジェクトの関連する構成ファイル (プロパティファイルなど) にデータベース構成を追加し、データベースに接続します。 開発が完了したら、Java webアプリケーションをJetty (
$JETTY_BASE/webappsディレクトリなど) にデプロイできます。 Java webアプリケーションをデプロイして起動した後、webインターフェイスを介してアプリケーションにアクセスできます。 Jettyの詳細については、公式のJetty Webサイトをご覧ください。説明異なるバージョンのJettyを使用する場合は、URLのバージョン番号を対応するバージョン番号に置き換えます。
オンプレミスのファイルをECSインスタンスにアップロードできます。 詳細については、「LinuxインスタンスへのファイルのアップロードまたはLinuxインスタンスからのファイルのダウンロード」をご参照ください。
データベースを使用してwebアプリケーションのデータを保存および管理する場合は、ApsaraDB RDS for MySQLインスタンスを使用するか、ECSインスタンスにMySQLデータベースをデプロイできます。 詳細については、「データベースの概要」をご参照ください。
Server Load Balancer (SLB) インスタンスを使用して、Webサイトの可用性とパフォーマンスを向上させることができます。 詳細については、「クイックスタート」をご参照ください。
よくある質問
ECSインスタンスにJettyを使用してJava web環境をデプロイした後、オンプレミスコンピューターからhttp:// <ECSインスタンスのパブリックIPアドレス>:8080にアクセスできない場合はどうすればよいですか?
Jettyを使用してECSインスタンスにJava web環境をデプロイすると、webブラウザーからhttp:// <インスタンスのパブリックIPアドレス>:8080にアクセスできなくなります。 この問題は、次の原因で発生する可能性があります。
原因1:
インスタンスでシステムファイアウォールまたはセキュリティ強化Linux (SELinux) が有効になっており、外部アクセスをブロックするようにルールが設定されています。 その結果、Jetty Webサイトにアクセスすることはできません。 次のソリューションを使用して問題を解決できます。
インスタンスがLinuxオペレーティングシステムを実行している場合は、システムファイアウォールとSELinuxが無効になっていることを確認してください。 詳細については、「Linux ECSインスタンスのシステムファイアウォールの有効化または無効化」および「SELinuxの有効化または無効化」をご参照ください。
インスタンスがWindowsオペレーティングシステムを実行している場合は、システムファイアウォールが無効になっていることを確認してください。 詳細については、「Windowsインスタンスのシステムファイアウォールの管理」をご参照ください。
原因2:
Jettyを開始したとき、Jettyのリスニングポートを変更しました。 次のソリューションを使用して問題を解決できます。
http:// <ECSインスタンスのパブリックIPアドレス>:8080の8080を指定したポート番号に置き換え、インスタンスのセキュリティグループルールを確認して、ポートが許可されていることを確認します。 セキュリティグループルールの追加方法については、「セキュリティグループルールの追加」をご参照ください。