Tomcat教程

重定向Web应用程序的目录

视安装及使用Tomcat的方式的不同,您可能不想把Web应用程序的文件放入Tomcat发 行版的目录树中。例如,如果计划周期性地更新所安装的Tomcat,就可能并不想修改Tomcat 的这些 Web 应用程序——诸如CATALINA_HOME/conf/server.xml,出于为站点配置Tomcat的目的,吋能擗要或者是想修改该文件(注2),因为在Tomcat安装目录下安 装新版Tomcat的文件时,会将修改后的站点的server.xml及其他配置文件全部覆盖。无论 是使用特定操作系统的Tomcat包(如RPM包),还是使用非操作系统指定的Tomcat目标 文件(如.zip或tar.gz)这种情况都存在。升级Tomcat包则意味着本地包管理工具可能 会用新包的版本来取代原本的配置文件。通常包管理工具会储存它们所取代的文件,即 便如此,让您的网站复原还是一件非常痛苦的事情。无论采用什么方法来安装Tomcat明确把网站文件与Tomcat发行版文件分开总是一个不错的主意。

另一种情况是,如果已安装了一份Tomcat的发行版文件,但想要在服务器计算机上运行一个以上的Tomcat实例,这时候您也可能不想将Web应用程序的文件存入Tomcat发行版 的目录树中。您会有许多理由需要运行一个以上的Tomcat实例,例如,让每一个实例在不同的TCP端U上提供不同网页内容的服务,且想让每个webapp都在自己的JVM上,从 而可以对他们执行相互独立的操怍。在此情形下,您定不想让一个实例的文件与另一 个实例的文件发生冲突。

为了安装一份Tomcat的发行版,但同时运行两个以上的不同配置的Tomcat实例,必须让 每个JVM实例的文件相互分开。一般在使用Tomcat时,服务器会从conf及webapp目录中 读入配置文件,井将文件写入log、 temp与work目录,当然,一些jar文件和class文件需 要从服务器公共目录树中予以加载。这表示为了让多个实例都能运行,每一个Tomcat的 实例都必须有自的目录集,且它们不能共享两个不同的已配置的Tomcat JVM实例。

为了实现这一功能,其技巧在于您必须将CATALINA_HOME环境变量设置为已安装Tomcat 二进制发行版(这些文件可以从下载)的路径下,且必须将 CATALINA BASE的环境变量设置成与存储JVM实例文件(由您自己生成)不相同的路 径。设置好这些变量后再启动Tomcat,它就会使用您在CATALINA BASE中定义的文件进行 运行,随后再使用CATALINA HOME中的Tomcat二进制发行版,Tomcat的这一内嵌特性允 许您使Tomcat与您的文件分开,但仍有可能要根据修改配置文件中的内容来满足您的需求。

首先,请切换至想要放置实例文件的目录,即CATALINA_BASE目录,可以把它存放在系统 的任意位置,不过,笔者建议您找一个可存放大量数据的方便目录:

#cd /opt
#mkdir tomcat-instance
#cd tomcat-instance

接着,为Tomcat的新实例创建目录(在将网站存人其中后,您最好对其进行命名):

#mkdir groovywigs.com
#cd groovywigs.com

现在将Tomcat发行版的config目录复制到新目录中,然后创建Tomcat其他实例的全部目录:

#cp -a $CATALINA_HOME/conf
#mkdir common logs temp server shared webapps work

最后,正如其他的Tomcat配置一样,请将此实例的Web应用程序的内容放入webapps子 目录中。编辑文件为指定该实例的文件,并将该文件修改为只包含运行该 实例所需的参数。您还要确保Tomcat的实例不会尝试开启同一服务器的计算机上其他实 例的主机与连接端口,而且也不会尝试加载CATALINAJASE树中找不到的、Tomcat内附 的Web应用程序实例。请将停止端口更换成不同的端口号:

<Server port = "8007" shutdown-"SHUTDOWN">

及所有连接器的端口号:

<!--在8080端口上定义非SSL的HTTP/1.1连接器-->
<Connector port="8081" maxHttpHeaderSize="8192"
           maxTtireads="l50" miaSpareThreads="25"maxSpareThreads="75" 
           enableLookups = "false" redirectPort="8443" acceptCount="100" 
           connectionTimeout="20000" disableUploadTimeout= "true"/>

如果该"port="的元素没有以注释列出,则您可以对其执行文本检索并改变其属性的端 口号。

刪除示例中的所有Context元素(因为您没有将这些元素复制到实例的目录下) 及其嵌套的所有元素,并加入与自己的webapp相关的内容。

重复这些步骤,建立所需额外的CATALINA_BA5E实例目录,如果您只有一个Web网站(或 者指运行一个Tomcat JVM),那么就需要创建一个CATALINA_BASE树。

如欲启动实例,则请将CATALINA-BASE设成实例目泌的完整路径,将CATALINA-HOME设 成Tomcat发行版目录的完整路径,然后按下列正常步骤启动Tomcat:

#set CATALINA_BASF="/opt/tomcat-instance/groovywigs.com"
#set CATALlNft_H0ME="/opt/tomcat"
#export CATALINA_BASE CATALINA_HOWE
#service tomcat start       	# Standard way to stop on Linux

您也可以采取相似的步骤停止这些实例:

#set CATALINA_BASE="/opt/tomcat-irfStance/groovywigs.com"
#set CATALINA_HOME="/opt/tomcar
#export CATAUNA_BASE CATALINA_H0ME
#service tomcat stop	# Standard way to stop on Linux

为了使启动和停止实例不会变得太繁琐,您也可以创建一些小型方便启动和停止实例的 脚本。请执行下列步骤:

#cd /opt/tomcat-instance/groovywigs.com
#mkdir bin
#cd bin

现在,编辑一个文件,并将下列内容放人其中:

#/bin/sh
set CATALINA_BASE="/opt/tomcat-instance/groavywigs,comn 
set CATALINA_HOWE="/opt/tomcat" 
export CATALINABASE CATALINA_HOME
service tomcat start	       #Standard way to start on Linux

请确认可以执行该脚本:

#  chmod 700 start

请再次确定Tomcat进程的所有者至少对录及新建立的start脚本拥有吋读及可执行 的权限。

然后,执行此脚本即可轻松启动实例:

/opt/tomcat-instarce/groovywigs.com/bin/start

您也可以采取相同步骤创建一个stop脚本

当您将自己的文件与Tomcat发行版文件分开管理后,升级Tomcat会变得十分容易,因 为您可以用新的目录取代整个Tomcat发行版文件的目录,而无需担心会扰乱自己的任 何文件。唯一例外的是新版的Tomcat与之前的Tomcat实例文件不兼容。当您在新的 Tomcat版本上启动Web应用程序时,一定要检査日志文件,以便了解是否有问题发生。

关注微信获取最新动态