Ubuntu20.04にApacheTomcat10をインストールする方法
Ubuntu20.04にApacheTomcat10をインストールする方法
序章
Apache Tomcat は、Javaアプリケーションを提供するために使用されるWebサーバーおよびサーブレットコンテナーです。 これは、ジャカルタサーブレット、ジャカルタサーバーページ、およびジャカルタEEプラットフォームの他のテクノロジーのオープンソース実装です。
このチュートリアルでは、ApacheTomcat10をUbuntu20.04にデプロイします。 Tomcat 10をインストールし、ユーザーとロールを設定して、管理ユーザーインターフェイスに移動します。
前提条件
- sudo非rootユーザーとファイアウォールを備えた1つのUbuntu20.04サーバー。これは、Ubuntu20.04初期サーバーセットアップに従ってセットアップできます。
ステップ1—Tomcatをインストールする
このセクションでは、サーバーにTomcat10をセットアップします。 まず、最新バージョンをダウンロードして、別のユーザーと適切な権限を設定します。 また、Java Development Kit(JDK)もインストールします。
セキュリティ上の理由から、Tomcatは別の非特権ユーザーの下で実行する必要があります。 次のコマンドを実行して、というユーザーを作成します tomcat
:
- sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat
供給することによって /bin/false
ユーザーのデフォルトシェルとして、次のようにログインできないようにします。 tomcat
.
ここで、JDKをインストールします。 まず、以下を実行してパッケージマネージャーのキャッシュを更新します。
- sudo apt update
次に、次のコマンドを実行してJDKをインストールします。
- sudo apt install default-jdk
答え y
インストールを続行するように求められたら。
インストールが完了したら、使用可能なJavaインストールのバージョンを確認します。
- java -version
出力は次のようになります。
Outputopenjdk 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
ディレクトリ:
- cd /tmp
を使用してアーカイブをダウンロードする wget
次のコマンドを実行します。
- wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz
The wget
コマンドはインターネットからリソースをダウンロードします。
次に、以下を実行して、ダウンロードしたアーカイブを抽出します。
- sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
すでにユーザーを作成しているので、許可することができます tomcat
実行することにより、抽出されたインストールの所有権:
- sudo chown -R tomcat:tomcat /opt/tomcat/
- 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
. 次のコマンドを使用して、編集用にファイルを開きます。
- sudo nano /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-gui
と admin-gui
、ManagerページとHostManagerページへのアクセスをそれぞれ許可します。 また、2人のユーザーを定義します。 manager
と admin
、関連する役割を持つ。
デフォルトでは、Tomcatは、接続がサーバー自体からのものでない限り、管理ページへのアクセスを制限するように構成されています。 定義したユーザーでこれらのページにアクセスするには、これらのページの構成ファイルを編集する必要があります。
Manager ページの制限を解除するには、その構成ファイルを開いて編集します。
- sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
コメントアウト Valve
示されているように、定義:
...
<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に対して繰り返します。
- sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
これで、2人のユーザーを定義しました。 manager
と admin
、後で管理インターフェイスの制限された部分にアクセスするために使用します。 次に、を作成します systemd
Tomcatのサービス。
ステップ3—作成 systemd
サービス
The systemd
これから作成するサービスは、Tomcatをバックグラウンドで静かに実行し続けます。 The systemd
エラーまたは障害が発生した場合、サービスはTomcatを自動的に再起動します。
Tomcatはそれ自体がJavaアプリケーションであるため、手順1でJDKとともにインストールしたJavaランタイムが存在する必要があります。 サービスを作成する前に、Javaがどこにあるかを知る必要があります。 次のコマンドを実行して、それを調べることができます。
- sudo update-java-alternatives -l
出力は次のようになります。
Outputjava-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
最後の列にリストされているJavaが存在するパスに注意してください。 サービスを定義するには、一時的にパスが必要になります。
を保存します tomcat
名前の付いたファイルのサービス tomcat.service
、 下 /etc/systemd/system
. 次のコマンドを実行して、編集用のファイルを作成します。
- sudo nano /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を起動できるようにするには、次のコマンドを実行します。
- sudo systemctl enable tomcat
このステップでは、Javaが存在する場所を特定し、有効にしました systemd
Tomcatをバックグラウンドで実行します。 これで、WebブラウザからTomcatにアクセスできます。
ステップ4—Webインターフェイスへのアクセス
Tomcatサービスが実行されているので、Tomcatへの接続を許可するようにファイアウォールを構成できます。 その後、そのWebインターフェイスにアクセスできるようになります。
Tomcatはポートを使用します 8080
HTTPリクエストを受け入れます。 次のコマンドを実行して、そのポートへのトラフィックを許可します。
- 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にドメインを追加するには、ドメインの追加方法に関するこのガイドに従ってください。