Rainbow Engine

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

CentOS Linux Tomcat

Tomcatのサービスが起動しない場合の想定原因と対処(Linux系OSの例)

投稿日:2021年3月13日 更新日:

<目次>

(1) Tomcatのサービスが起動しない場合の想定原因と対処(Linux系OSの例)
 (1-1) 発生状況・エラーメッセージ
 (1-2) 原因
 (1-3) 対処法

(1) Tomcatのサービスが起動しない場合の想定原因と対処(Linux系OSの例)

Tomcatのサービスを起動を行った際にエラーで起動できなかったケースにおいて、考えられる原因と対処方法について書いていきます。

(1-1) 発生状況・エラーメッセージ

■エラーメッセージ

Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details.

(図111)

メッセージに従って「journalctl -xe」(systemdが収集したログを見るコマンド)でログを確認するも、明確にエラーの原因を特定できるような記述は見つけられませんでした。

(図112)

 
■発生状況
CentOS7にTomcat8.5をインストールする際に、Tomcatのサービスを下記コマンドで起動した際に発生しました。
$ sudo systemctl start tomcat

 

目次にもどる

(1-2) 原因

サービスが起動しない要因は1つではなく、様々考えられると思いますが、その中でも今回は「設定の不備」により起動しないケースに焦点を当てて、確認した方が良いと思われる点をご紹介します。

【確認ポイント】「ユニットファイル」内のパスの記述は正しいか?

CentOS7等の場合、Tomcat用に「tomcat.service」等の名前でユニットファイルを作成していると思いますが、その中で数か所パスを記述する箇所があると思います。

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]
ExecStart=[Tomcat Home Directory]/bin/startup.sh

これらのパスのパスが誤っていると、正常に起動できない原因となります。

目次にもどる

(1-3) 対処法

上記で述べたパスがあっているか?を確認していきます。

確認①:JAVA_HOME

Environment=JAVA_HOME=/usr/lib/jvm/jre

まずはJAVA_HOME(JREがインストールされているパス)ですが、これはJavaのバージョンによっていくつかの選択肢があるケースがあります(環境によって異なる場合あり)。

lrwxrwxrwx   1 root root   21 May 29  2020 jre -> /etc/alternatives/jre
lrwxrwxrwx   1 root root   27 May 12  2020 jre-1.7.0 -> /etc/alternatives/jre_1.7.0
lrwxrwxrwx   1 root root   35 May 12  2020 jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk
lrwxrwxrwx   1 root root   54 May 12  2020 jre-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64 -> java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre
lrwxrwxrwx   1 root root   27 May 12  2020 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx   1 root root   35 May 12  2020 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx   1 root root   51 May 12  2020 jre-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64 -> java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre
lrwxrwxrwx   1 root root   29 May 12  2020 jre-openjdk -> /etc/alternatives/jre_openjdk

(図131)

どれを指定すべきか?の判断は「ご自身のTomcatのインストールを、どの程度Javaのバージョンと密結合させるか?」によってくるもので、明確にどれを選ぶべきか?は一概に言えないものになります。

例えば、Java7を使うなら「jre-1.7.0」を指定し、Java8の中の更に細かいバージョンも指定したいなら「jre-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64」を選択する、といった具合です。

各選択肢の意味はおおよそ以下の通りです。
(表)

jre ・多くの場合、アクティブなJavaのバージョンへのシンボリックリンクである事が多い
・実態は下記パスへのシンボリックリンクである(環境やバージョンにより異なる場合あり)
/etc/alternatives/jre
・JREのみでJDKは含まれません。
・実際に「jre-1.7.0」のリンク先ディレクトリとの差分を比較した結果、”jjs”という現在非推奨のJavaScriptのライブラリが含まれている点以外はおおよそ同じ印象でした。
jre-1.7.0 ・Java7のJRE1.7.0を指定するシンボリックリンクです。
・実態は下記パスへのシンボリックリンクである(環境やバージョンにより異なる場合あり)
/etc/alternatives/jre_1.7.0
・JREのみでJDKは含まれません。
jre-1.7.0-openjdk ・Java7のJRE1.7.0を指定するシンボリックリンクです。
・実態は下記パスへのシンボリックリンクである(環境やバージョンにより異なる場合あり)
/etc/alternatives/jre_1.7.0_openjdk
・JREのみでJDKは含まれません(OpenJDKのうち、JRE部分のみを選択してインストールしています)
jre-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64 ・Java7のJRE1.7.0のうち、より細かいバージョンを指定するためのシンボリックリンクです。
・実態は下記パスへのシンボリックリンクである(環境やバージョンにより異なる場合あり)
java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre
・JREのみでJDKは含まれません(OpenJDKのうち、JRE部分のみを選択してインストールしています)

目次にもどる

確認②:Tomcat環境変数(CATALINA_XXX)や起動シェル

ユニットファイルで指定するTomcat環境変数(CATALINA_XXX)や起動シェルのパスには全て[Tomcat Home Directory]を指定していますが、これはインストール時(tarファイルの解凍時)に指定したパス(例では「/usr/local/src/」)の配下に作成される「apache-tomcat-8.X.XX」のフォルダの事です。

Environment=CATALINA_PID=[Tomcat Home Directory]/temp/tomcat.pid
Environment=CATALINA_HOME=[Tomcat Home Directory]
Environment=CATALINA_BASE=[Tomcat Home Directory]
ExecStart=[Tomcat Home Directory]/bin/startup.sh

(図132)

私の場合は「/usr/local/src/apache-tomcat-8.5.61/」となっているので[Tomcat Home Directory]は全てこのパスに置き換えます。この中にTomcatの起動停止シェルやらconfigファイルなどが全て入っています。

Environment=CATALINA_PID=/usr/local/src/apache-tomcat-8.5.61/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/src/apache-tomcat-8.5.61
Environment=CATALINA_BASE=/usr/local/src/apache-tomcat-8.5.61
ExecStart=/usr/local/src/apache-tomcat-8.5.61/bin/startup.sh

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-CentOS, Linux, Tomcat

執筆者:


comment

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

関連記事

Tomcatのアーキテクチャ概要と各コンポーネントの役割について

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) Tomcatの概要  (2-1) Tomcatとは?  (2-2) Tomcatアーキテクチャ概観 (3) T …

CentOS6で「Cannot find a valid baseurl for repo」が発生した時の対処方法について

<目次> (1) CentOS6で「Cannot find a valid baseurl for repo」が発生した時の対処方法について  (1-1) 発生状況・エラーメッセージ  (1-2) 原 …

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

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

Linux(CentOS 6)のパケットフィルタリング方法(iptables)

(0)目次&概説 >(1) “iptables”の概要 >(2) “iptables”の解説  >(2-1) “iptables&#8221 …

CentOS7にEclipseをインストールする手順

<目次> (1) CentOS7にEclipseをインストールする手順  (1-1) JDKのインストール  (1-2) Eclipse資源のダウンロード  (1-3) Eclipseのインストール …

  • English (United States)
  • 日本語
Top