最近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
シャットダウンしてスタートするだけなのですが、この設定が良くなかったようです。
今回はコメントアウトで乗り越えましたが、きっと正しい書き方であればできるはず。。
もし解決法が分かったら、修正したいと思います。
こんな問題、他の人は遭遇しないだろうな、、、