Apache tomcat Install してみる、、、

![tomcatimg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433770/8a8aaff8-6cdd-1bb3-5b10-e44a93edde88.png)

# Apache tomcat Install手順
本記事は「tomcat」をインストールする手順を記録しただけの記事です。
実際どう使用するか等はいずれ試しつつ後日まとめますので、今回はこれで勘弁してください。

## なんでtomcat？

サーバ構築ってわかりますか？わたしは正直ハードをイメージしていて
実際アプリケーションをどう動かすのか理解していませんでした。一口にサーバといっても

+ データベースを稼動させるサーバ
+ HTTPを受け付けて、Webアプリケーションを呼び出すサーバ
+ ファイルをためておくためのサーバ

と役割毎に様々あるそうです。ハードなの？ソフトなの？と混乱していた私に、
「典型的なWebシステムを構成するサーバ」を立てていこうか？まずはHTMLを動的に生成するためのServlet コンテナやってみて、いわゆるWebサーバとの動きの違いを実際に触ることで理解しませんか？との師匠の提案。

**ぶっちゃけイメージつきませんでした**が、仕事でもみかける「tomcat」をやろうといわれ、おっしゃやります！といつものテンションで地雷踏み抜きました。（書かなかったけど失敗しまくって時間溶かしました...）
超初期のHTMLを生成する仕掛けとしてtomcatをいじってみたので、今回はその手順を紹介します。

今回作った環境はこんな感じです。

|導入ソフト分類|導入ソフトウェア|
|--|--|
|os | Red Hat Enterprise Linux(RHEL)|
|PP| Apache tomcat|

## 選定理由

### Red Hat Enterprise Linux(RHEL)

実際のシステム開発の現場で最もよく使われるLinuxディストリビューションとして選定。すこしでも実環境に近い状況を作りたいと考えました。

### Apache tomcat
最終的には画面を含めてなんちゃってWebシステムを作ってさわってみることが目的なので、今回はHTTPの受け口になるServlet Containerとしてtomcatとそれを動作させるためのOpen JDKをそれぞれインストールします。ぶっちゃけ、これも「よく使われる」から以外の理由はない！とのこと。

今回を含めた最終的なゴールはこんな感じです。

![web3soh1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433770/d2233c60-37cd-56af-ecbd-9a1fd6659756.png)

## 今回のゴール
1. RHEL環境下にサーブレットコンテナを構築
2. 実際に導入したソフトウェアの動作確認


# 構築作業

では早速、インストールしていきましょう。

## 前提作業
先にRHEL環境を準備してください。過去には有償だったRHELが現在無償利用でてます。
[ｰ>RHELインストール手順 過去記事](https://qiita.com/comugi/items/c9b4914fd04673c19883)
ここからはターミナル（端末）を使用してインストールします。

## 今回の作業はここからです。

### 1. OpenJDKインストール
まずはTomcatを動作させる環境としてOpenJDKを導入します。「JRE でもいいのですが、いろいろくっついてきてお得なJDKを使います」とのこと。JDKをよく知らない状況なので、素直に従います。

#### 1-1 インストールできるJDKを検索

```
sudo dnf search jdk
```
結果はこんな感じに出てきます。
```
＜結果＞
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 2:22:55 時間前の 2022年05月15日 11時41分17秒 に実施しました。
=================================== 名前 & 概要 一致: jdk ===================================
copy-jdk-configs.noarch : JDKs configuration files copier
java-1.8.0-openjdk.x86_64 : OpenJDK 8 Runtime Environment
（略）
jmc.x86_64 : JDK Mission Control is a profiling and diagnostics tool
jmc-core.noarch : Core API for JDK Mission Control
```
この中からVersion11入れたいので、以下の通りコマンドを入力
```
sudo dnf install java-11-openjdk.x86_64 java-11-openjdk-devel.x86_64
```
Install完了すると、「完了しました！」とでてきます。

### 2. Apache tomcatインストール

#### 2-1 インストール媒体取得

wgetでtomcatを取得します。

```
cd /tmp
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz
```

#### 2-2 実行ユーザ追加

慣習的にtomcat ユーザを利用したいので、ユーザー追加します。
```
sudo useradd tomcat
```
idが振られているか確認します
```
sudo id tomcat
```

#### 2-3 期待通りに媒体が取得できてるか確認する。

一応です。ホントに一応。確認せずして次の作業をすると、嵌ったときに大変です。

```
ls -ltr
ls apache*
```

#### 2-4 媒体の解凍

```
gunzip apache-tomcat-10.0.20.tar.gz
tar xvf apache-tomcat-10.0.20.tar
ls -d apache-tomcat-10.0.20
★ディレクトリが存在することを確認
```
gunzipでgzip圧縮を解凍し、tarコマンドでtarからファイルを取り出します。作業中に教えてもらったTipsですが、　tar xvf <tarファイル名> は 引数に「取り出したいファイル」を指定して「そのファイルだけ」取り出すこともできます。


#### 2-5 ディレクトリの移動

/tmp/apache-tomcat-10.0.20のままでは、いろいろ問題があります。tmpディレクトリは「一時的」な保存場所。設定によって削除のタイミングは変わりますが、数日で消去されてしまうため移動の必要があります。そこで、/opt配下に配置しなおします。

```
sudo mv apache-tomcat-10.0.20 /opt/
```
移動できたかの確認
```
ls -dl /opt/apache-tomcat-10.0.20
```
#### 2-6 ディレクトリ・ファイルのオーナー変更！

現在rootで作業しているのでこのままいくとroot出しかプロセスが起動できない超強力Tomcatができちゃいます。
剥き身は超キケンなのでtomatユーザで実行します。そのために、tomcatユーザにファイルのオーナーを変更しておきます。

```
sudo chown -R tomcat. /opt/apache-tomcat-10.0.20/
```

-Rは「再帰的に」の意味。配下のディレクトリとファイルを一括で変更します。

#### 2-7 Tomcat起動

```
sudo su - tomcat
cd /opt/apache-tomcat-10.0.20/bin/
./startup.sh
```

起動確認
```
jps
```
BootStrapが起動していることを確認します。jpsは通常のpsコマンドとは違い、javaのプロセスを一覧してくれるので、便利です。

ブラウザを起動し、以下のURL入力し動作確認

```
http://localhost:8080
```
![2022-05-14 16-31-44 のスクリーンショット.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433770/d09058de-d2ed-8609-0987-e93e938c2f43.png)
とりあえず通った...

#### 2-8 ちょっとした設定変更
さて、デフォルトの設定ではAppManagerなのどの便利機能が使えません。今回はいろいろ覚えることが目的なので、有効にしちゃいましょう。
本番のシステムではデプロイメントマネージャ等別のやり方がありますので、以下設定はあくまでも学習用と捉えてください！
本番環境で以下設定は非常に危険です！


一旦tomcatをシャットダウンします。
```
/opt/apache-tomcat-10.0.20/bin/shutdown.sh
```
tomcat ユーザで設定変更しましょう。

```
vi /opt/apache-tomcat-10.0.20/conf/tomcat-users.xml
```
以下の場所のpasswordを任意に変更、コメントアウトを解除してください。なお、XMLのコメントは &lt;!-- xxxxxxx --&gt; で複数行をまたいでコメントとして扱えるので注意です。

```
<user username="admin" password="admin" roles="manager-gui"/>
<user username="robot" password="adminrobot" roles="manager-script"/>
```
最後に「:wq!」で上書き終了してください。
##### やらかし！
 1. コメントアウト忘れてユーザー設定が通ってなかった
 2. パスワードに＜＞の記号が入っててパスワードとして認識できていなかった。

初心者なので許してください。tomcatでビギナーが「ログインできない！」て騒いでいたら疑ってみてください。

### さいごに感想
慣れてる方にはなんてことない内容だと思います。
しかし。コマンドの意味もわからず、sudo入れる入れないで何度もひっかかり、自分がどこにいるのかもわからず、苦戦すること数時間！！
き、き、きつかったー（泣）今回も師匠はスパルタでした。