Installing software on RHEL platforms using yum is straightforward. However, based on your environment, there could be a few more steps to get there. So, here’s what I did to install Tomcat 6 on RHEL 6.2:
OS: Red Hat Enterprise Linux Server release 6.2 (Santiago)
Yum Repos: Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64), RHN Tools for RHEL (v. 6 for 64-bit x86_64)
STEP 1: Install the Tomcat6 Web Servlet container
sudo yum groupinstall web-servlet
STEP 2: Enable the Tomcat6 service
sudo chkconfig tomcat6 on
STEP 3: Change ownership for the Tomcat6 resources
When tomcat6 is installed via STEP 1, a user and group with the same name (tomcat) is created. For security, the user is created without an interactive login shell (/sbin/nologin). So, in order to ensure that the application support individuals don’t require root privileges, you must do the following:
sudo chown -R tomcat:tomcat /usr/share/tomcat6 sudo chown -R tomcat:tomcat /etc/tomcat6/*
NOTE: By default, the tomcat user is created with umask 022 and so individual accounts will require sudo privileges to modify the resources owned by tomcat. This also ensures that all operations on tomcat resources are audited.
STEP 4: Test the Tomcat6 service
After doing STEPS 1-3, I started/stopped tomcat6 using the following commands:
sudo service tomcat6 start sudo service tomcat6 stop
Tomcat6 started and stopped successfully (and http://localhost:8080 was accessible), but the following two messages in catalina.out bugged me:
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-220.127.116.11.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-18.104.22.168.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-22.214.171.124.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
SEVERE: destroyMBeans: Throwable javax.management.MalformedObjectNameException: Cannot create object name for org.apache.catalina.connector.Connector@290fd7f6 at org.apache.catalina.mbeans.MBeanUtils.createObjectName(MBeanUtils.java:764) at org.apache.catalina.mbeans.MBeanUtils.destroyMBean(MBeanUtils.java:1416)
The first INFO message was logged whenever tomcat6 was started and the SEVERE message was logged whenever tomcat6 was stopped.
Getting rid of the INFO message requires installing the Tomcat Native Library (see STEP 5) and it’s recommended that you do this for optimal performance (native code faster than Java bytecode).
Regarding the SEVERE message, it seems to have been fixed in Tomcat 6.0.25 ( refer Tomcat6 Bug ) and the version I installed using the above steps was 6.0.24. As this error is harmless, I’d wait for 6.0.25.
STEP 5: Install the Tomcat Native Library
Unfortunately, the standard RHEL yum repos used in our company (see Environment above) did not contain packages for the Tomcat Native Library. So, here’s what I did to install the library:
- Install the pre-requisite packages
sudo yum install apr apr-devel java-1.6.0-openjdk-devel.x86_64 openssl-devel.x86_64
NOTE: I required only the above packages, but your requirement may vary based on your existing OS installation.
- Download the tomcat native library from here
- Execute the following commands:
# Extract downloaded tar tar xvzf tomcat-native-1.1.22-src.tar.gz # Configure cd tomcat-native-1.1.22-src/jni/native sudo ./configure \ --with-apr=/usr/bin/apr-1-config \ --with-java-home=/usr/lib/jvm/java-1.6.0-openjdk-126.96.36.199.x86_64 \ --with-ssl=/usr/include/openssl \ --prefix=/usr/lib64 # Make sudo make #Make Install sudo make install # The steps above installed the library in /usr/lib64/lib. As the default LD_LIBRARY_PATH #includes /usr/lib64, you may either change the path or set up links as shown below: cd /usr/lib64 sudo ln -s lib/libtcnative-1.so.0.1.22 libtcnative-1.so sudo ln -s lib/libtcnative-1.so.0.1.22 libtcnative-1.so.0
Successful installation of the Tomcat Native library will show something similar to the following in catalina.out when you start the tomcat6 service:
INFO: Loaded APR based Apache Tomcat Native library 1.1.22.
I observed that the Tomcat Native Library made quite an improvement to the tomcat6 server start time. Prior to installation, tomcat 6 started in about 144ms and after installation, it took only around 77ms!