Tomcatとは
Java ServletやJavaServer Pages(JSP)を実行するためのWeb Containerです。
さらに、Tomcatは単独でWebサーバとしても機能することが可能です。
オープンソースのソフトウェアであるため、誰でも自由かつ無償で利用・改変・再配布することが出来ます。
※この図ではWebサーバーも利用していますが、その理由についてはまた後ほど説明します。
補足
-
Java Servlet
Javaで書かれた、サーバ上でWebページなどを動的に生成したりデータ処理を行うためのプログラムのこと -
JavaServer Pages(JSP)
HTML内にJavaのコードを埋め込んでおき、Web Serverで動的にWebページを生成してクライアントに返すプログラムのこと
開発環境
- Ubuntu 14.04 LTS
- Tomcat 8.0.33
- JDK 1.8.0
- Apache 2.4.7
必要なソフトウェアをインストール
JDKをインストール
root@vagrant-ubuntu-trusty-64:/# curl -LO -H "Cookie: oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-linux-x64.tar.gz"
root@vagrant-ubuntu-trusty-64:/# tar zxvf jdk-8u77-linux-x64.tar.gz
root@vagrant-ubuntu-trusty-64:/# mkdir /usr/java
root@vagrant-ubuntu-trusty-64:/# mv jdk1.8.0_77 /usr/java/jdk1.8.0_77
root@vagrant-ubuntu-trusty-64:/# vi /etc/profile
# 最終行に追記
export JAVA_HOME=/usr/java/jdk1.8.0_77
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
root@vagrant-ubuntu-trusty-64:/# source /etc/profile
Tomcatをインストール
root@vagrant-ubuntu-trusty-64:/# curl -O http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz
root@vagrant-ubuntu-trusty-64:/# tar zxvf apache-tomcat-8.0.33.tar.gz
root@vagrant-ubuntu-trusty-64:/# mv apache-tomcat-8.0.33 /opt/tomcat8
root@vagrant-ubuntu-trusty-64:/# chown -R tomcat8 /opt/tomcat8
環境変数の設定(省略可能)
Tomcatには環境変数があり、ルート・ディレクトリや、インスタンス、JDKのディレクトリを指定することが出来ます。
CATALINA_HOME
インストールされたTomcatのルートディレクトリを指定する。指定がない場合はTomcatの起動スクリプト(catalina.sh)の親ディレクトリが設定される。
CATALINA_BASE (option)
Tomcatのインスタンスのディレクトリ。指定がない場合は、CATALINA_HOMEとなる。
JAVA_HOME
JDKのホームディレクトリ
指定方法は、こちらの記事が参考になるかと思います。
Tomcatの起動、停止
起動
root@vagrant-ubuntu-trusty-64:/# /opt/tomcat8/bin/startup.sh
Using CATALINA_BASE: /opt/tomcat8
Using CATALINA_HOME: /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME: /usr/java/jdk1.8.0_71
Using CLASSPATH: /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
Tomcat started.
あとは、http://ID_ADDRESS:8080にアクセス
以下の画面が表示されれば、成功
停止
root@vagrant-ubuntu-trusty-64:/# /opt/tomcat8/bin/shutdown.sh
Using CATALINA_BASE: /opt/tomcat8
Using CATALINA_HOME: /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME: /usr/java/jdk1.8.0_71
Using CLASSPATH: /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
バージョン確認
root@vagrant-ubuntu-trusty-64:/# /opt/tomcat8/bin/version.sh
Using CATALINA_BASE: /opt/tomcat8
Using CATALINA_HOME: /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME: /usr/java/jdk1.8.0_71
Using CLASSPATH: /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.33
Server built: Mar 18 2016 20:31:49 UTC
Server number: 8.0.33.0
OS Name: Linux
OS Version: 3.13.0-85-generic
Architecture: amd64
JVM Version: 1.8.0_71-b15
JVM Vendor: Oracle Corporation
Apache(Web server)と連携する
なぜ連携するのか?
Tomcatは一応、Webサーバーとして機能することが出来ます。
ですが、静的なコンテンツの処理が遅い(js,css,jpg 等)ため、静的なコンテンツはより高速なWebサーバーが処理し、動的コンテンツのみをtomcatが処理する方式を取るケースが多いです。
その他には、ApacheなどのWebサーバを1台置いて、Tomcatが搭載されたサーバー(インスタンス)を複数台立てるというようなスケーリングを行うこともWebサーバと連携させる使い方もあります。
連携方法
Apacheのインストール
root@vagrant-ubuntu-trusty-64:/# apt-get install apache2
AJPモジュールを有効化
※ AJPモジュール : Webサーバと相互にやりとりするためのプロトコル,デフォルトのポートは8009
root@vagrant-ubuntu-trusty-64:/# a2enmod proxy_ajp
root@vagrant-ubuntu-trusty-64:/# service apache2 restart
root@vagrant-ubuntu-trusty-64:/home/vagrant# vi /etc/apache2/conf-enabled/proxy_ajp.conf
# 追加
ProxyPass /tomcat8/ ajp://IP-ADDRESS:8009/
root@vagrant-ubuntu-trusty-64:/# a2enmod proxy_ajp
root@vagrant-ubuntu-trusty-64:/# service apache2 restart
あとは、http://ID_ADDRESS/tomcat8/にアクセス
以下の画面が表示されれば、Apache経由でTomcatにアクセス出来ているので成功