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

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

関連記事

JSP Servletでセッションの有効期限を設定する方法

<目次> (1) JSP Servletでセッションの有効期限を設定する方法  (1-1) セッションの有効期限設定の概要  (1-2) 方法1:web.xmlに追記する方法  (1-3) 方法2:プ …

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

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

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

(0)目次&概説 (1) 記事の目的/前提 (2) 実施手順  (2-1) Tomcat用ユーザ/グループ作成  (2-2) 資源のダウンロード  (2-3) 資源の解凍  (2-4) 資源に必要権限 …

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

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

Linuxにおけるデーモンやサービスの意味や常用コマンドについて

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) デーモン/サービスとは?(CentOS6以前)  (2-1) デーモン/サービスとは?  (2-2) Syst …

  • English (United States)
  • 日本語
Top