サーバを再起動してtomcatが自動起動したと思ったらlocalhost:8080が表示できず、手動で起動しようとしたら既に起動しているというメッセージが出てくる。
仕方ないのでtomcatを再起動しようとすると、シャットダウン時に以下のようなエラーが出てくる
Shutting down tomcat Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/default Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_PID: /var/run/catalina.pid PID file found but no matching process was found. Stop aborted.
色々ぐぐってみると、/var/run/catalina.pidにプロセスIDがあるからそれをみてkillしろとか、
ps -ef | grep tomcat
で出てきたpidをkillしろという記事が多かったが、前者は「そのようなプロセスはありません」と言われてしまうし、後者はそもそもプロセスが無かったりで思うようにいかない。
/var/run/catalina.pid を消して再度起動させてみるも結果変わらず・・・
$CATALINA_HOME/logs/catalina.outでログを見てると
/usr/local/tomcat/bin/catalina.sh: line 387: /usr/java/default/bin/java: そのようなファイルやディレクトリはありません
あれ?
ある不安が脳裏をよぎる。
まず$CATALINA_HOME/bin/catalina.shの中身を見てみることに。
javaのパスが/usr/javaとなっていたが、このサーバではそこにjavaが存在しない・・・!
そういえば急遽tomcatが必要になったからjavaはデフォルトで入ってるOpenJDKを使っていて、ちゃんとJDKの最新版をダウンロードしてきてインストールしてなかった・・・
httpd停止→tomcat停止→tomcat起動→httpd起動の順で実行
うまくいった。
結論
tomcatを使うならJDKを入れましょう。
参考:
全く同じ事象にハマっていたため、大変参考になりました。
記事にまとめて頂き、ありがとうございました。