Tomcat 和 Apache

标签:

Tomcat是常用的一个J2EE Servlet容器,在日常开发和商业应用中被广泛使用,本文主要介绍安装tomcat以及如何让tomcat和apache整合起来工作。

一、Tomcat安装

从http://tomcat.apache.org/下载最新的tomcat,本文下载版本是6.0.20。下载后解压到/usr/local下,重命名为tomcat。

添加运行tomcat的一个用户tomcat:

#groupadd tomcat
#useradd -s /sbin/nologin -g tomcat tomcat

修改目录所有者:

#chown -R tomcat:tomcat /usr/local/tomcat

安装jsvc:

#cd tomcat/bin
#tar xzvf jsvc.tar.gz
#cd jsvc-src
#sh support/buildconf.sh
#chmod 755 configure
#./configure --with-java=/usr/java/default      (改成你的JDK的位置)
#make
cp jsvc /usr/local/tomcat/bin

IA64的系统下,需要修改configure文件,否则无法进行configure

修改启动文件Tomcat5.sh,文件在jsvc-src/native下。

#!/bin/sh
#
# Startup Script for Tomcat
#
# chkconfig: 345 88 14
# description: Tomcat Daemon
# processname: jsvc
# pidfile: /var/run/jsvc.pid
# config:
#
# Source function library.
. /etc/rc.d/init.d/functions
#
prog=tomcat
# 
#
# That is for Tomcat-5.0.x (Apache Tomcat/5.0)
#
# Adapt the following lines to your configuration
JAVA_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
DAEMON_HOME=/usr/local/tomcat/bin
TOMCAT_USER=tomcat
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/jsvc.pid
CATALINA_BASE=/usr/local/tomcat

CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

case "$1" in
  start)
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$TMP_DIR \
    -wait 10 \
    -pidfile $PID_FILE \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    exit $?
    ;;

  stop)
    #
    # Stop Tomcat
    #
    $DAEMON_HOME/jsvc \
    -stop \
    -pidfile $PID_FILE \
    org.apache.catalina.startup.Bootstrap
    exit $?
    ;;

  *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
esac

前面的13行比较重要,将修改后的文件复制到/etc/init.d/下,重命名为tomcat,然后:

#chkconfig tomcat on  
#chkconfig --list tomcat 

启动服务测试

service tomcat start

二、整合Apache和Tomcat

本文使用的整合方式是mod_jk,首先下载mod_jk的源文件,解压,编译,编译需要apache2-devel包。本文以tomcat-connectors-1.2.28-src.tar.gz为例。

tar xzvf tomcat-connectors-1.2.28-src.tar.gz
cd tomcat-connectors-1.2.28-src/native
./buildconf
./configure --with-apxs=/usr/sbin/apxs
make
cp apache-2.0/mod_jk.so /etc/httpd/modules/

在/etc/httpd/conf.d下新增一个文件jk.conf,内容如下:

LoadModule jk_module modules/mod_jk.so

#
#
JkWorkersFile /etc/httpd/conf.d/workers.properties

###### Where to put jk logs
JkLogFile /var/log/mod_jk.log

###### Set the jk log level [debug/error/info]
JkLogLevel info

###### Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

###### JkOptions indicate to send SSL KEY SIZE,
JkOptions  +ForwardKeySize +ForwardURICompat -ForwardDirectories

###### JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

新增workers.properties

worker.list=worker1,status

worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

worker.status.type=status

新增一个VirtualHost文件vhost.conf

NameVirtualHost *:80

    ServerAdmin hebl@vhost.com
    DocumentRoot /data/vsite/vhost.com
    ServerName vhost.com
    ErrorLog logs/dummy-vhost.com-error_log
    CustomLog logs/dummy-vhost.com-access_log common
    
        AllowOverride All
    
    JKMount /*.jsp worker1
    JKMount /servlet/* worker1
    DirectoryIndex index.html index.php index.jsp

重启httpd

/etc/init.d/httpd restart

这样就可以了,针对jsp文件,tomcat将进行处理。不同的虚拟主机也可以使用不同的Tomcat服务,一个可以解决的方法是为Tomcat多开几个端口服务,然后在workers.properties中新增worker来进行映射。