(0)目次&概説
(1) 記事の目的/前提
(2) 実施手順
(2-1) Tomcat用ユーザ/グループ作成
(2-2) 資源のダウンロード
(2-3) 資源の解凍
(2-4) 資源に必要権限を付与
(2-5) Tomcatサービスの設定
(2-6) Tomcatサービスの起動
(2-7) firewalldによるポート開放
(2-8) ウェブマネジメントIFの設定
(2-9) Eclipseとの紐づけ設定
(3) 用語説明
(3-1) ミラーサイトとは?
(3-2) tar.gzファイルとは
(4) エラー対応
(4-1) echoで「$CATALINA_HOME」が表示されない
(4-2) Unknown version of Tomcat was specified
(1) 記事の目的/前提
目的は、RHEL7系OS(今回はCentOS7)において、Tomcatをインストールする手順を紹介することです。TomcatはオープンソースのWebサーバで、Javaの動的Webプロジェクトをホストするために設計されています。
<前提条件>
①JDKのインストールが済んでいること
②Eclipseのインストールが済んでいること
前提を満たしていない場合は下記などを参考にインストールお願いします。
https://rainbow-engine.com/linux-eclipse-install/
(2) 実施手順
(2-1) Tomcat用ユーザ/グループ作成
最初にTomcat用のグループやユーザを作成します。ここで作成したものに、TomcatのRead/Write/Execute権限などを付与していきます。
(2-1-1) グループの作成
$ sudo groupadd tomcat
(図211)
(2-1-2) ユーザーの作成
・Tomcat用の新しいユーザーを作成します。
・ログインしないアカウント(サービス用アカウント)のため「/bin/nologin」シェルを指定します。
・「-g」オプションでTomcatグループのメンバーに追加しています。
・「-d」オプションでホームディレクトリの指定を行っています。
$ sudo useradd -M -s /bin/nologin -g [group name] [user name]
(例)
$ sudo useradd -M -s /bin/nologin -g tomcat -d /usr/local/src tomcat
(図212)
(2-1-3) ユーザの作成確認
ユーザが正しく作成されたかチェックするためにidコマンドで確認します。
$ id tomcat
(図213)
(2-2) 資源のダウンロード
(2-2-1) 資源リンクの取得
Tomcatの資源を配布しているミラーサイト等にアクセスし、最新のtar.gzファイルの資源のパス(リンク先)をコピーします(※下記のサイトの「2-2」を参照)
https://rainbow-engine.com/linux-tomcat-install/
(2-2-2) 資源のダウンロード
Tomcatをインストール予定のディレクトリに移動します。
(パスは任意のディレクトリ可、下記は一例)
$ cd /usr/local/src/
wgetコマンドで先ほどコピーしたURLを指定し、Tomcatの「tar.gz」ファイルをダウンロードします(カレントディレクトリに資源がダウンロードされる)。
$ sudo wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-8/v8.5.55/bin/apache-tomcat-8.5.55.tar.gz
(図222)
(備考)wgetが使えない場合
もしwgetコマンドが使えない場合はyumコマンドでインストールを試みると使えるようになる可能性があります。
$ sudo yum install wget
(2-3) 資源の解凍
tarコマンドで解凍を行います。各オプションの意味については「(3-2) tar.gzファイルとは」にて説明しています。
(構文)「X.XX」はバージョン番号です
$ sudo tar -xvzf apache-tomcat-8.X.XX.tar.gz -C [Your install directory]
(例)
$ sudo tar -xvzf apache-tomcat-8.5.55.tar.gz -C /usr/local/src
(図230)
(2-4) 資源に必要権限を付与
(2-4-1) Tomcatグループの権限付与
・「tomcatグループ」に対してインストールディレクトリ全体の権限を付与します。
・「-R」オプションは「再帰的に」の意味で指定したディレクトリだけでなく、その配下全てに対しても変更が適用されます
(構文)
$ sudo chgrp -R tomcat [Your install directory]
(例)
$ sudo chgrp -R tomcat /usr/local/src
(図241)
chgrpの前後でディレクトリの所有グループが変化しています。「-R」を付けているので配下も全て変更されています。
(2-4-2) Tomcatユーザの権限付与
・「tomcatユーザ」に対してCATALINA_HOME配下のconfディレクトリに対してパーミッションの設定を行います(g+r=グループに読取権限、g+xグループに実行権限)
$ sudo chmod -R g+r conf $ sudo chmod g+x conf
・「tomcatユーザ」に対して各種ディレクトリの権限を与えます(webapps/ work/ temp/ logs/)
$ sudo chown -R tomcat webapps/ work/ temp/ logs/
(図242)
(2-5) Tomcatサービスの設定
・Tomcatをサービスとして起動したいため、TomcatのSystemd「ユニットファイル」を作成します。
・CentOS7からはサービス管理マネージャとしてSystemdが導入されており、「ユニットファイル」はその設定ファイルになります。
(2-5-1) ユニットファイルの作成
ユニットファイルは「XXXX.service」という名前で作成します。XXXXの箇所は作成するサービスの名前を付与します。今回はtomcatのサービスなので「tomcat.service」としています。
$ sudo vi /etc/systemd/system/tomcat.service
ユニットファイルの中身の記載例を以下に紹介します。19行目以降のTomcat関連など、比較して不足する部分があれば追加します。
# Systemd unit file for tomcat [Unit] Description=Apache Tomcat Web Application Container After=syslog.target network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/jre Environment=CATALINA_PID=[Tomcat Home Directory]/temp/tomcat.pid Environment=CATALINA_HOME=[Tomcat Home Directory] Environment=CATALINA_BASE=[Tomcat Home Directory] Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom' ExecStart=[Tomcat Home Directory]/bin/startup.sh ExecStop=/bin/kill -15 $MAINPID User=tomcat Group=tomcat UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target
(図251)
(2-5-2) サービス設定の再読込み
$ sudo systemctl daemon-reload
(図252)
(2-6) Tomcatサービスの起動
(2-6-1) サービスの起動
$ sudo systemctl start tomcat
(2-6-2) サービスの起動確認
$ sudo systemctl status tomcat
(2-6-3) サービスの自動起動設定(任意)
OSの起動時にTomcatを自動起動させたい場合に設定します。
$ sudo systemctl enable tomcat
(図261)start/status
(2-7) firewalldによるポート開放
次にfirewalldの設定で、Tomcatがhttp通信に使用するポート番号8080を解放し、外部から接続可能にします。
①8080ポートの開放
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
(図291)
②設定の反映
sudo firewall-cmd --reload
(図292)
③デフォルトページの疎通確認
ここまで出来たら、Tomcatのデフォルトページが表示できるはずなので、次のURLをブラウザから入力してTomcatのページが表示されるか?をチェックします。
http://[ホスト名]:8080/
(図293)
(2-8) ウェブマネジメントIFの設定
Tomcatのホーム画面から利用できるいくつかのツール「Manager App」や「Host Manager」などにログインできるようにするための設定です。
(2-8-1) ツールのユーザ設定を編集
ログイン可能なユーザを定義します。
$ sudo vi /usr/local/src/apache-tomcat-8.5.55/conf/tomcat-users.xml
(例)「admin」というユーザを登録する場合の例
<tomcat-users> <user username="admin" password="password" roles="manager-gui,admin-gui"/> </tomcat-users>
(図271)
(2-8-2) ツールへの外部アクセス許可
デフォルトでは設定ファイル内にて接続可能なIPアドレスを制限しているため、それを無効化(コメントアウト)する手順です。
①ホームディレクトリに移動
ログイン可能なユーザを定義します。
$ cd $CATALINA_HOME
(図272)①
②host-managerの設定
下記のviエディタコマンドで”host-manager”の設定ファイル(context.xml)を編集します。
$ sudo vi ./webapps/host-manager/META-INF/context.xml
(図272)②
③managerの設定
下記のviエディタコマンドで”manager”の設定ファイル(context.xml)を編集します。
$ sudo vi ./webapps/manager/META-INF/context.xml
(図272)③
④Tomcat再起動
$ sudo systemctl restart tomcat
(図272)④
(2-9) Eclipseとの紐づけ設定
ここではEclipseとTomcatを紐付けする事で、JSP/Servletなどの動的Webアプリをブラウザ等から参照できるようにするための最終準備を行います。
①メニュー画面を開く
メニューバー「Window」→「Preferences」→左ペイン「Server」→「Runtime Environment」の順番で開きます。
(図281)
②実行環境のバージョン選択
「Add」ボタンを押下し、自身がインストールしたTomcatのバージョンを選択します(※私の場合はTomcat v8.5を選択)。
(図282)
③Tomcatのパス指定
次の画面でTomcatのインストールディレクトリを指定します(※環境変数「CATALINA_HOME」で設定しているディレクトリ)。指定できたら「Apply and Close」で設定を反映します。
(図283)
④サーバの追加
先ほど登録したTomcatを実際に使えるように追加をします。下ペインの「Servers」タブで「…Click this link to create a new server」と書かれた青いリンクをクリックします。
(図284)
⑤サーバの選択
ご自身がインストールしたTomcatのバージョンに合わせて選択します。
(図285)
⑥Tomcatとプロジェクトの紐づけ設定
次の「Add and Remove」画面にてTomcatサーバに追加するプロジェクトを選択します。
(図286)
⑦Tomcatの起動
下ペインの「Servers」タブに先ほど追加したTomcatが表示されたら、右クリックで「Start」(起動)します。
(図287)
ここまで完了すると作成したJSPファイルがブラウザから照会できるようになります。
(3) 用語説明
(3-1) ミラーサイトとは?
あるウェブサイトの内容を一部or全部含んだサイトです。アクセスの集中による負荷分散を防ぐ目的で作成されます。今回のTomcatも沢山のミラーから選択してダウンロードする事ができます。
(3-2) tar.gzファイルとは
■tarオプション | ■説明 |
「-f」 |
アーカイブファイル名を指定するためのオプションです |
「-v」 |
進捗を表示するためのオプションです |
「-x」 |
「.tar」の中身を抽出するオプションです |
「-z」 |
「gzip」形式で圧縮、「gzip」形式の解凍利用します(拡張子=「tar.gz」または「tgz」) |
「-C」 |
カレントディレクトリを指定したディレクトリに変更してから実行します |
「–strip-components=1」 |
展開時に作成される親ディレクトリを作成せずに展開するオプションです。例えば「apache-tomcat-8.5.55.tar.gz」を展開すると「apache-tomcat-8.5.55」というディレクトリが作成されますが、そのディレクトリを作らずに展開を行います(全ての展開ファイルが1階層ずつ上になるイメージ) |
(4) エラー対応
(4-1) echoで「$CATALINA_HOME」が表示されない
(4-1-1) 事象
環境変数「$CATALINA_HOME」がechoしても表示されなかった。
$ echo $CATALINA_HOME
(4-1-2) 原因
・原因はサービスとしてTomcat起動する設定(5章の内容)をしていなかったためと推定しています。
・本来、環境変数の設定もサービスファイルの中で設定するものですが、それを行っていなかったので、代わりに環境変数は「/etc/profile」に記載しているのみでした(下記記事の「(2-4) Tomcat動作のためのパス設定」)
https://rainbow-engine.com/linux-tomcat-install/
・しかし「/etc/profile」はユーザがログインした時に読み込まれるものであり「tomcat」のユーザはサービスユーザ(ログオンしない)ため、設定が反映されなかったと推定。
・またTomcatの起動もCentOS7の方式に則ってサービスとしては行っておらず、$CATALINA_HOME/bin配下の「startup.sh」で行っていました。
/usr/local/src/apache-tomcat-8.5.42/bin/startup.sh
(4-1-3) 対策
TomcatをCentOS7の作法(systemd)に従いサービスとして設定/起動(⇒本記事リンク(2-5)、リンク(2-6))する事で解決すると推定されます(環境変数や起動はサービスとして設定/実施する事により上記の問題を解消する)
(4-2) Eclipseの”Unknown version of Tomcat was specified”エラー
(4-2-1) 事象
EclipseからTomcatを追加(紐付け)しようとした際に”Unknown version of Tomcat was specified”エラーが出て先に進めない。
(図421)
⇒別記事「Eclipseで”Unknown version of Tomcat was specified”エラーが出た時の対処方法」にて対処方法の例を記載しました