Skip to content

Instantly share code, notes, and snippets.

@witscher
Created June 13, 2012 13:24
Show Gist options
  • Star 25 You must be signed in to star a gist
  • Fork 14 You must be signed in to fork a gist
  • Save witscher/2924017 to your computer and use it in GitHub Desktop.
Save witscher/2924017 to your computer and use it in GitHub Desktop.
Apache Tomcat Upstart script
description "Tomcat Server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
# run as non privileged user
# add user with this command:
## adduser --system --ingroup www-data --home /opt/apache-tomcat apache-tomcat
# Ubuntu 12.04: (use 'exec sudo -u apache-tomcat' when using 10.04)
setuid apache-tomcat
setgid www-data
# adapt paths:
env JAVA_HOME=/opt/java
env CATALINA_HOME=/opt/apache-tomcat
# adapt java options to suit your needs:
env JAVA_OPTS="-Djava.awt.headless=true -Xms512M -Xmx1024M -server -XX:+UseParallelGC"
exec $CATALINA_HOME/bin/catalina.sh run
# cleanup temp directory after stop
post-stop script
rm -rf $CATALINA_HOME/temp/*
end script
@witscher
Copy link
Author

works for both tomcat 6 and tomcat 7, tested on Ubuntu 10.04 x64

@witscher
Copy link
Author

now optimized for Ubuntu 12.04

@bryanwb
Copy link

bryanwb commented Mar 22, 2013

@witscher How do you redirect stdout and stderr for catalina.sh to a log file like catalina.out?

@minzie31
Copy link

Don't you need an expect stanza? What happens when you do a initctl status tomcat?

@witscher
Copy link
Author

witscher commented Aug 2, 2013

expect is not needed, status displays like this:

tomcat start/running, process

@witscher
Copy link
Author

witscher commented Aug 2, 2013

@brianwb Since newer upstart versions (12.04) stdout and stderr go into /var/log/upstart/tomcat.log, so theres no need to catch it in the script

@alanfranz
Copy link

you should use CATALINA_OPTS for heap/server/gc settings; java_opts is passed even when other commands are issued on the 8005 port, even though this is unused by this config file.

See my fork for an example:

https://gist.github.com/alanfranz/6902429

@gdbtek
Copy link

gdbtek commented Mar 29, 2014

hi all,

when I set:
setuid tomcat setgid www-data

start tomcat can't boot up tomcat. My tomcat only can boot up when I remove above setuid and setgid. I added tomcat user to www-data as you can see:

groups tomcat

tomcat : www-data

does anyone know what seem to be wrong?

Thanks

@gdbtek
Copy link

gdbtek commented Mar 29, 2014

never mind, I got it! Thanks

@clement-bramy
Copy link

Hello,

Did you try it with tomcat 8?
Can you see any reason why it would not work?

Clem

@robertandrewbain
Copy link

Confirmed working with tomcat 8.

@EzenwakaKaycee
Copy link

Pls How do i run the tomcat as root user

@vancluever
Copy link

Thank you so much for this dude, and for anyone reading this, the key to this is the run parameter versus the start parameter. I'd imagine that the latter causes it to fork in a way that breaks upstart (well documented).

Stumbling upon this saved my eyeballs a pending gouging. ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment