I have just set up Apache Tomcat startup script on Snow Leopard and I thought I’d blog about it while it’s still fresh in my head.? Assuming you have installed Tomcat in /usr/local/tomcat directory, you can do the following to start Tomcat on system startup.
1. Create your startup script:
sudo nano /usr/local/tomcat/bin/tomcat
#!/bin/sh # Tomcat Startup Script
CATALINA_HOME=/usr/local/tomcat; export CATALINA_HOME
JAVA_HOME=/Library/Java/Home; export JAVA_HOME
TOMCAT_OWNER=root; export TOMCAT_OWNER
start() {
echo -n "Starting Tomcat: "
su $TOMCAT_OWNER -c $CATALINA_HOME/bin/startup.sh
sleep 2
}
stop() {
echo -n "Stopping Tomcat: "
su $TOMCAT_OWNER -c $CATALINA_HOME/bin/shutdown.sh
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: tomcat {start|stop|restart}"
exit
esac
[quote type=”pull” style=”2″ align=”left” width=”60%”]Set your TOMCAT_OWNER correctly.? You should run it as a valid system user.[/quote]
[divider]
2. Create a symbolic link in /usr/bin for easier access
sudo ln -s /usr/local/tomcat/bin/tomcat /usr/bin/tomcat
3. Create the startup daemon which will start Tomcat when the system boots up
sudo mkdir /Library/StartupItems/tomcat
sudo nano /Library/StartupItems/tomcat/tomcat
#!/bin/sh
. /etc/rc.common
# The start subroutine
StartService() {
# Insert your start command below.
tomcat start
}
# The stop subroutine
StopService() {
# Insert your stop command(s) below.
tomcat stop
}
# The restart subroutine
RestartService() {
# Insert your start command below.
tomcat restart
}
RunService "$1"
4. Create your startup parameters plist file
sudo nano /Library/StartupItems/tomcat/StartupParameters.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <plist version="0.9"> <dict> <key>Description</key> <string>Tomcat web server</string> <key>OrderPreference</key> <string>Late</string> <key>Provides</key> <array> <string>Local Web Services</string> </array> <key>Uses</key> <array> <string>SystemLog</string> </array> </dict> </plist>
Restart your Mac and you should be sweet.
Marko