Debian 9にApache Tomcat 9をインストールする方法

前書き

Apache Tomcatは、Javaアプリケーションを提供するために使用されるWebサーバーおよびサーブレットコンテナーです。 Tomcatは、Apache Software FoundationがリリースしたJava ServletおよびJavaServer Pagesテクノロジーのオープンソース実装です。 このチュートリアルでは、Debian 9サーバーでのTomcat 9の最新リリースの基本的なインストールといくつかの構成について説明します。

前提条件

このガイドを始める前に、サーバーに `+ sudo +`権限が設定された非rootユーザーが必要です。 これを行う方法については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-9 [Debian 9初期サーバーセットアップガイド]を完了することで学習できます。

ステップ1-Javaのインストール

Tomcatでは、Java Webアプリケーションコードを実行できるように、サーバーにJavaをインストールする必要があります。 OpenJDKをaptとともにインストールすることで、その要件を満たすことができます。

まず、aptパッケージインデックスを更新します。

sudo apt update

次に、aptを使用してJava Development Kitパッケージをインストールします。

sudo apt install default-jdk

Javaがインストールされたので、Tomcatサービスを実行するために使用される `+ tomcat +`ユーザーを作成できます。

ステップ2-Tomcatユーザーの作成

セキュリティ上の理由から、Tomcatは非特権ユーザーとして実行する必要があります(つまり、 ルートではありません)。 Tomcatサービスを実行する新しいユーザーとグループを作成します。

最初に、新しい `+ tomcat +`グループを作成します:

sudo groupadd tomcat

次に、新しい「+ tomcat」ユーザーを作成します。 このユーザーを + tomcat +`グループのメンバーにし、ホームディレクトリを `+ / opt / tomcat +(Tomcatのインストール先)にし、シェルを `+ / bin / false +`にします(so誰もアカウントにログインできません):

sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

`+ tomcat +`ユーザーが設定されたので、Tomcatをダウンロードしてインストールします。

ステップ3-Tomcatのインストール

Tomcat 9をインストールする最良の方法は、最新のバイナリリリースをダウンロードしてから手動で構成することです。

Tomcat 9の最新バージョンは、https://tomcat.apache.org/download-90.cgi [Tomcat 9ダウンロードページ]で検索してください。 執筆時点では、最新バージョンは* 9.0.11 ですが、利用可能な場合は最新の安定バージョンを使用する必要があります。 * Binary Distributions *セクションの下、 Core *リストの下にあるリンクを「tar.gz」にコピーします。

次に、サーバーの `+ / tmp +`ディレクトリに移動します。 これは、Tomcatのコンテンツを抽出した後は不要になるTomcat tarballなどの一時的なアイテムをダウンロードするのに適したディレクトリです。

cd /tmp

`+ curl `コマンドラインツールを使用してtarballをダウンロードします。 ` curl +`をインストールします。

sudo apt install curl

次に、 `+ curl +`を使用して、Tomcat Webサイトからコピーしたリンクをダウンロードします。

curl -O

Tomcatを `+ / opt / tomcat +`ディレクトリにインストールします。 ディレクトリを作成し、次のコマンドを使用してアーカイブを展開します。

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

次に、インストールに適切なユーザー権限を設定できます。

ステップ4-権限の更新

設定した `+ tomcat +`ユーザーは、Tomcatインストールにアクセスする必要があります。 今すぐ設定します。

Tomcatインストールを解凍したディレクトリに移動します。

cd /opt/tomcat

`+ tomcat +`グループに、インストールディレクトリ全体の所有権を付与します。

sudo chgrp -R tomcat /opt/tomcat

次に、 `+ tomcat `グループに ` conf +`ディレクトリとそのすべてのコンテンツへの読み取りアクセス権と、ディレクトリ自体への*実行*アクセス権を付与します。

sudo chmod -R g+r conf
sudo chmod g+x conf

+ tomcat`ユーザーを + webapps`、 + work、` + temp`、および `+ logs +`ディレクトリの所有者にします。

sudo chown -R tomcat webapps/ work/ temp/ logs/

適切な許可が設定されたので、Tomcatプロセスを管理するsystemdサービスファイルを作成できます。

ステップ5-systemdサービスファイルを作成する

Tomcatをサービスとして実行できるようにしたいので、systemdサービスファイルを設定します。

TomcatはJavaがインストールされている場所を知る必要があります。 このパスは、一般に「JAVA_HOME」と呼ばれます。 その場所を検索する最も簡単な方法は、次のコマンドを実行することです。

sudo update-java-alternatives -l
Outputjava-1.8.0-openjdk-amd64       1081

あなたの `+ JAVA_HOME `は最後の列からの出力です(赤で強調表示)。 上記の例を考えると、このサーバーの正しい ` JAVA_HOME +`は次のようになります。

JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-amd64

`+ JAVA_HOME +`は異なる場合があります。

この情報を使用して、systemdサービスファイルを作成できます。 次のように入力して、「+ / etc / systemd / system」ディレクトリにある「+ tomcat.service」というファイルを開きます。

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

次の内容をサービスファイルに貼り付けます。 必要に応じて、 `+ JAVA_HOME `の値を変更して、システムで見つけた値と一致させます。 ` CATALINA_OPTS +`で指定されているメモリ割り当て設定を変更することもできます。

/etc/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

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

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

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

次に、systemdデーモンをリロードして、サービスファイルについて認識します。

sudo systemctl daemon-reload

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

sudo systemctl start tomcat

次のように入力して、エラーなしで開始されたことを再確認します。

sudo systemctl status tomcat

次のような出力が表示されます。

Output● tomcat.service - Apache Tomcat Web Application Container
  Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
  Active: active (running) since Wed 2018-09-05 20:47:44 UTC; 3s ago
 Process: 9037 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 9046 (java)
   Tasks: 46 (limit: 4915)
  CGroup: /system.slice/tomcat.service
          └─9046 /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Dja

Sep 05 20:47:44 tomcat systemd[1]: Starting Apache Tomcat Web Application Container...
Sep 05 20:47:44 tomcat systemd[1]: Started Apache Tomcat Web Application Container.

これにより、Tomcatがサーバー上で稼働していることが確認されます。

手順6-ファイアウォールの調整とTomcatサーバーのテスト

Tomcatサービスが開始されたので、デフォルトページが使用可能であることを確認するためにテストできます。

それを行う前に、リクエストをサービスに到達できるようにファイアウォールを調整する必要があります。 前提条件に従った場合、現在、 `+ ufw +`ファイアウォールが有効になっています。

Tomcatはポート `+ 8080 +`を使用して従来のリクエストを受け入れます。 次のように入力して、そのポートへのトラフィックを許可します。

sudo ufw allow 8080

ファイアウォールを変更すると、WebブラウザーでドメインまたはIPアドレスの後に「:8080」を入力して、デフォルトのスプラッシュページにアクセスできます。

Open in web browserhttp://:8080

他の情報に加えて、デフォルトのTomcatスプラッシュページが表示されます。 ただし、たとえば、マネージャーアプリのリンクをクリックすると、アクセスが拒否されます。 次にそのアクセスを設定できます。

Tomcatに正常にアクセスできた場合は、今すぐサービスファイルを有効にして、Tomcatがブート時に自動的に起動するようにします。

sudo systemctl enable tomcat

ステップ7-Tomcat Web管理インターフェースを構成する

Tomcatに付属のマネージャーWebアプリを使用するには、Tomcatサーバーにログインを追加する必要があります。 `+ tomcat-users.xml`ファイルを編集してこれを行います:

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

+ manager-gui +`と `+ admin-gui +(Tomcatに付属のWebアプリ)にアクセスできるユーザーを追加する必要があります。 以下の例のように、 `+ tomcat-users +`タグの間にユーザーを定義することでこれを行うことができます。 ユーザー名とパスワードを安全なものに変更してください。

tomcat-users.xml-管理ユーザー

<tomcat-users . . .>
   <user username="" password="" roles="manager-gui,admin-gui"/>
</tomcat-users>

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

デフォルトでは、Tomcatの新しいバージョンは、ManagerアプリとHost Managerアプリへのアクセスをサーバー自体からの接続に制限します。 リモートマシンにインストールするので、この制限を削除または変更することをお勧めします。 これらのIPアドレスの制限を変更するには、適切な `+ context.xml +`ファイルを開きます。

マネージャーアプリの場合:

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

ホストマネージャーアプリの場合:

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

内部では、IPアドレスの制限をコメントアウトして、どこからでも接続できるようにします。 または、自分のIPアドレスからの接続のみにアクセスを許可する場合は、リストにパブリックIPアドレスを追加できます。

Tomcat webappsのcontext.xmlファイル

<Context antiResourceLocking="false" privileged="true" >
 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

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

変更を有効にするには、Tomcatサービスを再起動します。

sudo systemctl restart tomcat

ステップ8-Webインターフェースにアクセスする

ユーザーを作成したので、WebブラウザーでWeb管理インターフェイスに再度アクセスできます。 もう一度、ブラウザのポート8080に続いてサーバーのドメイン名またはIPアドレスを入力することにより、正しいインターフェイスにアクセスできます。

Open in web browserhttp://:8080

表示されるページは、以前にテストしたときに指定したページと同じである必要があります。

image:https://assets.digitalocean.com/articles/tomcat8_1604/splashscreen.png [Tomcat root]

リンクまたは `+ http://:8080 / manager / html `からアクセスできるマネージャーアプリを見てみましょう。 ` tomcat-users.xml +`ファイルに追加したアカウント資格情報を入力する必要があります。 その後、次のようなページが表示されます。

image:https://assets.digitalocean.com/articles/tomcat8_1604/manager.png [Tomcat Web Application Manager]

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

次に、リンクまたは `+ http://:8080 / host-manager / html / +`からアクセスできるホストマネージャーを見てみましょう。

image:https://assets.digitalocean.com/articles/tomcat8_1604/host-manager.png [Tomcat Virtual Host Manager]

Virtual Host Managerページから、アプリケーションを提供する仮想ホストを追加できます。

結論

Tomcatのインストールが完了しました! これで、独自のJava Webアプリケーションを自由にデプロイできます!

現在、Tomcatインストールは機能していますが、完全に暗号化されていません。 これは、パスワードなどの機密アイテムを含むすべてのデータがプレーンテキストで送信され、インターネット上の他の関係者が傍受して読み取ることができることを意味します。 これを防ぐには、接続をSSLで暗号化することを強くお勧めします。 https://www.digitalocean.com/community/tutorials/how-to-encrypt-tomcat-8-connections-with-apache-or-nginx-on-ubuntuに従って、Tomcatへの接続を暗号化する方法を見つけることができます。 -16-04 [このガイド](_注:このガイドでは、Ubuntu 16.04_でのTomcat 8暗号化について説明します)。