自动启动
一旦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。