2022年12月14日水曜日

tomcatが立ち上がらない



最近tomcatをほったらかしにしていたのですが

載せたいアプリができたので、乗せようとすると、、、、


起動しない!


状態見てみます。 

$ sudo systemctl status tomcat

Dec 13 20:44:26 xxx systemd[1]: Starting Apache Tomcat 9...

Dec 13 20:44:26 xxx startup.sh[13912]: Existing PID file found during start.

Dec 13 20:44:26 xxx startup.sh[13912]: Removing/clearing stale PID file.

Dec 13 20:44:26 xxx startup.sh[13912]: Tomcat started.

Dec 13 20:44:26 xxx systemd[1]: Can't open PID file /opt/apache-tomcat/tomcat.pid (yet?) after start: No such file or directory

Dec 13 20:45:56 xxx systemd[1]: tomcat.service start operation timed out. Terminating.

Dec 13 20:45:56 xxx systemd[1]: Failed to start Apache Tomcat 9.

Dec 13 20:45:56 xxx systemd[1]: Unit tomcat.service entered failed state.

Dec 13 20:45:56 xxx systemd[1]: tomcat.service failed.


tomcat.pid が見つからない?

探してみると確かにない、、、


sudo less  /etc/systemd/system/tomcat.service

[Unit]

Description=Apache Tomcat 9

[Unit]

Description=Apache Tomcat 9

[Unit]

Description=Apache Tomcat 9

After=network.target


[Service]

User=tomcat

Group=tomcat

Type=forking


PIDFile=/opt/apache-tomcat/tomcat.pid


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

Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"


Environment="CATALINA_BASE=/opt/apache-tomcat/"

Environment="CATALINA_HOME=/opt/apache-tomcat/"

Environment="CATALINA_PID=/opt/apache-tomcat/temp/tomcat.pid"

Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"


ExecStart=/opt/apache-tomcat/bin/startup.sh

ExecStop=/opt/apache-tomcat/bin/shutdown.sh

ExecReStart=/opt/apache-tomcat/bin/shutdown.sh;/opt/apache-tomcat/bin/startup.sh


[Install]

WantedBy=multi-user.target


「PIDFile」「Environment="CATALINA_PID」のpidファイルのパスが異なっていたので合わせることにします。 


PIDFile=/opt/apache-tomcat/tomcat.pid

PIDFile=/opt/apache-tomcat/temp/tomcat.pid


さあどうだ。


Dec 13 21:41:06 xxx systemd[1]: Starting Apache Tomcat 9...

Dec 13 21:41:06 xxx startup.sh[2836]: Existing PID file found during start.

Dec 13 21:41:06 xxx startup.sh[2836]: Removing/clearing stale PID file.

Dec 13 21:41:06 xxx startup.sh[2836]: Tomcat started.

Dec 13 21:41:06 xxx systemd[1]: Can't open PID file /opt/apache-tomcat/tomcat.pid (yet?) after start: No such file or directory

Dec 13 21:41:25 xxx systemd[1]: [/etc/systemd/system/tomcat.service:22] Unknown lvalue 'ExecReStart' in section 'Service'

Dec 13 21:42:55 xxx systemd[1]: tomcat.service start operation timed out. Terminating.

Dec 13 21:42:55 xxx systemd[1]: Failed to start Apache Tomcat 9.

Dec 13 21:42:55 xxx systemd[1]: Unit tomcat.service entered failed state.

Dec 13 21:42:55 xxx systemd[1]: tomcat.service failed.


まだエラー、、、


Unknown lvalue 'ExecReStart' って言われても。。。

しらべると、、'ExecReStart'はrootの変数で、フルパスで書かないといけないみたい。

https://teratail.com/questions/232242


 ・・・・


フルパスで書いているが。

原因不明ですが、'ExecReStart'は、結局停止して再起動するだけのせってなので

思い切ってコメントアウトしました。

ExecReStart=/opt/apache-tomcat/bin/shutdown.sh;/opt/apache-tomcat/bin/startup.sh

#ExecReStart=/opt/apache-tomcat/bin/shutdown.sh;/opt/apache-tomcat/bin/startup.sh


さあどうだ。

$ sudo systemctl start tomcat

・・・すぐコンソールが戻ってきた。起動が成功したようです、、、


$ sudo systemctl status tomcat


● tomcat.service - Apache Tomcat 9

   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)

   Active: active (running) since Tue 2022-12-13 21:49:56 JST; 23s ago

 Main PID: 6658 (java)

   CGroup: /system.slice/tomcat.service

           mq6658 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -...


Dec 13 21:49:56 xxx systemd[1]: Starting Apache Tomcat 9...

Dec 13 21:49:56 xxx systemd[1]: Started Apache Tomcat 9.


起動した、、、、!!!!


結局以下の2点が問題でした。

1.pidの出力先指定ミス

過去の記事で、tomcat10→tomcat9にダウングレードした際、

tomcat.serviceの設定は、複数のサイトで見ながら

それらしい設定値で書いたつもりだったのですが

PIDFile=/opt/apache-tomcat/tomcat.pid

Environment="CATALINA_PID=/opt/apache-tomcat/temp/tomcat.pid"

のパスが一致していなかったので、後者の設定で出力されたファイルを

前者の設定で確認しようとして、「あれ、無い」ということでエラーになっていたものと思われます。

2.再起動設定の無効化

ExecReStart=/opt/apache-tomcat/bin/shutdown.sh;/opt/apache-tomcat/bin/startup.sh

シャットダウンしてスタートするだけなのですが、この設定が良くなかったようです。

今回はコメントアウトで乗り越えましたが、きっと正しい書き方であればできるはず。。

もし解決法が分かったら、修正したいと思います。


こんな問題、他の人は遭遇しないだろうな、、、