重定向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应用程序时,一定要检査日志文件,以便了解是否有问题发生。