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 *:80ServerAdmin 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来进行映射。

