Tomcatインストール

##Javaダウンロードとインストール
```
sudo apt update
sudo apt install openjdk-11-jdk
```
##Tomcat専用ユーザー作成
このユーザーはtomcat専用ユーザーで、ログインして何か操作することはない。

```
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
```
###useraddコマンド
|オプション|略の説明|意味|
|----|----|----|
|-m|--create-home|ユーザーのホームディレクトリが存在しない場合、作成する|
|-U|--user-group|ユーザーと同じ名前のグループを作成する|
|-d|--home-dir|ユーザーのホームディレクトリ（通常はユーザー名と同じにする）|
|-s|--shell シェル|ユーザーのログインシェル（フルパスで指定）を指定する（指定しなかった場合、デフォルト設定を用いる）|

* ログインシェル：ログイン直後に動き出すシェル
参考

https://wa3.i-3-i.info/word11274.html


```:Linux‗rootディレクトリにてlsコマンド実行
SampleUser@ik1-111-11111:/$ ls 
bin  boot  cdrom  dev  etc  home  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
```

参考
https://atmarkit.itmedia.co.jp/ait/articles/1811/02/news035.html


##Tomcatダウンロード
```
VERSION=9.0.52
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp
```
###aptとwgetの違い
|コマンド|略|説明|
|----|----|----|
|apt|Advanced Package Tool|Debian系のOSで使用する。dpkg(Debianのパッケージ管理システム)を呼び出す。|
|wget|WebからファイルをGET(ダウンロード)|HTTPやFTP経由のファイル取得を行えるコマンド。再帰的なダウンロードが得意で、ディレクトリなどでも参照先を全てたどることができる。。|

参考
https://qiita.com/pocket8137/items/e8370697927220d3fc3c

```:ダウンロード
SampleUser@ik1-111-11111:/$ wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp
--2021-09-02 20:51:30--  https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz
Resolving www-eu.apache.org (www-eu.apache.org)... 95.216.26.30, 2a01:4f9:2a:1a61::2
Connecting to www-eu.apache.org (www-eu.apache.org)|95.216.26.30|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://downloads.apache.org/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz [following]
--2021-09-02 20:51:31--  https://downloads.apache.org/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz
Resolving downloads.apache.org (downloads.apache.org)... 88.99.95.219, 135.181.214.104, 135.181.209.10, ...
Connecting to downloads.apache.org (downloads.apache.org)|88.99.95.219|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11524133 (11M) [application/x-gzip]
Saving to: ‘/tmp/apache-tomcat-9.0.52.tar.gz’

apache-tomcat-9.0.52.tar.gz             100%[============================================================================>]  10.99M  2.30MB/s    in 4.8s    

2021-09-02 20:51:37 (2.30 MB/s) - ‘/tmp/apache-tomcat-9.0.52.tar.gz’ saved [11524133/11524133]
```
>メモ
>  HyperText Transfer Protocol (HTTP) の 302 Found リダイレクトステータスレスポンスコードは、リクエストされたリソースが一時的に Location で示された URL へ移動したことを示します。ブラウザーはこのページにリダイレクトしますが、検索エンジンはリソースへのリンクを更新しません (「SEO 用語」では、「リンクジュース」が新しい URL に送られなかったと言われます)。
https://developer.mozilla.org/ja/docs/Web/HTTP/Status/302

##解凍後、/opt/tomcatディレクトリへ移動
```
VERSION=9.0.52
sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
```
###tarコマンド
>* 「tar」は、複数のファイルを1つにまとめた“アーカイブファイル”を作成／展開するコマンドです。
* 「アーカイブ（archive）」は「書庫」という意味で、プログラムのソースコードなど、複数の関連するファイル群をまとめて保管したり、配布したりする際に使用します。

>参考
https://atmarkit.itmedia.co.jp/ait/articles/1608/15/news015.html


|オプション|略|説明|
|----|----|----|
|-x|--extract,--get|アーカイブからファイルを抽出する|
|-f|--file=アーカイブ|アーカイブファイル名を指定する|
|-c|--create|新しいアーカイブを作成する|

##シンボリックリンク作成
```
VERSION=9.0.52
sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
```
>###シンボリックリンクとは
Linuxには、ファイルに別名をつけ、異なった名前でファイルにアクセスする仕組みがあります。これをリンクと呼びます。
リンクは2種類あり、ハードリンクとシンボリックリンク（ソフトリンク）が存在します。
ここでは、シンボリックリンクについて説明します。
参考
https://kazmax.zpp.jp/linux_beginner/symbolic_link.html

###ln「Link」コマンド
|オプション|略|意味|
|----|----|----|
|-s|--symbolic|ハードリンクの代わりにシンボリックリンクを作成する|
参考
https://atmarkit.itmedia.co.jp/ait/articles/1605/30/news022.html

##所有者の変更
```
sudo chown -R tomcat: /opt/tomcat
```
###chown「change owner」コマンド
|オプション|略|意味|
|----|----|----|
|-R|--recursive(再帰的)|指定したディレクトリとそのディレクトリ以下のファイルやディレクトリの所有権を再帰的に変更します。|
参考
https://webkaru.net/linux/chown-command/

##実行可能に変更
```
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh
```

参考
https://qiita.com/udonkoneko55/items/73148c25d0184ad96ca7
https://linuxfan.info/post-1486


##サービスとして実行可能に設定
```
sudo nano /etc/systemd/system/tomcat.service
 
<以下、貼り付け>
[Unit]
Description=Tomcat 9 servlet container
After=network.target
 
[Service]
Type=forking
 
User=tomcat
Group=tomcat
 
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
 
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
 
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
 
[Install]
WantedBy=multi-user.target
```
nanoエディタ

|操作|コマンド|
|----|----|----|
|保存|Ctrl +「o」の後Enter|
|終了|Ctrl +「x」の後Enter||

###リロード
```
sudo systemctl daemon-reload
```

###tomcat起動
```
sudo systemctl enable --now tomcat
```


##ファイアウォール 8080番ポート開放
```
sudo ufw allow 8080/tcp
```
注意：さくらVPSのパケットフィルタも開放すること

##tomcat 起動確認
```
http://＜Tomcatが動いているマシンのIP＞:8080
```

参考
https://mebee.info/2020/05/28/post-11921/