本文虽然是Setup,但是没有讲最generic的安装方法,那就是直接将Tomcat解开,然后配置好JAVA_HOME,用$CATALINA_HOME/bin/startup.sh(.bat)来启动Tomcat,这是最普通的做法。本文重点介绍的是更好的一种方法,那就是在windows和linux下都把Tomcat跑成一个service/daemon。 
      
      
1. 在windows下的安装非常简单。Tomcat 5本身就带了一个exe格式的安装文件,直接双击这个文件就可以开始安装,安装过程中还可以选择是否将Tomcat配置成一个windows的service,非常好用。
      
2. 重点是UNIX/Linux下的安装。要让Tomcat在Linux下跑成一个daemon,需要jsvc,这个东西来自apache common daemon project,所以在$CATALINA_HOME/bin目录下我们能看到jsvc.tar.gz和common-daemon.jar这些文件。在Linux下安装jsvc必需要手动编译,如下:
      
      
      
这里我们看到,首先执行了一个autoconf这个命令,这个东西会在当前目录下查找configure.in这样的文件,然后生成configure脚本,其实我个人觉得这个没有必要,因为jsvc这个包解开就有了configure脚本,不过既然文档这么说,就做一下吧;然后我们chmod u+x configure给configure脚本加上可执行权限。make完成后就会在当前目录生成jsvc可执行文件,我们将其拷贝到了上一层目录,也就是$CATALINA_HOME/bin下面。
      
然后文档就给出了一个用jsvc启动Tomcat的例子:
      
      
      
这个是可以的,我已经试过了。不过jsvc还提供了一个更好的东西,一个可以放在/etc/init.d目录下的一个脚本的template。这里文档中有两个错误,第一就是这个脚本是位于:$CATALINA_HOME/bin/jsvc-src/native目录下,而不是$CATALINA_HOME/bin/jsvc/native目录下;第二就是tomcat 5.5.23中有一个Tomcat5.sh的template,而不是只有tomcat.sh这个脚本。文档中说tomcat.sh这个脚本是给tomcat 4用的,不能给tomcat 5用,需要手动修改一下,其实$CATALINA_HOME/bin/jsvc-src/native目录下有一个Tomcat5.sh的template,正好给我们用,这里我修改了一下,并且测试了一下,下面给出我修改好的这个脚本(我把这个脚本取名tomcat,放在了/etc/init.d目录下,权限设成了755):
      
      
      
从上可以看到,我把chkconfig的东西也加了进去,而且在原有template的基础上,加入了JVM_MODE的设定,让JVM跑在server模式下,对-verbose也修改成了-verbose:gc,因为我们目前只关注gc的动作,看是否有内存泄漏......具体看脚本吧。最后用chkconfig --add tomcat就可以把tomcat加到启动中,下次重启机器,tomcat就起来了。在ps进程中可以看到两个jsvc的进程,都是jsvc启动起来的,这两个进程进程pid正好相差1,很明显是jsvc执行的时候fork了一个子进程。
      
上面的tomcat脚本基本涵盖了jsvc所有常用的option,我们可以jsvc -help来查看所有jsvc支持的option,常用的就是上面列出的,象-jvm, -cp, -outfile, -errfile这些。看看stop部分,stop tomcat的时候jsvc的命令行应该用-stop option。
      
有一点需要注意,如果从这里将tomcat脚本拷贝出去,粘贴使用的时候,不要忘记在每个\的后面都有一个\n存在,而这个换行在tomcat脚本中是不允许的,因为这是一行命令,只是我们为了书写好看,用\换行了而已,所以千万记得要手动去掉每个\符号后面的换行回车符号。
  
1. 在windows下的安装非常简单。Tomcat 5本身就带了一个exe格式的安装文件,直接双击这个文件就可以开始安装,安装过程中还可以选择是否将Tomcat配置成一个windows的service,非常好用。
2. 重点是UNIX/Linux下的安装。要让Tomcat在Linux下跑成一个daemon,需要jsvc,这个东西来自apache common daemon project,所以在$CATALINA_HOME/bin目录下我们能看到jsvc.tar.gz和common-daemon.jar这些文件。在Linux下安装jsvc必需要手动编译,如下:
- CODE: SELECT ALL
- 
          cd $CATALINA_HOME/bin
 tar xvfz jsvc.tar.gz
 cd jsvc-src
 autoconf
 chmod u+x configure
 ./configure
 make
 cp jsvc ..
 cd ..
这里我们看到,首先执行了一个autoconf这个命令,这个东西会在当前目录下查找configure.in这样的文件,然后生成configure脚本,其实我个人觉得这个没有必要,因为jsvc这个包解开就有了configure脚本,不过既然文档这么说,就做一下吧;然后我们chmod u+x configure给configure脚本加上可执行权限。make完成后就会在当前目录生成jsvc可执行文件,我们将其拷贝到了上一层目录,也就是$CATALINA_HOME/bin下面。
然后文档就给出了一个用jsvc启动Tomcat的例子:
- CODE: SELECT ALL
- 
          cd $CATALINA_HOME
 ./bin/jsvc -Djava.endorsed.dirs=./common/endorsed -cp ./bin/bootstrap.jar \
 -outfile ./logs/catalina.out -errfile ./logs/catalina.err \
 org.apache.catalina.startup.Bootstrap
这个是可以的,我已经试过了。不过jsvc还提供了一个更好的东西,一个可以放在/etc/init.d目录下的一个脚本的template。这里文档中有两个错误,第一就是这个脚本是位于:$CATALINA_HOME/bin/jsvc-src/native目录下,而不是$CATALINA_HOME/bin/jsvc/native目录下;第二就是tomcat 5.5.23中有一个Tomcat5.sh的template,而不是只有tomcat.sh这个脚本。文档中说tomcat.sh这个脚本是给tomcat 4用的,不能给tomcat 5用,需要手动修改一下,其实$CATALINA_HOME/bin/jsvc-src/native目录下有一个Tomcat5.sh的template,正好给我们用,这里我修改了一下,并且测试了一下,下面给出我修改好的这个脚本(我把这个脚本取名tomcat,放在了/etc/init.d目录下,权限设成了755):
- CODE: SELECT ALL
- 
          #!/bin/sh
 #
 # chkconfig: 35 95 95
 # description: tomcat start/stop scripts
 #
 ##############################################################################
 #
 # Copyright 2004 The Apache Software Foundation.
 #
 # Licensed 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
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ##############################################################################
 #
 # Small shell script to show how to start/stop Tomcat using jsvc
 # If you want to have Tomcat running on port 80 please modify the server.xml
 # file:
 #
 # <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
 # <Connector className="org.apache.catalina.connector.http.HttpConnector"
 # port="80" minProcessors="5" maxProcessors="75"
 # enableLookups="true" redirectPort="8443"
 # acceptCount="10" debug="0" connectionTimeout="60000"/>
 #
 # That is for Tomcat-5.0.x (Apache Tomcat/5.0)
 #
 # Adapt the following lines to your configuration
 JAVA_HOME=/usr/java/jdk1.5.0_07
 CATALINA_HOME=/root/apache-tomcat-5.5.23
 DAEMON_HOME=/root/apache-tomcat-5.5.23/bin
 #TOMCAT_USER=tomcat5
 # Added by Eric Zhang
 JVM_MODE=server
 
 # for multi instances adapt those lines.
 TMP_DIR=/tmp
 PID_FILE=/var/run/jsvc.pid
 CATALINA_BASE=/root/apache-tomcat-5.5.23
 
 CATALINA_OPTS=""
 CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
 
 # we ignore the -user $TOMCAT_USER line
 # and we added the -jvm $JVM_MODE line
 # add -debug before the org.apache.catalina.startup.Bootstrap line if you want to see debug infos
 
 case "$1" in
 start)
 #
 # Start Tomcat
 #
 $DAEMON_HOME/jsvc \
 -jvm $JVM_MODE \
 -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 $CATALINA_HOME/logs/catalina.err \
 $CATALINA_OPTS \
 -cp $CLASSPATH \
 -verbose:gc \
 org.apache.catalina.startup.Bootstrap
 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
从上可以看到,我把chkconfig的东西也加了进去,而且在原有template的基础上,加入了JVM_MODE的设定,让JVM跑在server模式下,对-verbose也修改成了-verbose:gc,因为我们目前只关注gc的动作,看是否有内存泄漏......具体看脚本吧。最后用chkconfig --add tomcat就可以把tomcat加到启动中,下次重启机器,tomcat就起来了。在ps进程中可以看到两个jsvc的进程,都是jsvc启动起来的,这两个进程进程pid正好相差1,很明显是jsvc执行的时候fork了一个子进程。
上面的tomcat脚本基本涵盖了jsvc所有常用的option,我们可以jsvc -help来查看所有jsvc支持的option,常用的就是上面列出的,象-jvm, -cp, -outfile, -errfile这些。看看stop部分,stop tomcat的时候jsvc的命令行应该用-stop option。
有一点需要注意,如果从这里将tomcat脚本拷贝出去,粘贴使用的时候,不要忘记在每个\的后面都有一个\n存在,而这个换行在tomcat脚本中是不允许的,因为这是一行命令,只是我们为了书写好看,用\换行了而已,所以千万记得要手动去掉每个\符号后面的换行回车符号。


 
					 
					