Cent OS 7上でApache/Tomcat開発環境を構築する

# はじめに
Linuxサーバ環境として定番のCentOS7上に、[Apache Tomcat 9](https://tomcat.apache.org/index.html)が動作するWebサーバ環境を構築していきたいと思います。

この記事で紹介するのは以下の環境構築です。
- Java 8 (OpenJDK / OracleJDK)
- Apache Tomcat 9 (on Apache 2.4)

#### 更新履歴
2018.6.19 Tomcat 9 向けに少し追記

#### 前回までの記事はこちら
前回までの記事で、GCP上にCentOS開発サーバを構築する手順をまとめていますので、併せてお読みください。

* [GCPに共通鍵を追加する手順まとめ](https://qiita.com/ariaki/items/e225b815924d37bc19d5)
* [GCP Compute Engineを使ってLinuxサーバを始める](https://qiita.com/ariaki/items/1d4dbfeb41a4080a3f66)
* [Cent OS 7開発用サーバを初期設定する](https://qiita.com/ariaki/items/d84a651427f418c5103e)
* [Cent OS 7上でApache/PHP開発環境を構築する](https://qiita.com/ariaki/items/2ec627a7567437f893ee)

# インストール手順

## 作業方針
1. 可能な部分はパッケージマネージャyumを使います。
2. できる限り最新版にするため公式パッケージをインストールします。
3. Apache Tomcat単体ではなく、HTTPフロントサーバとしてApacheを使用します。
4. JVM/JDKはOracle社のものを使います。

### 事前準備
本手順ではリモートファイルのダウンロードに`wget`を使用しています。
必要に応じて先にインストールします。

```
yum -y install wget
```

## Apache 2.4インストール
この項目は前回と同様の手順になりますので、以下をご参照ください。
[Cent OS 7上でApache/PHP開発環境を構築する](https://qiita.com/ariaki/items/2ec627a7567437f893ee#apache-24%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

## JDKインストール

### OpenJDKを使用する場合
以下のコマンドでJDKをインストールします。

```
yum install java-1.8.0-openjdk-devel
```

### OracleJDKを使用する場合

#### ダウンロード
まず、以下URLよりLinux x64向けの最新版パッケージ（jdk-8uxxx-linux-x64.tar.gz）をローカルにダウンロードしてください。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#### プログラム配置
以下の手順では、Java8u171を元に説明しますので、適宜バージョン番号を読み替えてください。

```
mkdir /usr/java/
cd /usr/java/
tar zxf /path/to/jdk-8u171-linux-x64.tar.gz
ln -s jdk1.8.0_171 latest
echo -e "export JAVA_HOME=/usr/java/latest\nPATH=\$PATH:\$JAVA_HOME/bin" > /etc/profile.d/java.sh
source /etc/profile.d/java.sh
```

#### 実行パス設定
デフォルトでどのjavaコマンドを起動するか、alternativesコマンドを使って設定します。

```
alternatives --install /usr/bin/java java /usr/java/latest/bin/java 9999
alternatives --config java
alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 9999
alternatives --config javac
```

設定が完了したら以下のコマンドで、先ほどインストールしたバージョンが実行されるか確認しましょう。

```
java -version
javac -version
```

## Apache Tomcat 9 インストール
Apache Tomcatも同様に最新版を公式サイトからダウンロードします。

### ダウンロードと展開
以下の例では現在の最新版Apache Tomcat 9.0.8をダウンロードしますので、適宜読み替えてください。
今回のインストール先は"/usr/tomcat9"とします。

```
cd /usr/local/src
wget http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz
tar zxf apache-tomcat-9.0.8.tar.gz
mv apache-tomcat-9.0.8 /usr/tomcat9
```

### 基本設定
以下のコマンドを使い、環境変数を設定しましょう。

```
echo -e "export CATALINA_HOME=/usr/tomcat9\nexport CATALINA_BASE=/usr/tomcat9" > /etc/profile.d/tomcat.sh
source /etc/profile.d/tomcat.sh
```

### 動作確認
以下のコマンドでバージョン情報と実行JVM環境を確認する事ができます。

```
/usr/tomcat9/bin/version.sh 
```

実行結果が以下のようになるのを確認しましょう。

```
Using CATALINA_BASE:   /usr/tomcat9
Using CATALINA_HOME:   /usr/tomcat9
Using CATALINA_TMPDIR: /usr/tomcat9/temp
Using JRE_HOME:        /
Using CLASSPATH:       /usr/tomcat9/bin/bootstrap.jar:/usr/tomcat9/bin/tomcat-juli.jar
Server version: Apache Tomcat/9.0.8
Server built:   Apr 27 2018 19:32:00 UTC
Server number:  9.0.8.0
OS Name:        Linux
OS Version:     3.10.0-862.3.2.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_171-b10
JVM Vendor:     Oracle Corporation
```

### ユーザ作成
以下のコマンドで、Apache Tomcatを実行するためのユーザを作成します。

```
useradd -M -d /usr/tomcat9 tomcat
chown -R tomcat:tomcat /usr/tomcat9
```

### 自動起動設定
以下のコマンドでsystemctl起動スクリプトを手動生成します。

```
echo "[Unit]
Description=Apache Tomcat Servlet Container
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=CATALINA_BASE=/usr/tomcat9
Environment=CATALINA_HOME=/usr/tomcat9
ExecStart=$CATALINA_HOME/bin/startup.sh
ExecStop=$CATALINA_HOME/bin/shutdown.sh
ExecReStart=$CATALINA_HOME/bin/shutdown.sh;$CATALINA_HOME/bin/startup.sh
KillMode=none

[Install]
WantedBy=multi-user.target
" > /usr/lib/systemd/system/tomcat9.service
```

起動/終了は以下のようなコマンドで行います。

```
# 起動
systemctl start tomcat9
# 終了
systemctl stop tomcat9
# 再起動
systemctl restart tomcat9
```

設定完了後は以下コマンドで自動起動を設定します。

```
systemctl enable tomcat9
```

## Apache → Tomcat連携設定
ApacheからTomcatへリクエストを受け渡すには、**リバースプロキシ**を設定する必要があります。

以下は"/"以下の全リクエストをTomcatに引き渡す設定例です。

```
echo "ProxyPass / ajp://localhost:8009/" > /etc/httpd/conf.d/proxy.conf
```

上記が完了したら、設定を反映するためにApacheを再起動しましょう。

```
systemctl restart httpd
```

上記の手順でTomcatの初期インストールは完了です。