前書き
Apache Tomcatは、Javaアプリケーションを提供するために使用されるWebサーバーおよびサーブレットコンテナーです。 Tomcatは、Apache Software FoundationがリリースしたJava ServletおよびJavaServer Pagesテクノロジーのオープンソース実装です。 このチュートリアルでは、Ubuntu 16.04サーバーでのTomcat 8の最新リリースの基本的なインストールといくつかの構成について説明します。
前提条件
このガイドを開始する前に、サーバーにsudo
権限を持つroot以外のユーザーを設定する必要があります。 Ubuntu 16.04 initial server setup guideを完了することで、これを行う方法を学ぶことができます。
ステップ1:Javaをインストールする
Tomcatでは、Java Webアプリケーションコードを実行できるように、サーバーにJavaをインストールする必要があります。 OpenJDKをapt-getでインストールすることで、その要件を満たすことができます。
まず、apt-getパッケージインデックスを更新します。
sudo apt-get update
次に、apt-getを使用してJava Development Kitパッケージをインストールします。
sudo apt-get install default-jdk
Javaがインストールされたので、Tomcatサービスの実行に使用されるtomcat
ユーザーを作成できます。
ステップ2:Tomcatユーザーを作成する
セキュリティ上の理由から、Tomcatは非特権ユーザーとして実行する必要があります(つまり、 ルートではありません)。 Tomcatサービスを実行する新しいユーザーとグループを作成します。
まず、新しいtomcat
グループを作成します。
sudo groupadd tomcat
次に、新しいtomcat
ユーザーを作成します。 このユーザーをtomcat
グループのメンバーにし、ホームディレクトリを/opt/tomcat
(Tomcatをインストールします)、シェルを/bin/false
にします(誰もログに記録できないようにします)。アカウントに):
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
tomcat
ユーザーが設定されたので、Tomcatをダウンロードしてインストールしましょう。
ステップ3:Tomcatをインストールする
Tomcat 8をインストールする最良の方法は、最新のバイナリリリースをダウンロードしてから手動で構成することです。
Tomcat 8 Downloads pageでTomcat8の最新バージョンを見つけます。 執筆時点では、最新バージョンは8.5.5ですが、入手可能な場合は、それ以降の安定バージョンを使用する必要があります。 Binary Distributionsセクションの下、次にCoreリストの下で、リンクを「tar.gz」にコピーします。
次に、サーバーの/tmp
ディレクトリに移動します。 これは、Tomcatのコンテンツを抽出した後は不要になるTomcat tarballなどの一時的なアイテムをダウンロードするのに適したディレクトリです。
cd /tmp
curl
を使用して、TomcatWebサイトからコピーしたリンクをダウンロードします。
curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz
Tomcatを/opt/tomcat
ディレクトリにインストールします。 ディレクトリを作成し、次のコマンドを使用してアーカイブを展開します。
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
次に、インストールに適切なユーザー権限を設定できます。
ステップ4:権限を更新する
設定したtomcat
ユーザーは、Tomcatインストールにアクセスできる必要があります。 今すぐ設定します。
Tomcatインストールを解凍したディレクトリに移動します。
cd /opt/tomcat
インストールディレクトリ全体に対するtomcat
グループの所有権を付与します。
sudo chgrp -R tomcat /opt/tomcat
次に、tomcat
グループにconf
ディレクトリとそのすべての内容への読み取りアクセス権を付与し、executeにディレクトリ自体へのアクセス権を付与します。
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 /usr/lib/jvm/java-1.8.0-openjdk-amd64
正しいJAVA_HOME
変数は、最後の列(赤で強調表示)からの出力を取得し、最後に/jre
を追加することで作成できます。 上記の例では、このサーバーの正しいJAVA_HOME
は次のようになります。
JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
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=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
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
ステップ6:ファイアウォールを調整し、Tomcatサーバーをテストする
Tomcatサービスが開始されたので、デフォルトページが使用可能であることを確認するためにテストできます。
それを行う前に、リクエストをサービスに到達できるようにファイアウォールを調整する必要があります。 前提条件に従っている場合、現在、ufw
ファイアウォールが有効になっています。
Tomcatは、ポート8080
を使用して従来の要求を受け入れます。 次のように入力して、そのポートへのトラフィックを許可します。
sudo ufw allow 8080
ファイアウォールを変更すると、WebブラウザでドメインまたはIPアドレスに続いて:8080
に移動することで、デフォルトのスプラッシュページにアクセスできます。
Open in web browserhttp://server_domain_or_IP: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 — Admin User
完了したら、ファイルを保存して閉じます。
デフォルトでは、Tomcatの新しいバージョンは、ManagerアプリとHost Managerアプリへのアクセスをサーバー自体からの接続に制限します。 リモートマシンにインストールするので、この制限を削除または変更することをお勧めします。 これらのIPアドレス制限を変更するには、適切なcontext.xml
ファイルを開きます。
Managerアプリの場合:
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
ホストマネージャーアプリの場合:
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
内部では、IPアドレスの制限をコメントアウトして、どこからでも接続できるようにします。 または、自分のIPアドレスからの接続のみにアクセスを許可する場合は、リストにパブリックIPアドレスを追加できます。
context.xml files for Tomcat webapps
完了したら、ファイルを保存して閉じます。
変更を有効にするには、Tomcatサービスを再起動します。
sudo systemctl restart tomcat
ステップ8:Webインターフェースにアクセスする
ユーザーが作成されたので、WebブラウザーでWeb管理インターフェイスに再度アクセスできます。 もう一度、ブラウザのポート8080に続いてサーバーのドメイン名またはIPアドレスを入力することにより、正しいインターフェイスにアクセスできます。
Open in web browserhttp://server_domain_or_IP:8080
表示されるページは、以前にテストしたときに指定したページと同じである必要があります。
リンクまたはhttp://server_domain_or_IP:8080/manager/html
からアクセスできるマネージャーアプリを見てみましょう。 tomcat-users.xml
ファイルに追加したアカウント資格情報を入力する必要があります。 その後、次のようなページが表示されます。
Webアプリケーションマネージャは、Javaアプリケーションを管理するために使用されます。 ここで、開始、停止、リロード、デプロイ、およびアンデプロイできます。 アプリでいくつかの診断を実行することもできます(つまり、 メモリリークを見つける)。 最後に、サーバーに関する情報はこのページの一番下にあります。
次に、リンクまたはhttp://server_domain_or_IP:8080/host-manager/html/
からアクセスできるホストマネージャーを見てみましょう。
Virtual Host Managerページから、アプリケーションを提供する仮想ホストを追加できます。
結論
Tomcatのインストールが完了しました! これで、独自のJava Webアプリケーションを自由にデプロイできます!
現在、Tomcatインストールは機能していますが、完全に暗号化されていません。 これは、パスワードなどの機密アイテムを含むすべてのデータがプレーンテキストで送信され、インターネット上の他の関係者が傍受して読み取ることができることを意味します。 これを防ぐには、接続をSSLで暗号化することを強くお勧めします。 this guideをたどると、Tomcatへの接続を暗号化する方法を見つけることができます。