Установка Tomcat на CentOS/ISPmanager

Материал из wiki.owlhost.net
Перейти к: навигация, поиск


Install Tomcat 7 on CentOS, RHEL, or Fedora

This post will cover installing and basic configuration of Tomcat 7 on CentOS 5.x. or CentOS 6.x

Tomcat 7 implements the JavaServer Pages 2.2 and Servlet 3.0 specifications and a number of new features. The Manager application also has a new look and finer-grain roles and access than 6.x

In this post, we'll install Tomcat 7, the new JDK 7, configure Tomcat as a service, create a start/stop script, and (optionally) configure Tomcat to run under a non-root user.

We will also configure basic access to Tomcat Manager and take a quick look at memory management using JAVA_OPTS

Finally, we will look at running Tomcat on port 80 as well as some strategies for running Tomcat behind Apache.

I have just updated this post with Tomcat 7.0.29, the current stable release of Tomcat 7.

If you are using a different release, simply change the file names below accordingly.

To begin, we'll need to install the Java Development Kit (JDK) 7

JDK 1.6 is the minimum JDK version for Tomcat 7.


Step 1: Install JDK 1.7


You can download the latest JDK here: http://www.oracle.com/technetwork/java/javase/downloads/index.html

We'll install the latest JDK, which is JDK 7, Update 5. The JDK is specific to 32 and 64 bit versions.

My CentOS box is 64 bit, so I'll need: jdk-7u5-linux-x64.tar.gz.

If you are on 32 bit, you'll need: jdk-7u5-linux-i586.tar.gz

Start by creating a new directory /usr/java:

view plaincopy to clipboardprint?

   [root@srv6 ~]# mkdir /usr/java    


Change to the /usr/java directory we created

view plaincopy to clipboardprint?

   [root@srv6 ~]# cd /usr/java    
   [root@srv6 java ]#   


Download the appropriate JDK and save it to /usr/java directory we created above.

Unpack jdk-7u5-linux-x64.tar.gz in the /usr/java directory using tar -xzf:

view plaincopy to clipboardprint?

   [root@srv6 java]# tar -xzf jdk-7u5-linux-x64.tar.gz  


This will create the directory /usr/java/jdk1.7.0_05. This will be our JAVA_HOME.


We can now set JAVA_HOME and put Java into the path of our users.

To set it for your current session, you can issue the following from the CLI: view plaincopy to clipboardprint?

   [root@srv6 java]# JAVA_HOME=/usr/java/jdk1.7.0_05  
   [root@srv6 java]# export JAVA_HOME  
   [root@srv6 java]# PATH=$JAVA_HOME/bin:$PATH  
   [root@srv6 java]# export PATH  


To set the JAVA_HOME permanently, however, we need to add below to the ~/.bash_profile of the user (in this case, root). We can also add it /etc/profile and then source it to give to all users. view plaincopy to clipboardprint?

   JAVA_HOME=/usr/java/jdk1.7.0_05  
   export JAVA_HOME  
   PATH=$JAVA_HOME/bin:$PATH  
   export PATH  

Once you have added the above to ~/.bash_profile, you should log out, then log back in and check that the JAVA_HOME is set correctly.

view plaincopy to clipboardprint?

   [root@srv6 ~]#  echo $JAVA_HOME  
   /usr/java/jdk1.7.0_05  


Note: If you decided to use JDK 6 rather than 7 as we did above, simply save the JDK 6 bin file to /opt (or another location), then navigate to /usr/java and issue: 'sh /opt/jdk-6u33-linux-x64.bin'. This will create a JAVA Home of /usr/java/jdk1.6.0.33


Step 2: Download and Unpack Tomcat 7.0.29 (or latest)


We will install Tomcat 7 under /usr/share.

Switch to the /usr/share directory:

view plaincopy to clipboardprint?

   [root@srv6 ~]# cd /usr/share  
   [root@srv6 share ]#   

Download apache-tomcat-7.0.29.tar.gz (or the latest version) here

and save it to /usr/share

Once downloaded, you should verify the MD5 Checksum for your Tomcat download using the md5sum command.

view plaincopy to clipboardprint?

   [root@srv6 share ]# md5sum apache-tomcat-7.0.29.tar.gz  
   307076fa3827e19fa9b03f3ef7cf1f3f *apache-tomcat-7.0.29.tar.gz  

Compare the output above to the MD5 Checksum provided next to the download link and you used above and check that it matches.

unpack the file using tar -xzf:

view plaincopy to clipboardprint?

   [root@srv6 share ]# tar -xzf apache-tomcat-7.0.29.tar.gz    

This will create the directory /usr/share/apache-tomcat-7.0.29


Step 3: Configure Tomcat to Run as a Service.


We will now see how to run Tomcat as a service and create a simple Start/Stop/Restart script, as well as to start Tomcat at boot.

Change to the /etc/init.d directory and create a script called 'tomcat' as shown below.

view plaincopy to clipboardprint?

   [root@srv6 share]# cd /etc/init.d  
   [root@srv6 init.d]# vi tomcat  

And here is the script we will use.

view plaincopy to clipboardprint?

   #!/bin/bash  
   # description: Tomcat Start Stop Restart  
   # processname: tomcat  
   # chkconfig: 234 20 80  
   JAVA_HOME=/usr/java/jdk1.7.0_05  
   export JAVA_HOME  
   PATH=$JAVA_HOME/bin:$PATH  
   export PATH  
   CATALINA_HOME=/usr/share/apache-tomcat-7.0.29  
     
   case $1 in  
   start)  
   sh $CATALINA_HOME/bin/startup.sh  
   ;;   
   stop)     
   sh $CATALINA_HOME/bin/shutdown.sh  
   ;;   
   restart)  
   sh $CATALINA_HOME/bin/shutdown.sh  
   sh $CATALINA_HOME/bin/startup.sh  
   ;;   
   esac      
   exit 0  

The above script is simple and contains all of the basic elements you will need to get going.

As you can see, we are simply calling the startup.sh and shutdown.sh scripts located in the Tomcat bin directory (/usr/share/apache-tomcat-7.0.29/bin).

You can adjust your script according to your needs and, in subsequent posts, we'll look at additional examples.

CATALINA_HOME is the Tomcat home directory (/usr/share/apache-tomcat-7.0.29)

Now, set the permissions for your script to make it executable:

view plaincopy to clipboardprint?

   [root@srv6 init.d]# chmod 755 tomcat  

We now use the chkconfig utility to have Tomcat start at boot time. In my script above, I am using chkconfig: 234 20 80. 2345 are the run levels and 20 and 80 are the stop and start priorities respectively. You can adjust as needed.

view plaincopy to clipboardprint?

   [root@srv6 init.d]# chkconfig --add tomcat  
   [root@srv6 init.d]# chkconfig --level 234 tomcat on  

Verify it:

view plaincopy to clipboardprint?

   [root@srv6 init.d]# chkconfig --list tomcat  
   tomcat          0:off   1:off   2:on    3:on    4:on    5:off   6:off  

Now, let's test our script.

Start Tomcat: view plaincopy to clipboardprint?

   [root@srv6 ~]# service tomcat start  
   Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.29/temp  
   Using JRE_HOME:        /usr/java/jdk1.7.0_05  
   Using CLASSPATH:       /usr/share/apache-tomcat-7.0.29/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.29/bin/tomcat-juli.jar  

Stop Tomcat:

view plaincopy to clipboardprint?

   [root@srv6 ~]# service tomcat stop  
   Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.29/temp  
   Using JRE_HOME:        /usr/java/jdk1.7.0_05  
   Using CLASSPATH:       /usr/share/apache-tomcat-7.0.29/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.29/bin/tomcat-juli.jar  

Restarting Tomcat (Must be started first):

view plaincopy to clipboardprint?

   [root@srv6 ~]# service tomcat restart  
   Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.29/temp  
   Using JRE_HOME:        /usr/java/jdk1.7.0_05  
   Using CLASSPATH:       /usr/share/apache-tomcat-7.0.29/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.29/bin/tomcat-juli.jar  
   Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.29  
   Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.29/temp  
   Using JRE_HOME:        /usr/java/jdk1.7.0_05  
   Using CLASSPATH:       /usr/share/apache-tomcat-7.0.29/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.29/bin/tomcat-juli.jar  

We should review the Catalina.out log located at /usr/share/apache-tomcat-7.0.29/logs/catalina.out and check for any errors.

view plaincopy to clipboardprint?

   [root@srv6 init.d]# more /usr/share/apache-tomcat-7.0.29/logs/catalina.out  

We can now access the Tomcat Manager page at:

http://yourdomain.com:8080 or http://yourIPaddress:8080 and we should see the Tomcat home page.


Step 4: Configuring Tomcat Manager Access.


Tomcat 7 contains a number of changes that offer finer-grain roles.

For security reasons, no users or passwords are created for the Tomcat manager roles by default. In a production deployment, it is always best to remove the Manager application.

To set roles, user name(s) and password(s), we need to configure the tomcat-users.xml file located at $CATALINA_HOME/conf/tomcat-users.xml.

In the case of our installation, $CATALINA_HOME is located at /usr/share/apache-tomcat-7.0.29.

By default the Tomcat 7 tomcat-users.xml file will have the elements between the and tags commented-out. .

New roles for Tomcat 7 offer finer-grained access and The following roles are now available:

manager-gui manager-status manager-jmx manager-script admin-gu admin-script.

We can set the manager-gui role, for example as below

view plaincopy to clipboardprint?

   <tomcat-users>  
   <role rolename="manager-gui"/>  
   <user username="tomcat" password="secret" roles="manager-gui"/>  
   </tomcat-users>  


Caution should be exercised in granting multiple roles so as not to under-mind security.


Step 5 (Oprtional): Manage Memory Usage Using JAVA_OPTS.


Getting the right heap memory settings for your installation will depend on a number of factors.

For simplicity, we will set our inital heap size, Xms, and our maximum heap size, Xmx, to the same value of 128 Mb

Simliarly, there are several approaches you can take as to where and how you set your JAVA_OPTS

Again, for simplicity, we will add our JAVA_OPTS memory parameters in our Catalina.sh file.

So, open the Catalina.sh file located under /usr/share/apache-tomcat-7.0.29/bin with a text editor or vi.

Since we are using 128 Mb for both initial and maximum heap size, add the following line to Catalina.sh

view plaincopy to clipboardprint?

   JAVA_OPTS="-Xms128m -Xmx128m"   


I usually just add this in the second line of the file so it looks as so:

view plaincopy to clipboardprint?

   #!/bin/sh  
   JAVA_OPTS="-Xms128m -Xmx128m"   
   # Licensed to the Apache Software Foundation (ASF) under one or more  
   # contributor license agreements.  See the NOTICE file distributed with  
   # this work for additional information regarding copyright ownership.  
   # The ASF licenses this file to You under the Apache License, Version 2.0  
   # (the "License"); you may not use this file except in compliance with  
   # the License.  You may obtain a copy of the License at  



Step 6 (Optional): How to Run Tomcat using Minimally Privileged (non-root) User.


In our Tomcat configuration above, we are running Tomcat as Root.

For security reasons, it is always best to run services with the only those privileges that are necessary.

There are some who make a strong case that this is not required, but it's always best to err on the side of caution.

To run Tomcat as non-root user, we need to do the following:

1. Create the group 'tomcat':

view plaincopy to clipboardprint?

   [root@srv6 ~]# groupadd tomcat  

2. Create the user 'tomcat' and add this user to the tomcat group we created above.

view plaincopy to clipboardprint?

   [root@srv6 ~]# useradd -s /bin/bash -g tomcat tomcat  

The above will create a home directory for the user tomcat in the default user home as /home/tomcat

If we want the home directory to be elsewhere, we simply specify so using the -d switch.

view plaincopy to clipboardprint?

   [root@srv6 ~]# useradd -g tomcat -d /usr/share/apache-tomcat-7.0.29/tomcat tomcat  

The above will create the user tomcat's home directory as /usr/share/apache-tomcat-7.0.29/tomcat

3. Change ownership of the tomcat files to the user tomcat we created above:

view plaincopy to clipboardprint?

   [root@srv6 ~]# chown -Rf tomcat.tomcat /usr/share/apache-tomcat-7.0.29/  

Note: it is possible to enhance our security still further by making certain files and directories read-only. This will not be covered in this post and care should be used when setting such permissions.

4. Adjust the start/stop service script we created above. In our new script, we need to su to the user tomcat:

view plaincopy to clipboardprint?

   #!/bin/bash  
   # description: Tomcat Start Stop Restart  
   # processname: tomcat  
   # chkconfig: 234 20 80  
   JAVA_HOME=/usr/java/jdk1.7.0_05  
   export JAVA_HOME  
   PATH=$JAVA_HOME/bin:$PATH  
   export PATH  
   CATALINA_HOME=/usr/share/apache-tomcat-7.0.29/bin  
     
   case $1 in  
   start)  
   /bin/su tomcat $CATALINA_HOME/startup.sh  
   ;;   
   stop)     
   /bin/su tomcat $CATALINA_HOME/shutdown.sh  
   ;;   
   restart)  
   /bin/su tomcat $CATALINA_HOME/shutdown.sh  
   /bin/su tomcat $CATALINA_HOME/startup.sh  
   ;;   
   esac      
   exit 0  



Step 7 (Optional): How to Run Tomcat on Port 80 as Non-Root User.


Note: the following applies when you are running Tomcat in "stand alone" mode with Tomcat running under the minimally privileged user Tomcat we created in the previous step.

To run services below port 1024 as a user other than root, you can add the following to your IP tables:

view plaincopy to clipboardprint?

   [root@srv6 ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080    
   [root@srv6 ~]# iptables -t nat -A PREROUTING -p udp -m udp --dport 80 -j REDIRECT --to-ports 8080    


Be sure to save and restart your IP Tables.

Step 8 (Optional): Running Tomcat behind Apache


As an alternative to running Tomcat on port 80, if you have Apache in front of Tomcat, you can use mod_proxy as well as ajp connector to map your domain to your Tomcat application(s) using an Apache vhost as shown below.

While Tomcat has improved it's 'standalone performance', I still prefer to have Apace in front of it for a number of reasons.

In your Apache config, be sure to set KeepAlive to 'on'. Apache tuning, of course, is a whole subject in itself...


Example 1: VHOST with mod_proxy:

view plaincopy to clipboardprint?

   <VirtualHost *:80>  
       ServerAdmin admin@yourdomain.com  
       ServerName yourdomain.com  
       ServerAlias www.yourdomain.com  
     
     
       ProxyRequests Off  
       ProxyPreserveHost On  
       <Proxy *>  
          Order allow,deny  
          Allow from all  
       </Proxy>  
     
     
       ProxyPass / http://localhost:8080/  
       ProxyPassReverse / http://localhost:8080/  
     
     
       ErrorLog logs/yourdomain.com-error_log  
       CustomLog logs/yourdomain.com-access_log common  
     
   </VirtualHost>  


Example 2: VHOST with ajp connector and mod_proxy:

view plaincopy to clipboardprint?

   <VirtualHost *:80>  
       ServerAdmin admin@yourdomain.com  
       ServerName yourdomain.com  
       ServerAlias www.yourdomain.com  
     
     
       ProxyRequests Off  
       ProxyPreserveHost On  
       <Proxy *>  
       Order allow,deny  
       Allow from all  
       </Proxy>  
     
       ProxyPass / ajp://localhost:8009/  
       ProxyPassReverse / ajp://localhost:8009/  
     
     
       ErrorLog logs/yourdomain.com-error_log  
       CustomLog logs/yourdomain.com-access_log common  
   </VirtualHost>  


In both vhost examples above, we are "mapping" the domain to Tomcat's ROOT directory.

If we wish to map to an application such as yourdomain.com/myapp, we can add some rewrite as shown below.

This will rewrite all requests for yourdomain.com to yourdomain.com/myapp.

Example 3: VHOST with rewrite:

view plaincopy to clipboardprint?

   <VirtualHost *:80>  
       ServerAdmin admin@yourdomain.com  
       ServerName yourdomain.com  
       ServerAlias www.yourdomain.com  
     
     
       RewriteEngine On  
       RewriteRule ^/$ myapp/ [R=301]  
     
       ProxyRequests Off  
       ProxyPreserveHost On  
       <Proxy *>  
       Order allow,deny  
       Allow from all  
       </Proxy>  
     
       ProxyPass / ajp://localhost:8009/  
       ProxyPassReverse / ajp://localhost:8009/  
     
     
       ErrorLog logs/yourdomain.com-error_log  
       CustomLog logs/yourdomain.com-access_log common  
   </VirtualHost>  


Applicable Plans - Virtual Machine in Cloud using ISPmanager (ISPsystem) User Guide - Tomcat 6 Installation and Tuning Overview

Using the eApps Virtual Machine in the Cloud Hosting service, Java SE 6 or Java SE 7, and Tomcat 6, you can create web sites and web applications with dynamic content for your customers and users.

This User Guide is designed to help you install Java SE 6 or Java SE 7 and Tomcat 6 on your Virtual Machine, and to do basic tuning if necessary. An overview of how to upload your applications to your Virtual Machine is also provided.

Information on how to actually deploy your applications using one of the three supported deployment methods (mod_jk, mod_proxy_ajp, and standalone) are found in the User Guides specific to that method:

   mod_jk or mod_proxy_ajp - Deploying Tomcat 6 Applications using mod_jk or mod_proxy_ajp
   Standalone - Deploying Tomcat 6 Applications in Standalone mode


Pay careful attention to the resources allocated to your Virtual Machine when deploying Tomcat applications, especially the available RAM. Tomcat can be very memory intensive, and a lack of resources is one of the main reasons for poor performance. For a small Tomcat application, start with at least 768 MB of RAM, and be prepared to scale upwards as necessary. For larger Tomcat applications, start with at least 1024 MB of RAM, and again be ready to scale upwards if your traffic and resource needs demand it. Prerequisites

To run Java applications using Tomcat 6, you will need to install Tomcat 6 and Java SE 6 or Java SE 7. Install Java first.

If you wish to connect your application to a database, you will need to install either MySQL database server and Mysql JDBC Driver, or PostreSQL database server and PostgreSQL JDBC Driver. Which database you choose will depend on your existing codebase and preferences.

If you are going to use the mod_jk deployment method (used by the majority of eApps customers), you will need to install mod_jk. If you are going to use the mod_proxy_ajp deployment method, nothing additional needs to be installed because mod_proxy_ajp is an Apache module, and is available if Apache is installed. Installing applications

To install Tomcat 6, Java SE 6 or Java SE 7, and a database and database driver using ISPmanager, navigate to Server Settings > Applications. This screen lists both the installed and available applications.

Click on the application you want to install to highlight it, and then click on Install in the upper right corner of the screen. Remember to install Java first, then Tomcat 6, and then your database and database driver. If you are using mod_jk, make sure to install that also.

Once the applications are installed, they will be listed in the Installed version column. f you are going to use either the mod_jk or mod_proxy_ajp approach, you will also need to create a virtual host in Apache. See the User Guide: Creating Websites using ISPmanager - http://support.eapps.com/ispmgr/websites for more information.

Using Tomcat 6

To use Tomcat 6, you need to know where the Tomcat configuration files are located and how to edit them, how Tomcat handles requests, and how to stop, start, and restart Tomcat. You will also need to decide how you want to deploy your Tomcat applications. Tomcat 6 Configuration files Configuration files and locations

There are three main configuration files for Tomcat: server.xml, web.xml, and tomcat.conf.

The files server.xml and web.xml are in the /opt/tomcat6/conf directory. The tomcat.conf file is in the /etc/tomcat6 directory.

   server.xml - This is the primary file used to configure the Tomcat server.
   web.xml - defines settings for the Tomcat server such as error pages and the default index page.
   tomcat.conf - located in the /etc/tomcat6 directory, this is the configuration file for the Java Service Wrapper. eApps uses the Java Service Wrapper to run Tomcat as a Linux daemon.

Note eApps uses the Java Service Wrapper to run Tomcat as a Linux daemon. This means that configurations that would normally go in the catalina.sh file must go in the tomcat.conf file instead. More information about the Java Service Wrapper, including links to the documentation, can be found here: http://wrapper.tanukisoftware.org/doc/english/introduction.html How to edit

To edit these files, you will need root access to the Virtual Machine via the command line, or access to the File Manager in ISPmanager. See the User Guide: Connecting to your Virtual Machine (SSH and MindTerm) - http://support.eapps.com/ispmgr/ssh and the User Guide: Using the File Manager - http://support.eapps.com/ispmgr/file_mgr for more information if necessary.

To edit the files directly on the Virtual Machine, you will need to use a text editor such as vim or nano. Both are available on the VM. If you are more familiar with another Linux text editor, you can install it using Yum.

If you are going to download the Tomcat configuration files and edit them locally and then upload them again, make sure to use a plain text editor such as Notepad, Notepad++ (for Windows) or TextEdit for (Mac OS X) in plain text mode.

Do not use a word processing program, such as Microsoft Word, Wordpad, Pages, or LibreOffice Writer. An actual word processor will insert invisible control characters into the file, and these control characters can cause problems when you try to start Tomcat. How Tomcat handles requests

Tomcat uses a Host and a Context to determine what application to serve. Upon installation, there is one Host already created in the server.xml file, called localhost, which is also set as the default host. Since having a default Host is mandatory, do not edit or remove the localhost entry. Instead, create a new Host in server.xml for your applications as needed.

To Tomcat, http://eapps-example.com and http://www.eapps-example.com are seen as two completely different Host names, and each can serve completely different content. If you want your application to listen on both Hosts, you have to set one as the actual Host, and the other as an Alias in the same Host block. How to do this is covered in the User Guides for the Deployment approaches.

When Tomcat receives a request, it first looks to see if there is a Host configured that matches the domain name in the URL that was requested. It then looks inside each Host to see if there is an Alias that matches the domain name in the URL. If Tomcat doesn’t find a matching Host block or a matching Alias inside a Host block, then it will serve the default Host block, which is localhost.

When Tomcat finds the correct Host, it then looks at the rest of the URL to get the path of the application and tries to match that with a Context inside the Host to determine what to serve. The Context will define what application to serve for a given path by defining a docBase for that path. This is covered in more detail in the User Guides for the Deployment approaches. Starting and Stopping Tomcat

Tomcat can be stopped, started, or restarted from either ISPmanager or the command line. ISPmanager

To stop, start, or restart Tomcat 6 from ISPmanager, go to Management Tools > Services and highlight tomcat6. In the upper right corner are the icons to Stop, Start, or Restart Tomcat. Command line

To stop, start, or restart Tomcat 6 from the command line, you will need to log in to the Virtual Machine using SSH, and be able to work as the root user.

The commands are: service tomcat6 stop, service tomcat6 start, and service tomcat6 restart. Tomcat Application deployment

Your Virtual Machine includes the Apache web server as part of the base environment. Apache is designed to serve static HTML content, perl scripts, PHP applications, and other types of content that requires a web server. Tomcat is designed primarily to serve JSP pages and servlets.

One of the decisions you will need to make when deploying your Tomcat application is how you want Tomcat and Apache to interact. In most cases you will want to use Apache as a front end to Tomcat. In very rare cases you may want to run Tomcat without Apache.

Before you proceed you will need to determine which of the three approaches below is appropriate for you. The three supported approaches for deployment are:

   Using mod_jk – the most common way of configuring Tomcat and Apache. mod_jk is older and a bit more robust than the newer mod_proxy_ajp. With mod_jk, you specify directives that tell Apache whether to pass the request on to Tomcat, or if Apache will handle the request itself.
   Using mod_proxy_ajp – similar to using mod_jk, in that you have to specify directives to forward requests from Apache to Tomcat.
   Using Tomcat in standalone mode – this approach should only be used if your application specifically requires this method. Generally, this approach is only used when your Virtual Machine does nothing but run a Tomcat application. In other words, it is not used for e-mail, or any other function other than the Tomcat application. This approach is for advanced users who are already very familiar with configuring Tomcat and Apache. The vast majority of Tomcat users do not need this approach.

Both mod_jk and mod_proxy_ajp are covered in Deploying Tomcat 6 Applications using mod_jk or mod_proxy_ajp. Standalone mode is covered in Deploying Tomcat 6 Applications in Standalone mode.