Search code examples
ubuntutomcatservermonit

init.d fails with tomcat


Im using tomcat on ubuntu server, and Im trying to use monit to keep it alive always. But my problem is that monit dont work because

/etc/init.d/tomcat start

Throws this error:

touch: cannot touch '/opt/tomcat/latest/logs/catalina.out': Permission denied
/opt/tomcat/latest/bin/catalina.sh: 467: /opt/tomcat/latest/bin/catalina.sh: cannot create /opt/tomcat/latest/logs/catalina.out: Permission denied

If I give permissions 777 to catalina.out, tomcat dont work. But if I change the permissions to 755 I cant start with init.d

How can I solve it?

This is my "monit" code:

check process tomcat with pidfile "/opt/tomcat/apache-tomcat-9.0.27/temp/tomcat.pid"
      start program = "/etc/init.d/tomcat start"
      stop program = "/etc/init.d/tomcat stop"
      if failed port 8080 for 5 cycles then restart

Thanks


Solution

  • Per default Monit is executed as root, but the Permission denied message might indicate that your Monit is not ran as root.

    I see two solutions:

    1. Execute Monit as root
    2. Add a /usr/bin/sudo before your init script like
    start program = "/usr/bin/sudo /etc/init.d/tomcat start"