Tomcat教程

自动启动

一旦Tomcat安装完成并在运行,您就可以设定在系统重启时自动启动Tomcat了。这可以确保每次启动系统时,Tomcat就会运行并处理请求。Unix用户要更改其init脚本,而 Windows用户则需要将Tomcat设为服务。本节会说明这两种方式。

在Linux上自动启动

如果您已通过RPM安装Tomcat,只需告诉系统在进人多用户执行层级时运行或tomcat55 服务(视安装的RPM包而定),即可在机器重启后自启Tomcat。

用chkconfig命令使tomcat服务在您所选择的执行层级上启动,下列示例展示了如何使其 在2、3、4和5的执行层级上启动:

#chkconfig --level 2345 tomcat on

现在,查询配置文件,确信实际已设置了该启动选项:

#chkconfig --list tomcat
tomcat 0:off  1:off  2:on  3:on  4:on  5:on  6:off

现在,重启机器,并査看系统启动完毕后Tomcat是否已启动

如果您在安装Tomcat时未使用该RPM包,那么您仍然可以设置Tomcat在开机时启动。虽 然Tomcat没有一个Linux初始化脚本,但创建一个开机启动、关机关闭Tomcat的脚本还 是很简单的。例1-2是Linux下一个非常简单的Tomcat init脚本。

例如 1-2: Linux下的Tomcat init脚本

#!/bin/sh
#Linux 下的Tomcat init脚本。
#
#chkconfig: 234S 96 14 
#描述:Apache Tomcat servlet/JSP容器。
JAVA_H0HE=/usr/java/jdk1.6.0_02 
CATALlNA_HCME=/opt/apache-tomcat-6.0.14 
export JAVA_H0ME CATALINA_HOME

exec SCATALlNA_HOME/bin/catalina.sh $*

将该脚本保存到名字叫做tomcat的文件中,然后将该文件的所有权和分组切换到root 上,然后将其chmod到755:

#chown root.root tomcat
#chmod 755 tomcat

修改完JAVA_HOME和CATALINA_HOME环境变最后,将该脚本复制到/etc/rc.d/init.d目录下以便适应系统的需要,然后如本节前面显示的那样,使用chkconfig设置新的tomcat服务自 动启动和停止。

在Solaris上自动启动

如果您已通过Blasmave Solaris CSW包安装了Tomcat,那您就预先配置了开机自启的功 能,不需要做其他额外的事情就能实现开机自启。

如果没有安装,则您需要创建一个自己的简单init脚本,如以前的节中展示的Linux脚本 那样,该脚本能正常工作。将那一脚本保存到/etc/init.d/tomcat中并按如下方式设置其权限:

#chmod 755 /etc/init.d/tomcat
#chown root /etc/init.d/tomcat
#chgrp sys /etc/init.d/tomcat

通过象征性地将其链接到/etc/rc3.d目录下(以root用户的身份),设置新的tomcat服务 自动启动和停止。

#ln -s /etc/init.d/tomcat /etc/rc3.d/S63tomcat
#ln -s /etc/init.d/tomcat /etc/rc3.d/K37tomcat

数字S63和K37可能会视其他的启动脚本而有所差异;S编号控制了启动进程的顺序,而K 编号控制了关闭(杀死)进程的顺序,系统启动程序init最初调用了所有与etc/rc3.d/S*文件名相匹配的start参数,以作为系统正常启动的一部分,而start就是catalina.sh 的正确参数。在系统关闭时,init程序也会以stop为参数调用所有文件名/rc3.d/K*的脚本。


在Windows上自动启动

在Windows下,Tomcat可充当Windows服务。尽管您可以使用这一服务启动和关闭服务 器,但创建这一服务的最常见理由是确保每次开机后自动启动Tomcat。

直先要找到“服务”控制面板。在标准的Windows上,您需要访问几个菜单:“开始"→“程序”→“系统管理工具”→“服务"。另外,您也可以选择“开始”→“设罝"→“控制面板”,双击“系统管理工具”,然后再双击“服务”。您进入“服务”控 制面板,就能找到Apache Tomcat的服务条目(通常是以字母顺序排列),然后双击,如 图1-7所示。

图1.7:在Windows下自动启动

在Apache Tomcat属性对话框中,您应确信将启动类型设置为“自动”而不是“手动”, 这能使Tomcat每次开机后均能自动运行。


在Mac OS X上自动启动

像大多数其他操作系统一样,Mac OS X使用系统的init脚本允许您自动启动、停止和 重启服务(就像在Linux系统上使用/etc/rc.d/init.d或者在BSD上使用/etc/init.d一样)。在 Mac OS X Tiger (10.4)上, Apple已引入了叫做launchd的新型系统控制器(注。在如 何控制服务及谁拥有访问服务权限上,Launchd提供了更好的灵活性。它提供了一个非常 简单的所有权列表(property list, plist)配置文件,允许您设置运行哪些后台进程以及 怎祥访问后台进程。由干launchd期待如何响应后台进程与怎样进行Tomcat脚本 操作之间存在行为差异,所以笔者不得不创建一个使父进程退出或不会存在分歧的shell脚本,以解决这一难题。

下面创建tomcat.plist中使用的脚本,并将其存放到Tomcat二进制安装目录下(下面的 shell脚本和.plist文件都包含在本书的例子中):

$ vi /usr/local/bin/tomcat-launchd.sh
#!/bin/bash
#Shell脚本。在发起一个JVM进程却没有退出时,再发起一个进程。 
#这是与launchd正确交互的必要脚本。

function shutdown()
{
$CATALINA_HOME/bin/catalina.sh stop 
} 
export CATALINA HOHE=/usr/local/tomcat 
export TOMCAT_JVM_PID=/tmp/$$
.$CATALINA_HOHE/bin/catalira.sh start

#等待,直到接收到一个IhTomcat终止的佶号为止。 
trap shutdown HUP INT QUIT ABRT KILL ALRM TERM TSTP

wait 'cat $TOMCAT_JVM_PID'

紧接养,创建Tomcat的launchd所有权列表文件,使用您喜欢的文本编辑器并编辑tomcat.plist:

$ vi tomcat.plist
<?xml version-"1*0" encoding-"UTF-8* ?>
<!D0CTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN""http://www-apple.cow/ 
DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Disabled</key>
<*false/>
<key>EnvironmentVariables</key>
<dict>
<key>CATfrLIMA_H0KE</key><string>/usr/local/tomcat</string>
<key>JAVA_HOME</key><string> / System/Library/Frameworks/JavaVM. 
framework/Home</string>
</dict>
<key>Label</key><string>org. apache.tomcat</string>
<key>OnDemand</key><false/>
<key>ProgramArguments</key>
<array>
<stTing>/usr/local/tomcat/bin/tomcat-Launchd.sh</string>
</array>
<key>RunAtLoad</key><true/>
<key>ServiceDescription</key><string>Apache Tomcat</string> 
<key>StandardfcrrorPath</key><string>usr/local/tomcat/logs/launchd.stderr</
string>
<key>StandardOutPath</key><stririg>usr/local/totncat/logs/launchd.stdout</
string>
<key>UserMame</key><string>nobody</string>
</dict>
</plist>

既然有配置文件,就可以把它放在launchd可正确访问的位置。为了确保即使没有用户 登录该脚本也可被执行,需要把脚本放在中:

$ sudo cp tomcat.plist /Library/LaunchDaemons

Launchd的另一个要求是既需要root用户拥有后台进程和所有权列表,又需要该后台进程 可执行。假定您在这些文件上拥有正确的所有权与可执行标志:

$ chown root:wheel tomcat-launchd.sh 
$ chmod +x tomcat-launchd.sh
$ chown root:wheel /Library/LaunchDaemons/tomcat.plist

这一过程的最后--步是将脚本加载到launchd中:

$ sudo launchctl load /Library/ LaunchDaemons/tomcat, plist

可以通过运行下列命令确认已被加载:

$ sudo launchctl list
com.apple.dashbcard.advisory.fetch
com.apple.dnbobserverd
com.apple.KernelEventAgent
com.apple.mDNSResponder
com.apple.nibindd
com.apple.periodic-daily
con.apple.periodic-monthly
com.apple.periodic-weekly
com.apple.portmap
com.apple.syslogd
com.vix.cror
org.samba.nmbd
org.postfix.master
org.xinetd.xirctd
org.samba.smbd
org.apache.tomcat

如果因某种原因而未成功加载Tomcat请确定所有路径正确,同时具有文件正确授权且 可访问。


在FreeBSD自动启动

如果您安装了Tomcat 6的FreeBSD,那么本节就给您展示了开机启动及关机关PflTomcat 的标准配置方法 要将Tomcat作为开机启动及关机关闭的一部分,您需要将一个控制器脚本放在/usr/local/etc/rc.d/目录下。该控制器脚本文件名后缀必须是/usr/local/etc/rc.d/tomcat60.sh

Tomcat 6的FreeBSD端口包含可用于启动、停止和重启服务器的RCng脚本。该脚本是 /usr/local/etc/rc.d/tomcat60.sh。

确认您已在/etc/rc.conf文件中追加了下列行: tomcat60_erable="YES" 这条语句使Tomcat 6开机能够启动。一且您完成了这些操作并重启机器,则应能启动 Tomcat,同时在关机时也能顺利关闭Tomcat。

关注微信获取最新动态