Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

CentOS Linux Tomcat

Linux(CentOS7)にTomcatをインストールする手順について

投稿日:2020年6月10日 更新日:

(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も沢山のミラーから選択してダウンロードする事ができます。

(例)CentOSもミラーサイト作成を歓迎しており、ガイドラインに則って作成できる

目次にもどる

(3-2) tar.gzファイルとは

・英語圏では「tarball」、日本語では別名「アーカイブファイル」とも呼ばれ、複数のファイルを集めて一つのファイルに固めたファイルです。
・プログラムのソースコードなど複数のファイル群を纏め、保管や配布をするための利用します
・拡張子は「.tar」で、それを更に圧縮したものが「.tar.gz」になります。
・tarファイルの解凍は「tar -zxf [tarファイル名]」で行います。

■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”エラーが出た時の対処方法」にて対処方法の例を記載しました

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-CentOS, Linux, Tomcat

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Linux基礎コマンド(第4回) viエディタの操作・ログの取得

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第4弾で、viエディタの使い方を簡単に紹介します。第1弾の記事はこち …

Tomcatを使ったフォーム認証でユーザ情報をデータベース管理する方法

<目次> (1) Tomcatを使ったフォーム認証でユーザ情報をデータベース管理する方法  (1-1) 前提条件  (1-2) STEP1:context.xmlにコネクションプールを設定  (1-3 …

Linux基礎コマンド(第1回) TeraTermログイン・pwd・cd

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第1弾です。 (0)目次&概説 >(1) Linuxのディレクトリ構 …

GDBの使い方をC++のプログラムのデバッグを例にご紹介

  <目次> (1) GDBの使い方をC++のプログラムのデバッグを例にご紹介  (1-1) GDBのデバッグのシナリオ概要(例)  (1-2) GDBのデバッグ手順(例)  (1-3) そ …

Linux:サーバ死活管理スクリプト

システム構築では「運用」の中で死活監視を行いますが、その概要と簡単なLinuxでの例を紹介します。 ●死活監視とは サーバーが止まらずに動いているか?のチェックを行うことです。 最も身近な死活チェック …

  • English (United States)
  • 日本語
Top