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来进行映射。