Skip to content

Instantly share code, notes, and snippets.

@witscher
Created June 13, 2012 13:24
Show Gist options
  • Select an option

  • Save witscher/2924017 to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown
Author

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

@witscher

Copy link
Copy Markdown
Author

now optimized for Ubuntu 12.04

@bryanwb

bryanwb commented Mar 22, 2013

Copy link
Copy Markdown

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

@minzie31

Copy link
Copy Markdown

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

@witscher

witscher commented Aug 2, 2013

Copy link
Copy Markdown
Author

expect is not needed, status displays like this:

tomcat start/running, process

@witscher

witscher commented Aug 2, 2013

Copy link
Copy Markdown
Author

@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
Copy Markdown

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

gdbtek commented Mar 29, 2014

Copy link
Copy Markdown

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

gdbtek commented Mar 29, 2014

Copy link
Copy Markdown

never mind, I got it! Thanks

@clement-bramy

Copy link
Copy Markdown

Hello,

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

Clem

@robertandrewbain

Copy link
Copy Markdown

Confirmed working with tomcat 8.

@EzenwakaKaycee

Copy link
Copy Markdown

Pls How do i run the tomcat as root user

@vancluever

Copy link
Copy Markdown

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