Ubuntu 19.10 Eoan Ermine に Apache Tomcat 9 をインストールして Hello World

## Apache Tomcat 9 をインストール

tomcat9 パッケージをインストールする。

```
$ sudo apt install tomcat9
```

依存関係で tomcat9-common や libtomcat9-java パッケージ等もインストールされる。

```
$ dpkg -l | grep tomcat
ii  libtomcat9-java                      9.0.24-1                               all          Apache Tomcat 9 - Servlet and JSP engine -- core libraries
ii  tomcat9                              9.0.24-1                               all          Apache Tomcat 9 - Servlet and JSP engine
ii  tomcat9-common                       9.0.24-1                               all          Apache Tomcat 9 - Servlet and JSP engine -- common files
```

Apache Tomcat 9 が起動しているか curl 等で確認できる。

```
$ curl http://localhost:8080/
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Apache Tomcat</title>
</head>

<body>
<h1>It works !</h1>
(以下略)
```

トップページは /var/lib/tomcat9/webapps/ROOT ディレクトリにある。

```
$ tree /var/lib/tomcat9/webapps/
/var/lib/tomcat9/webapps/
└── ROOT
    ├── META-INF
    │   └── context.xml
    └── index.html
```

```
$ ls -lR /var/lib/tomcat9/webapps/
/var/lib/tomcat9/webapps/:
合計 4
drwxr-xr-x 3 root root 4096  1月 19 12:56 ROOT

/var/lib/tomcat9/webapps/ROOT:
合計 8
drwxr-xr-x 2 root root 4096  1月 19 12:25 META-INF
-rw-r--r-- 1 root root 1899  1月 19 12:56 index.html

/var/lib/tomcat9/webapps/ROOT/META-INF:
合計 4
-rw-r--r-- 1 root root 49  1月 19 12:25 context.xml
```

## Hello World な Web アプリケーションをデプロイ

webapps 以下に hello ディレクトリを作成して一般ユーザーアカウント用の権限を設定。

```
$ sudo mkdir /var/lib/tomcat9/webapps/hello
$ sudo chown hoge:hoge /var/lib/tomcat9/webapps/hello
```

Hello World な JSP ファイルを /var/lib/tomcat9/webapps/hello/index.jsp に設置。

```jsp
<%@ page contentType="text/html; charset=utf-8" %><html><body>
Hello JSP World!<br>
java.version: <%= System.getProperty("java.version") %><br>
java.vm.name: <%= System.getProperty("java.vm.name") %><br>
</body></html>
```

curl 等で動作確認。

```
$ curl http://localhost:8080/hello/
<html><body>
Hello JSP World!<br>
java.version: 11.0.5<br>
java.vm.name: OpenJDK 64-Bit Server VM<br>
</body></html>
```

## Apache Tomcat 9 の起動と停止

systemd に登録されている tomcat を確認するとユニット名は tomcat9 になっている。

```
$ systemctl list-unit-files --type=service | grep tomcat
tomcat9.service                        enabled    
```

systemctl start tomcat9 で Tomcat 9 を起動できる。

```
$ sudo systemctl start tomcat9
```

systemctl stop tomcat9 で Tomcat 9 を停止できる。

```
$ sudo systemctl stop tomcat9
```

systemctl restart tomcat9 で Tomcat 9 を再起動できる。

```
$ sudo systemctl restart tomcat9
```

## tomcat9 パッケージのファイル一覧

dpkg -L コマンドで確認できる。
設定ファイル等の場所もこれでわかる。

```
$ dpkg -L tomcat9
/.
/etc
/etc/cron.daily
/etc/cron.daily/tomcat9
/etc/logrotate.d
/etc/rsyslog.d
/etc/rsyslog.d/tomcat9.conf
/etc/tomcat9
/etc/tomcat9/Catalina
/etc/tomcat9/policy.d
/etc/tomcat9/policy.d/01system.policy
/etc/tomcat9/policy.d/02debian.policy
/etc/tomcat9/policy.d/03catalina.policy
/etc/tomcat9/policy.d/04webapps.policy
/etc/tomcat9/policy.d/50local.policy
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/tomcat9.service
/usr
/usr/lib
/usr/lib/sysusers.d
/usr/lib/sysusers.d/tomcat9.conf
/usr/lib/tmpfiles.d
/usr/lib/tmpfiles.d/tomcat9.conf
/usr/libexec
/usr/libexec/tomcat9
/usr/libexec/tomcat9/tomcat-start.sh
/usr/libexec/tomcat9/tomcat-update-policy.sh
/usr/share
/usr/share/doc
/usr/share/doc/tomcat9
/usr/share/doc/tomcat9/copyright
/usr/share/tomcat9
/usr/share/tomcat9/default.template
/usr/share/tomcat9/etc
/usr/share/tomcat9/etc/catalina.properties
/usr/share/tomcat9/etc/context.xml
/usr/share/tomcat9/etc/jaspic-providers.xml
/usr/share/tomcat9/etc/logging.properties
/usr/share/tomcat9/etc/server.xml
/usr/share/tomcat9/etc/tomcat-users.xml
/usr/share/tomcat9/etc/web.xml
/usr/share/tomcat9/logrotate.template
/usr/share/tomcat9-root
/usr/share/tomcat9-root/default_root
/usr/share/tomcat9-root/default_root/META-INF
/usr/share/tomcat9-root/default_root/META-INF/context.xml
/usr/share/tomcat9-root/default_root/index.html
/var
/var/cache
/var/cache/tomcat9
/var/lib
/var/lib/tomcat9
/var/lib/tomcat9/lib
/var/lib/tomcat9/webapps
/var/log
/var/log/tomcat9
/usr/share/doc/tomcat9/README.Debian
/usr/share/doc/tomcat9/changelog.Debian.gz
/var/lib/tomcat9/conf
/var/lib/tomcat9/logs
/var/lib/tomcat9/work
```

## 参考資料

- [Ubuntu – eoan の tomcat9 パッケージに関する詳細](https://packages.ubuntu.com/eoan/tomcat9)
- [Apache Tomcat 9 \(9\.0\.30\) \- Documentation Index](https://tomcat.apache.org/tomcat-9.0-doc/)