Jakartaプロジェクトのサブプロジェクトとして開発されているオープンソースのソフトウェアで、Javaサーブレット・JSPを処理するアプリケーションサーバです。
Tomcatは単独でWebサーバとして動作できるそうだがApacheのプラグインと動作できるようになっており、実際にはプラグインとしての利用が主流となっているそうです。
| tomcatのインストール # yum -y install tomcat ApacheとTomcatの連携モジュールをインストール # yum -y install mod_jk2 | 
| 環境ファイルの編集
# vi /etc/profile
以下を追加します。
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export TOMCAT_HOME=/usr/share/tomcat
export CATALINA_HOME=/usr/share/tomcat
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/common/lib
編集した環境ファイルを反映させる
# source /etc/profile
設定ファイルの編集
# vi /usr/share/tomcat/conf/web.xml
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
ディレクトリの内容が表示されてしまうのを防ぐ
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
サーブレットクラスをJRE(Java実行環境)のクラスライブラリへコピー 
# cp /usr/share/tomcat/common/lib/servlet.jar $JAVA_HOME/jre/lib/ext/
Apache連携でサーブレットとJSPがInternal Server Errorとなってしまうことの対処
# vi /etc/httpd/conf/workers2.properties
[shm:]
#info=Scoreboard. Required for reconfiguration and status with multiprocess servers
#file=${serverRoot}/logs/jk2.shm
#size=1000000
#debug=0
disabled=1 | 
| apache(httpd)を再起動する # /etc/rc.d/init.d/httpd restart httpdを停止中: [ OK ] httpd を起動中: [ OK ] tomcatを起動する # /etc/rc.d/init.d/tomcat start tomcat を起動中: [ OK ] | 
『OSの再起動を行なった時にtomcatを自動的に起動するように設定する』を行なった場合は、サービスの起動順番は「apache(httpd)」→「tomcat」となりますので、気にする必要はありません。
| 起動時にtomcatを起動する # chkconfig tomcat on 設定内容を確認 # chkconfig --list tomcat tomcat 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ | 
クライアントより[http://サーバのアドレス/examples/servlets/]でアクセスして下記の様な画面が表示されれば動作しています。

クライアントより[http://サーバのアドレス/examples/jsp/]でアクセスして下記の様な画面が表示されれば動作しています。

tomcatでは、基本的に「/usr/share/tomcat/webapps/」がドキュメントのルートになっています。
例えば、サーブレットのサンプルが"examples"になっていました。[http://サーバのアドレス/examples/servlets/]
これは、tomcatの設定ファイル「/usr/share/tomcat/conf/server.xml」で以下の様に定義されています。
| /usr/share/tomcat/conf/server.xmlの内容
        <!-- Tomcat Root Context -->
        <!--
        <Context path="" docBase="ROOT" debug="0"/>
        -->
        <!-- Tomcat Examples Context -->
        <Context path="/examples" docBase="examples" debug="0"
                 reloadable="true" crossContext="true"> | 
サーブレットモジュールを作成し任意のアドレス(http://サーバのアドレス/fedora/servlet/)でアクセス出来る様にする。
| tomcat設定ファイルにアドレスを定義する
# vi /usr/share/tomcat/conf/server.xml
        <!-- Tomcat Root Context -->
        <!--
        <Context path="" docBase="ROOT" debug="0"/>
        -->
        <Context path="/fedora" docBase="fedora" reloadable="true" crossContext="true">
        </Context>
        <!-- Tomcat Examples Context -->
        <Context path="/examples" docBase="examples" debug="0"
                 reloadable="true" crossContext="true">
servlet/以降へのアクセスはサーブレットとする
# vi /usr/share/tomcat/conf/web.xml
    <!-- The mapping for the invoker servlet -->
<!--
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
-->
上記の <!-- と --> 部分を消す
        ↓↓↓↓↓
    <!-- The mapping for the invoker servlet -->
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
アドレスのfedora/以降はtomcatに認識させる
# vi /etc/httpd/conf/workers2.properties
[uri:/examples/servlet/HelloW]
info=Example with debug enabled.
debug=10
最終行以下に追加
[uri:/fedora/*]
パスを作成する
# mkdir /usr/share/tomcat/webapps/fedora/
# mkdir /usr/share/tomcat/webapps/fedora/WEB-INF/
# mkdir /usr/share/tomcat/webapps/fedora/WEB-INF/classes/
パスが長いのでカレントを移動
# cd /usr/share/tomcat/webapps/fedora/WEB-INF/classes/
サーブレットソースの作成
# vi TestServlet.java
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet {
  public void doGet(HttpServletRequest request,
    HttpServletResponse response)
      throws IOException, ServletException {
        response.setContentType("text/html; charset=EUC-JP");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Test Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("サーブレットのテスト");
        out.println("</body>");
        out.println("</html>");
        out.close();
    }
}
ソースのコンパイル
# javac TestServlet.java | 
クライアントより[http://サーバのアドレス/fedora/servlet/TestServlet]でアクセスして"サーブレットのテスト"と表示されれば動作しています。
JSPを作成し任意のアドレス(http://サーバのアドレス/fedora/jsp/)でアクセス出来る様にする。
| サーブレットの設定(fedora/でアクセス)が完了している事を前提としています。
パスを作成する
# mkdir /usr/share/tomcat/webapps/fedora/jsp/
パスが長いのでカレントを移動
# cd /usr/share/tomcat/webapps/fedora/jsp/
JSPソースの作成
# vi TestJSP.jsp
<%@ page contentType="text/html;charset=EUC-JP" %>
<html>
    <head>
        <title>Test JSP</title>
    </head>
    <body>
<p>
<%
   String strJSP = "JSPのテスト";
   out.println(strJSP);
%>
</p>
    </body>
</html> | 
クライアントより[http://サーバのアドレス/fedora/jsp/TestJSP.jsp]でアクセスして"JSPのテスト"と表示されれば動作しています。