AL2023学習メモ③　Tomcat9.0.82導入

# 前置き
学習メモをまとめています。
私と同じ初心者さんの助けになれば幸いです。

# この記事でわかること
1\. Tomcat9.0.82のインストール方法
2\. ログの確認

:::note warn
2024年1月17日現在の情報です。
今後のアップデートで、インストール方法が変更される可能性があります。
:::

# 事前環境
* EC2
    * AL2023（以下、過去投稿したインストール方法の記事を貼っておきます）
        * [OpenJDK17.0.9](https://qiita.com/Pmega1011/items/d91a4c457eb5f147f577)
        * [Apache2.4.58](https://qiita.com/Pmega1011/items/e10cd5297014f89d851f)

# 1\.インストール方法
AL2023のTomcatインストールする方法は**少しだけ**大変です。
私は**15分**ほどかかりました。
一応、Apacheとかと同じ方法で出来なくもないです。
しかし、セキュリティやエラーの観点から余りお勧めできません。
そのため、今回は公式からTomcatのアーカイブをダウンロードします。
**誤作動を起こすかもなので、必ず一行ずつ実行してください。**

```
#tomcat専用ユーザーを作成する。
#セキュリティの観点から、rootユーザーでtomcatを起動するのは危ないため
$sudo useradd -r -s /sbin/nologin tomcat

# アカウントの確認
id tomcat
# 実行結果 tomcatグループのtomcatユーザーがちゃんとあるよって言ってる
uid=992(tomcat) gid=992(tomcat) groups=992(tomcat)

# アカウントの確認２ ログインは出来ないユーザーだよって言ってる
grep tomcat /etc/passwd
# 実行結果
tomcat:x:992:992::/home/tomcat:/sbin/nologin
```


```
#ホームディレクトリ移動
$cd

#公式からアーカイブをダウンロード
#sudo wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat-9.0.82.tar.gz 

#ダウンロードしたパッケージを展開し、一覧で表示する
$sudo tar -zxvf apache-tomcat-9.0.82.tar.gz 
```
tarコマンドはアーカイブを圧縮、展開するコマンドです。
-zxvfオプションについては、以下の記事が参考になります。

https://qiita.com/y-aramak/items/8dc8098698cb0f92116a

```
#ダウンロードしたapache-tomcat-9.0.82ファイルを、/usr/local/srcディレクトリに移動する
$sudo mv apache-tomcat-9.0.82 /usr/local/src/

#シンボリックリンクを作成する（ショートカットみたいなもの）
$sudo ln -s /usr/local/src/apache-tomcat-9.0.82/ /usr/local/src/tomcat

#先ほど作成したtomcatユーザーに、/apache-tomcat-9.0.82、/tomcatの権限を付与
$sudo chown -R tomcat:tomcat /usr/local/src/apache-tomcat-9.0.82
$sudo chown -R tomcat:tomcat /usr/local/src/tomcat

#権限が変更されたか確認 → 必須ではない
$cd /usr/local/src
$ls -l
#実行結果（下記のような表示があれば成功）
drwxr-xr-x. 9 tomcat tomcat 16384  1月 11 02:37 apache-tomcat-9.0.82
lrwxrwxrwx. 1 tomcat tomcat    36  1月 11 02:31 tomcat -> /usr/local/src/apache-tomcat-9.0.82/
```
ここまで来たら、**あと少し**です。
次は、いよいよユニットファイルの作成を行います。
ユニットファイルとは、サービスの設定ファイルだと考えて頂ければ。

https://tex2e.github.io/blog/linux/create-my-systemd-service

```
#ユニットファイルをtomcat.serviceと言う名前で、"/etc/systemd/system/"に作成し、エディタ起動
$sudo vi /etc/systemd/system/tomcat.service

#以下をエディタに記述
#（「I」でインサートモード、「Esc」でインサート終了、「:w」で保存、「:q」）

[Unit]
Description=Tomcat Web Server
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="CATALINA_BASE=/usr/local/src/tomcat"
Environment="CATALINA_HOME=/usr/local/src/tomcat"
Environment="CATALINA_PID=/usr/local/src/tomcat/temp/tomcat.pid"
ExecStart=/usr/local/src/tomcat/bin/startup.sh
ExecStop=/usr/local/src/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
```
```
#ユニットファイルの読み込み（systemdに変更を反映させる）
#daemon=デーモンとは、常駐プログラムのこと。
$sudo systemctl daemon-reload

#ユニットファイルの有効化（自動起動設定を有効にする）
$sudo systemctl enable tomcat.service
```
さて、**最後**にbash_profileを編集します。

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

```
# エディタで .bash_profile ファイル開く
$sudo vi ~/.bash_profile

# エディタに以下の行を最終行に追加する
（"#"がつくと、コメントアウトされてしまうため、下記のままコピー）
export CATALINA_HOME=/usr/local/src/tomcat

# bash_profileシェルを実行する
$source ~/.bash_profile
```
それでは、**tomcatを起動**しましょう
```
#tomcatの自動起動、有効化
$sudo systemctl enable tomcat.service

#tomcatを起動
$sudo systemctl start tomcat.service

#tomcatの状態確認
$sudo systemctl status tomcat.service
#実行結果
 tomcat.service - Tomcat Web Server
     Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; preset: disabled)
     Active: active (running) since Wed 2024-01-17 19:45:26 JST; 4min 42s ago
```
起動を確認できたので、**接続確認**、**テストページを表示**してみましょう
```
#接続確認
$curl -s http://localhost:8080 | grep title
#実行結果
<title>Apache Tomcat/9.0.82</title>
```
**テストページの表示方法**
URL:http://[EC2パブリックIPv4 アドレス]:8080で、以下が表示されたら成功です。
お疲れ様でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584385/9dfbaf8b-b43e-8208-2588-2da3a5f43dee.png)

# 2\. ログの確認
tomcatのログは、標準で
"/usr/local/src/apache-tomcat-9.0.82/logs" ディレクトリ配下に格納されています。
```
#ログファイルはrootユーザーで確認できるので、ユーザー切り替え
$sudo su
#ディレクトリ移動
$de /usr/local/src/apache-tomcat-9.0.82/logs

#一覧表示
$ls
#表示結果（一部省略）
catalina.2024-01-11.log   host-manager.2024-01-12.log  localhost.2024-01-14.log             
manager.2024-01-11.log　　localhost_access_log.2024-01-15.txt　　catalina.out
```
|ログ  |内容|
|----- |---|
|catalina.日付.log |日付のtomcatのログ 
|catalina.out|起動してから今までのtomcatのログ
|host-manager.日付.log|GUI管理ツールのログ
|manager.日付.log|GUI管理ツールのログ|
|localhost.日付.log|Webアプリケーションのログ|
|localhost_access_log.日付.text|tomcatのアクセスログ|

# 後書き
以上がTomcatをインストールしてから、実行するまでの手順です。
こうやって記事を書いてみると、やること多いですね。
セキュリティ面を気にするなら更にやることが多いらしいので、根気強く頑張りたいです。