Title: supervise tomcat with daemontools Subject: Howto use daemontools to supervise Tomcat Author: John Stile ----------------------------------------------------------------------- On Debian Sarge, # add new source for daemontools package echo "deb-src http://smarden.org/pape/Debian/ sarge unofficial" >> /etc/apt/sources.list aptitude update # Find packages for daemontools, ucspi aptitude search daemontools p daemontools - a collection of tools for managing UNIX services p daemontools-doc - man-pages and faq for daemontools p daemontools-installer - Installer package for building daemontools binary package p daemontools-run - debian integration of daemontools aptitude search ucspi p ucspi-proxy - Connection proxy for UCSPI tools p ucspi-unix - UNIX-domain socket client-server command-line tools # Install packages aptitude install --with-recommends ucspi-unix daemontools-installer daemontools-run The following NEW packages will be automatically installed: build-essential daemontools daemontools-doc debhelper gettext html2text intltool-debian libcompress-zlib-perl libmail-sendmail-perl po-debconf The following NEW packages will be installed: build-essential daemontools daemontools-doc daemontools-installer daemontools-run debhelper gettext html2text intltool-debian libcompress-zlib-perl libmail-sendmail-perl po-debconf # Create service directory mkdir /tomcat # Create supervise run script # Found a supervise script for tomcat # REFERENCE: http://www.infodancer.org/software/release/tomcat-supervised.tar.gz # This script runs catalina.sh, which comes with tomcat distrobution # Modify script to work for our system. cat >> /tomcat/run <<'TOMCAT' #!/bin/sh export RUN_AS="tomcatuser" export JAVA_HOME=/JAVA/jdk1.5.0_04 export JAVABIN=$JAVA_HOME/bin export JAVA_OPTS="-Xms32M -server -Xmx128m -verbosegc -Xloggc:/tmp/gc.log -Djava.awt.headless=true" export PATH=$JAVABIN:$PATH export CATALINA_HOME="/APACHE/TOMCAT/jakarta-tomcat-5.5.9" export CATALINA_OPTS="-Dfile.encoding=ISO-8859-1 -Xms128M -Xmx256M -Djava.awt.headless=true" exec 2>&1 exec setuidgid ${RUN_AS} ${CATALINA_HOME}/bin/catalina.sh run TOMCAT # Create service log directory mkdir /tomcat/log # Create supervise log run script cat >> /tomcat/log/run <<'TOMCATLOG' #!/bin/sh export RUN_AS="tomcatuser" exec setuidgid ${RUN_AS} multilog t ./main TOMCATLOG # fix ownership export RUN_AS="tomcatuser" chown -R $RUN_AS /tomcat/log/run chown -R $RUN_AS /tomcat/log/main # link it in place and ln -s /tomcat /service/tomcat # Bounce the service svc -t /service/tomcat # Look at the logs tail -f /tomcat/log/main/current # Test lsof -i tcp -nP |grep java java 20580 tomcatuser 11u IPv6 16306008 TCP *:8080 (LISTEN) java 20580 tomcatuser 17u IPv6 16306141 TCP *:8009 (LISTEN) java 20580 tomcatuser 18u IPv6 16306145 TCP 127.0.0.1:8005 (LISTEN) # Test svstat /service/* /service/tomcat: up (pid 20580) 1926 seconds