Install Tomcat 5.5.28 on RHEL5 / CentOS5

A recent attempt to install Tomcat5 through the RPM repositories with the statement yum install tomcat5 failed to be as successful to run the application. Also there is a need to run Tomcat with Sun Java JDK not the openJDK that is available through the channels. These are the steps to get Tomcat up and running on a Red Hat Enterprise Linux 5 (RHEL5) or CentOS 5 (CENTOS5) installation using version 5.4.

Prerequisites

Java – Read my article on how to install Java JDK.

Install Tomcat 5.5.28

Source: http://www.bartbusschots.ie/blog/?p=240

Download Tomcat 5.5.28

wget http://mirror.candidhosting.com/pub/apache/tomcat/tomcat-5/v5.5.28/bin/apache-tomcat-5.5.28.tar.gz

Unpack Tomcat 5.5.28

tar -xzf apache-tomcat-5.5.28.tar.gz
sudo mv apache-tomcat-5.5.28 /usr/local/
cd /usr/local/
ln -s apache-tomcat-5.5.28/ tomcat
cd /usr/local/tomcat/bin

To run with startup.sh, point to JAVA_HOME

gedit catalina.sh
add JAVA_HOME="/usr/java/default"

To run automatically on boot

gedit /etc/init.d/tomcat

Copy and paste the following code. Change JAVA_HOME to your JAVA_HOME.

# This is the init script for starting up the
#  Jakarta Tomcat server
#
# chkconfig: 345 91 10
# description: Starts and stops the Tomcat daemon.
#
# Source function library.
. /etc/rc.d/init.d/functions
# Get config.
. /etc/sysconfig/network
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0
tomcat=/usr/local/tomcat
startup=$tomcat/bin/startup.sh
shutdown=$tomcat/bin/shutdown.sh
export JAVA_HOME=/usr/java/defautl
start(){
 echo -n $"Starting Tomcat service: "
 #daemon -c
 $startup
 RETVAL=$?
 echo
}
stop(){
 action $"Stopping Tomcat service: " $shutdown
 RETVAL=$?
 echo
}
# Status provided by http://www.spaceprogram.com/knowledge/2004/01/starting-tomcat-as-service-on-linux.html
status(){
  numproc=`ps -ef | grep catalina | grep -v "grep catalina" | wc -l`
  if [ $numproc -gt 0 ]; then
	  echo "Tomcat is running..."
	  else
	  echo "Tomcat is stopped..."
  fi
}
restart(){
  stop
  start
}
# See how we were called.
case "$1" in
start)
 start
 ;;
stop)
 stop
 ;;
status)
	  # This doesn't work
status tomcat
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0

Make this an executable

chmod +x /etc/init.d/tomcat
chkconfig --add tomcat

Here are the commands for the service tomcat

service tomcat restart
service tomcat start
service tomcat status
service tomcat stop

Add an entry to the firewall.
Make this installation accessible beyond the localhost.

/sbin/service iptables save
/sbin/service iptables stop
gedit /etc/sysconfig/iptables

Add the following exception. Port 8080 is used by Tomcat.

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

Save the file, and restart the service

/sbin/service iptables start

Tested and Works (March 23, 2010, May 20, 2010)
Java JDK 1.6.18 and Java JDK 1.6.20
Tomcat 5.5.28
Red Hat Enterprise Linux (RHEL) 5.4, RHEL 5.5, CentOS 5.4, CentOS 5.5