CentOS7にTomcat9をインストールする


# 背景
TomcatはJava ServletやJavaServer Pages (JSP) を実行するためのWebコンテナ（サーブレットコンテナ、サーブレットエンジン）です。

2017-09-28現時点で最新版のv9.0.1が公開されていたのでCentos7にインストールしてみました。

http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.1/bin/

# 実行ユーザについて

特にことわりがなければプロンプトで実行ユーザを切り替えてコマンド実行してください。

- # → rootユーザで実行
- $ → 任意のユーザで実行

# 環境

|||
|-----|-----|
|OS| CentOS7.4 x86_64 |
|jdk|java 9 build 9+181|
|Tomcat|Apache Tomcat/9.0.1|


```
$ cat /etc/system-release
CentOS Linux release 7.4.1708 (Core) 
```

```
# java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
```

```
# /opt/tomcat/apache-tomcat-9.0.1/bin/version.sh 
Using CATALINA_BASE:   /opt/tomcat/apache-tomcat-9.0.1
Using CATALINA_HOME:   /opt/tomcat/apache-tomcat-9.0.1
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-9.0.1/temp
Using JRE_HOME:        /
Using CLASSPATH:       /opt/tomcat/apache-tomcat-9.0.1/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-9.0.1/bin/tomcat-juli.jar
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Server version: Apache Tomcat/9.0.1
Server built:   Sep 27 2017 17:31:52 UTC
Server number:  9.0.1.0
OS Name:        Linux
OS Version:     3.10.0-693.2.2.el7.x86_64
Architecture:   amd64
JVM Version:    9+181
JVM Vendor:     Oracle Corporation
```

# 前提

CentOS7のセットアップ、Apacheのインストール、起動まではできている前提です。

![apache2.png](https://qiita-image-store.s3.amazonaws.com/0/2567/42f40586-3d2c-c825-115c-789799f4c6e7.png)





# 手順

## jdkのインストール
現時点でのjdkの最新版であるjdk 9+181を公式サイトからリンクコピーし、wgetでダウンロードしてrpmインストールします。

公式サイト： http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

```
# cd /usr/local/src
# wget http://download.oracle.com/otn-pub/java/jdk/9+181/jdk-9_linux-x64_bin.rpm
# rpm -ivh jdk-9_linux-x64_bin.rpm
```

### Java環境変数の設定

任意のユーザの.bash_profileに下記を書き込んで環境変数を設定します。

```
$ vi .bash_profile
```

```diff:.bash_profile
+ JRE_HOME=/usr/java/default
+ CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.1
+ export JRE_HOME CATALINA_HOME
```

### Java環境変数の読み込み

```
$ source .bash_profile
```

### javaバージョンの確認

```
# java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
```

## Tomcat9のインストール

### tomcatユーザの作成

```
# useradd -s /sbin/nologin tomcat
```

### tomcatのダウンロード

```
$ wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz
```

### アーカイブの展開

```
$ tar -xvzf apache-tomcat-9.0.1.tar.gz 
```

### 展開後のファイルの移動

```
$ sudo mv apache-tomcat-9.0.1 /opt/tomcat/
```

### Tomcat環境変数の設定

任意のユーザの.bash_profileに下記を書き込んで環境変数を設定します。

```
$ vi .bash_profile
```

```diff:.bash_profile
+ JRE_HOME=/usr/java/default
+ CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.1
+ export JRE_HOME CATALINA_HOME
```

### Tomcat環境変数の読み込み

```
$ source .bash_profile
```

### tomcatバージョンの確認

```
# /opt/tomcat/apache-tomcat-9.0.1/bin/version.sh 
Using CATALINA_BASE:   /opt/tomcat/apache-tomcat-9.0.1
Using CATALINA_HOME:   /opt/tomcat/apache-tomcat-9.0.1
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-9.0.1/temp
Using JRE_HOME:        /
Using CLASSPATH:       /opt/tomcat/apache-tomcat-9.0.1/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-9.0.1/bin/tomcat-juli.jar
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Server version: Apache Tomcat/9.0.1
Server built:   Sep 27 2017 17:31:52 UTC
Server number:  9.0.1.0
OS Name:        Linux
OS Version:     3.10.0-693.2.2.el7.x86_64
Architecture:   amd64
JVM Version:    9+181
JVM Vendor:     Oracle Corporation
```

### firewalldの設定

```
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh vnc-server http
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
        
# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
# firewall-cmd --reload
success
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh vnc-server http
  ports: 8080/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
```

### Tomcatの起動

```
# /opt/tomcat/apache-tomcat-8.5.8/bin/startup.sh
```

### ブラウザで確認
http://&lt;ipアドレス&gt;:8080

![tomcat9.png](https://qiita-image-store.s3.amazonaws.com/0/2567/7cec3591-622e-7cc0-bc5b-916f8b59705a.png)

以上