Loading [MathJax]/extensions/tex2jax.js

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) 発生状況・エラーメッセージ

■エラーメッセージ

  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のサービスを下記コマンドで起動した際に発生しました。
  1. $ sudo systemctl start tomcat

 

目次にもどる

(1-2) 原因

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

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

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

  1. Environment=JAVA_HOME=/usr/lib/jvm/jre
  2. Environment=CATALINA_PID=[Tomcat Home Directory]/temp/tomcat.pid
  3. Environment=CATALINA_HOME=[Tomcat Home Directory]
  4. Environment=CATALINA_BASE=[Tomcat Home Directory]
  5. ExecStart=[Tomcat Home Directory]/bin/startup.sh

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

目次にもどる

(1-3) 対処法

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

確認①:JAVA_HOME

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

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

  1. lrwxrwxrwx 1 root root 21 May 29 2020 jre -> /etc/alternatives/jre
  2. lrwxrwxrwx 1 root root 27 May 12 2020 jre-1.7.0 -> /etc/alternatives/jre_1.7.0
  3. lrwxrwxrwx 1 root root 35 May 12 2020 jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk
  4. 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
  5. lrwxrwxrwx 1 root root 27 May 12 2020 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
  6. lrwxrwxrwx 1 root root 35 May 12 2020 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
  7. 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
  8. 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」のフォルダの事です。

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

(図132)

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

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

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-CentOS, Linux, Tomcat

執筆者:


comment

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

関連記事

CentOS7で日本語を入力するための設定手順

<目次> (1) CentOS7で日本語を入力するための設定手順  (1-1) STEP1:epelリポジトリの導入  (1-2) STEP2:パッケージのインストール  (1-3) STEP3:入力 …

Tomcatでhttps接続を行う方法(自己証明書を使ってSSL化する方法)

<目次> (1) Tomcatでhttps接続を行う方法(自己証明書を使ってSSL化する方法)  (1-1) STEP1:鍵や証明書の作成  (1-2) STEP2:証明書の配備(任意)  (1-3) …

TomcatのURLに付くポート番号8080を非表示にしてドメイン名のみでサイトにアクセスする方法と手順

本記事で実現したい事は下記2点、①URLのポート番号・アプリ名を非表示(リバプロ)と②JSP/Servlet名非表示(web.xml)です。これらを実現する事でブラウザにドメイン名のみ(例:XXXX. …

Linuxで一般ユーザ(rootスイッチ権限有り)を作成する方法

Linuxでユーザを作成する方法を書きます。 (0)目次 >(1)作業の背景・目的・前提条件 >(2)ユーザの作成 >(3)ユーザの「Wheel」グループへの追加 (1)作業の背景・目的・前提条件 「 …

Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法

<目次> (1) Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法  (1-1) 発生状況  (1-2) 原因  (1-3) 対処方法 ( …

  • English (United States)
  • 日本語
S