Ubuntu 14.04 LTSにTomcatを導入する

## Tomcatとは
Java ServletやJavaServer Pages(JSP)を実行するためのWeb Containerです。
さらに、Tomcatは単独でWebサーバとしても機能することが可能です。
オープンソースのソフトウェアであるため、誰でも自由かつ無償で利用・改変・再配布することが出来ます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/73659/93316e42-ce43-8779-96f2-412988cb6bb0.png" height="300px">

※この図では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のホームディレクトリ

指定方法は、[こちら](http://qiita.com/hidekuro/items/119317f826253326e490#2-5 )の記事が参考になるかと思います。

## 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](http://localhost:8080)にアクセス
以下の画面が表示されれば、成功

<img src="https://qiita-image-store.s3.amazonaws.com/0/73659/5fc6c536-841b-eda8-5994-a3bfe6a6959d.png" height="400px">
 
### 停止
```
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/](http://localhost/tomcat8/)にアクセス
以下の画面が表示されれば、Apache経由でTomcatにアクセス出来ているので成功


<img src="https://qiita-image-store.s3.amazonaws.com/0/73659/5fc6c536-841b-eda8-5994-a3bfe6a6959d.png" height="400px">


### 参考資料
[UbuntuにおけるTomcatの覚え書き](http://qiita.com/hidekuro/items/119317f826253326e490)

[Tomcat 8 : JAVAアプリケーションサーバー](http://www.server-world.info/query?os=Ubuntu_14.04&p=tomcat8)

[Why use Apache Web Server in front of Glassfish or Tomcat?](http://stackoverflow.com/questions/5122345/why-use-apache-web-server-in-front-of-glassfish-or-tomcat)