Ubuntu20.04にApacheTomcat10をインストールする方法

序章

Apache Tomcat は、Javaアプリケーションを提供するために使用されるWebサーバーおよびサーブレットコンテナーです。 これは、ジャカルタサーブレットジャカルタサーバーページ、およびジャカルタEEプラットフォームの他のテクノロジーのオープンソース実装です。

このチュートリアルでは、ApacheTomcat10をUbuntu20.04にデプロイします。 Tomcat 10をインストールし、ユーザーとロールを設定して、管理ユーザーインターフェイスに移動します。

前提条件

ステップ1—Tomcatをインストールする

このセクションでは、サーバーにTomcat10をセットアップします。 まず、最新バージョンをダウンロードして、別のユーザーと適切な権限を設定します。 また、Java Development Kit(JDK)もインストールします。

セキュリティ上の理由から、Tomcatは別の非特権ユーザーの下で実行する必要があります。 次のコマンドを実行して、というユーザーを作成します tomcat:

  1. sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat

供給することによって /bin/false ユーザーのデフォルトシェルとして、次のようにログインできないようにします。 tomcat.

ここで、JDKをインストールします。 まず、以下を実行してパッケージマネージャーのキャッシュを更新します。

  1. sudo apt update

次に、次のコマンドを実行してJDKをインストールします。

  1. sudo apt install default-jdk

答え y インストールを続行するように求められたら。

インストールが完了したら、使用可能なJavaインストールのバージョンを確認します。

  1. java -version

出力は次のようになります。

Output
openjdk version "11.0.14" 2022-01-18 OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2.20.04) OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

Tomcatをインストールするには、Tomcat10用の最新のCoreLinuxビルドが必要です。これは、ダウンロードページから入手できます。 で終わる最新のCoreLinuxビルドを選択します .tar.gz. 執筆時点では、最新バージョンは 10.0.20.

まず、に移動します /tmp ディレクトリ:

  1. cd /tmp

を使用してアーカイブをダウンロードする wget 次のコマンドを実行します。

  1. wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz

The wget コマンドはインターネットからリソースをダウンロードします。

次に、以下を実行して、ダウンロードしたアーカイブを抽出します。

  1. sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1

すでにユーザーを作成しているので、許可することができます tomcat 実行することにより、抽出されたインストールの所有権:

  1. sudo chown -R tomcat:tomcat /opt/tomcat/
  2. sudo chmod -R u+x /opt/tomcat/bin

どちらのコマンドも、の設定を更新します tomcat インストール。 これらのコマンドとその機能の詳細については、Linuxのアクセス許可の基本とVPSでのUmaskの使用方法を参照してください。

このステップでは、JDKとTomcatをインストールしました。 また、そのための別のユーザーを作成し、Tomcatバイナリに対するアクセス許可を設定しました。 次に、Tomcatインスタンスにアクセスするための資格情報を構成します。

ステップ2—管理者ユーザーの構成

ManagerおよびHostManager ページにアクセスするには、Tomcatの構成で特権ユーザーを定義します。 すべての外部IPアドレスがそれらのページにアクセスすることを禁止するIPアドレス制限を削除する必要があります。

Tomcatユーザーはで定義されています /opt/tomcat/conf/tomcat-users.xml. 次のコマンドを使用して、編集用にファイルを開きます。

  1. sudo nano /opt/tomcat/conf/tomcat-users.xml

終了タグの前に次の行を追加します。

/opt/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui" />
<user username="manager" password="manager_password" roles="manager-gui" />

<role rolename="admin-gui" />
<user username="admin" password="admin_password" roles="manager-gui,admin-gui" />

強調表示されたパスワードを独自のパスワードに置き換えます。 完了したら、ファイルを保存して閉じます。

ここでは、2つのユーザーロールを定義します。 manager-guiadmin-guiManagerページとHostManagerページへのアクセスをそれぞれ許可します。 また、2人のユーザーを定義します。 manageradmin、関連する役割を持つ。

デフォルトでは、Tomcatは、接続がサーバー自体からのものでない限り、管理ページへのアクセスを制限するように構成されています。 定義したユーザーでこれらのページにアクセスするには、これらのページの構成ファイルを編集する必要があります。

Manager ページの制限を解除するには、その構成ファイルを開いて編集します。

  1. sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

コメントアウト Valve 示されているように、定義:

opt / tomcat / webapps / manager / META-INF / context.xml
...
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.Csr>
</Context>

ファイルを保存して閉じてから、 HostManagerに対して繰り返します。

  1. sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

これで、2人のユーザーを定義しました。 manageradmin、後で管理インターフェイスの制限された部分にアクセスするために使用します。 次に、を作成します systemd Tomcatのサービス。

ステップ3—作成 systemd サービス

The systemd これから作成するサービスは、Tomcatをバックグラウンドで静かに実行し続けます。 The systemd エラーまたは障害が発生した場合、サービスはTomcatを自動的に再起動します。

Tomcatはそれ自体がJavaアプリケーションであるため、手順1でJDKとともにインストールしたJavaランタイムが存在する必要があります。 サービスを作成する前に、Javaがどこにあるかを知る必要があります。 次のコマンドを実行して、それを調べることができます。

  1. sudo update-java-alternatives -l

出力は次のようになります。

Output
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64

最後の列にリストされているJavaが存在するパスに注意してください。 サービスを定義するには、一時的にパスが必要になります。

を保存します tomcat 名前の付いたファイルのサービス tomcat.service、 下 /etc/systemd/system. 次のコマンドを実行して、編集用のファイルを作成します。

  1. sudo nano /etc/systemd/system/tomcat.service

次の行を追加します。

/etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

の強調表示された値を変更します JAVA_HOME 前にメモしたものと異なる場合。

ここでは、Tomcatが提供する起動スクリプトとシャットダウンスクリプトを実行して、Tomcatを実行するサービスを定義します。 また、いくつかの環境変数を設定して、ホームディレクトリを定義します(これは /opt/tomcat 以前と同様に)、Java VMが割り当てることができるメモリの量を制限します( CATALINA_OPTS). 失敗すると、Tomcatサービスは自動的に再起動します。

完了したら、ファイルを保存して閉じます。

リロード systemd 新しいサービスを認識できるようにするデーモン:

sudo systemctl daemon-reload

次に、次のように入力してTomcatサービスを開始できます。

sudo systemctl start tomcat

次に、そのステータスを調べて、正常に開始されたことを確認します。

sudo systemctl status tomcat

出力は次のようになります。

Output
● tomcat.service - Tomcat Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2022-03-11 14:37:10 UTC; 2s ago Process: 4845 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 4860 (java) Tasks: 15 (limit: 1132) Memory: 90.1M CGroup: /system.slice/tomcat.service └─4860 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties ...

プレス q コマンドを終了します。

システムでTomcatを起動できるようにするには、次のコマンドを実行します。

  1. sudo systemctl enable tomcat

このステップでは、Javaが存在する場所を特定し、有効にしました systemd Tomcatをバックグラウンドで実行します。 これで、WebブラウザからTomcatにアクセスできます。

ステップ4—Webインターフェイスへのアクセス

Tomcatサービスが実行されているので、Tomcatへの接続を許可するようにファイアウォールを構成できます。 その後、そのWebインターフェイスにアクセスできるようになります。

Tomcatはポートを使用します 8080 HTTPリクエストを受け入れます。 次のコマンドを実行して、そのポートへのトラフィックを許可します。

  1. sudo ufw allow 8080

ブラウザで、サーバーのIPアドレスに移動してTomcatにアクセスできるようになりました。

http://your_server_ip:8080

デフォルトのTomcatウェルカムページが表示されます。

これで、Tomcatサービスが機能していることを確認できました。

右側のManagerAppボタンを押します。 前の手順で定義したアカウントのクレデンシャルを入力するように求められます。

次のようなページが表示されます。

Webアプリケーションマネージャは、Javaアプリケーションを管理するために使用されます。 ここから、開始、停止、リロード、デプロイ、およびアンデプロイできます。 アプリでいくつかの診断を実行することもできます(たとえば、メモリリークを見つけるため)。 サーバーに関する情報は、このページの一番下にあります。

次に、メインページのボタンを押すことでアクセスできるホストマネージャーを見てみましょう。

ここで、アプリケーションを提供する仮想ホストを追加できます。 このページには、を持っていないユーザーはアクセスできないことに注意してください。 admin-gui 割り当てられた役割など manager.

結論

Ubuntu20.04サーバーにTomcat10をインストールし、管理アカウントを使用してリモートでアクセスできるように構成しました。 これを使用して、JakartaEEテクノロジーに基づくJavaアプリケーションをデプロイできます。 公式ドキュメントにアクセスすると、Javaアプリの詳細を知ることができます。

現在、Tomcatのインストールは機能していますが、トラフィックは暗号化されていません。 これは、パスワードなどの機密項目を含むすべてのデータがプレーンテキストで送信され、インターネット上の他の関係者が傍受して読み取ることができることを意味します。 これを防ぐには、サーバーにドメイン名を追加し、ApacheまたはNginxでTomcat10を保護するこのチュートリアルを使用して、サーバーにTLS証明書をインストールします。 暗号化の詳細については、Let’sEncryptの概要を参照してください。 DigitalOcean Dropletにドメインを追加するには、ドメインの追加方法に関するこのガイドに従ってください。