为了学习Servlet,我决定安装tomcat(以前听说过)。
上网搜了一下tomcat的相关资料,找到一篇(Win2000下Tomcat+Apache+PHP+MySQL...指南)。暂时不准备安装PHP和MySQL,就按照指点下了Apache和tomcat。
资料上的tomcat是4.x,而最新的是5.x;同样apache也从1.3.x升到了2.0.x。不过还好,差别不甚大。
安装apache很简单,基本上就是按照安装的wizard指示一路ok下来就可以了,安装完了启动服务之后在浏览器看一下,http:/ /localhost可以了,就不用管他了。
下面是安装tomcat,我下载的是压缩版本,直接解压就可以了。start一下,从浏览器应该可以看到http:/ /localhost:8080的tomcat欢迎页面。
下面就是按照资料上说的,将tomcat和apache整合到一起(其实我也不是很清楚这么做到底有多好,只不过他说静态页面处理好,咱就照做呗)。按照作者的指点,去下了mod_jk。这中间有点曲折,希望大家不要跟我一样犯这种傻错误:我在tomcat下载页看到了jk1.2和jk2两个connector,当时就下来了,可是去找mod_jk却始终找不到。郁闷了好久,打开下载的jk2压缩包,却发现里面正是mod_jk*.dll。。。哈哈,笨的可以了。
然后按照资料所说,进行如下步骤:
1、复制mod_jk.dll到apache的相应目录(apache2.0.48是我用的版本,没有libexec目录,根据另外一篇文章,将它放到了modules目录下,那篇文章我忘记在哪了,google一下应该能找到)。
2、在Apache安装目录下的logs目录下,建立stderr.log、stdout.log和jk2.shm三个文件,以便jk2连接模块使用。这里的文件名可以随意取,不过需要修改相关配置文件中的内容,建议使用缺省名字。另外这一步其实并不太重要,可以忽略(我猜的)。
3、这一步和随后一步是关键步骤。在apache的conf目录下建立workers2.properties文件。文件的内容我另外给出。
4、在tomcat的conf目录下有jk2.properties文件(tomcat 5.x版本原来就有,老版本的不知有无?没有的可以自己建立),文件内容我也会单独列出来。
5、编辑apache的conf目录下的httpd.conf配置文件,在LoadModule区块的最前面加上这一行:LoadModule jk2_module modules/mod_jk2.dll。这里的mod_jk2.dll是我从jk2压缩包中解压的文件改的名字,我使用的jk2压缩包名为:jakarta-tomcat-connectors-jk2.0.2-win32-apache2.0.43.zip。可以看到,文件放在modules目录下。这里需要注意的一点是,与资料中的不同,jk2的导出函数发生了变化,从jk_module变为jk2_module,这点通过查看mod_jk2.dll的导出函数表就可以知道。所以这一行与资料中的不同。
6、关闭tomcat服务,重新启动apache。如果一切顺利,那么在浏览器中http:/ /localhost:8080将仍能看到tomcat欢迎页面,表明成功。
如果启动Apache服务时弹出失败提示,说明配置文件中有错误,通过命令行Apache -S可以查看解析配置文件的过程,定位错误所在。
如果启动正常(可以看到apache欢迎页面),但无法访问tomcat,则可以查看logs/error.log文件查看apache启动时的问题记录,通常可以知道问题发生在哪一步。
安装时的一些注意事项:
1、在安装tomcat之前需要安装jdk,我安装的是j2se 1.4。最好把路径设置好,主要是JAVA_HOME、TOMCAT_HOME,而很重要的却容易遗漏的是CLASSPATH。在windows下,这些都是环境变量,可以通过桌面上“我的电脑”右键打开属性,选择“高级”页面中的“环境变量”来定义、编辑。
2、TomCat的管理:tomcat安装好之后访问tomcat欢迎页面,之后可以访问status、jsp example、servlet example等内容,不过访问这些内容是需要登陆并拥有相应权限的。tomcat的权限是通过用户所属的role控制的。用户配置文件是tomcat安装目录的conf目录中的tomcat-uses.xml文件。缺省的三个用户都不具有admin和manager权限,这样它们无权访问status(example我忘记能不能访问了:P)。解决办法很简单,修改tomcat-uses.xml文件,添加下面两行
<role rolename="manager"/>
<role rolename="admin"/>
增加了两个系统管理的role,然后添加或者修改用户,使他们拥有这两个role的权限即可。
3、最常碰到的(我遇见的)问题可能是通过mod_jk启动tomcat时,发生NoClassDefFound错误,在error.log中可以看到,通常是说找不到org/apache/jk/apr/TomcatStarter之类的。这是由于路径设置不正确导致找不到相应的类定义造成的,也就是classpath的问题,在我给出的配置文件里面有讲。
4、碰到问题不要急,到网上搜一下,一般你所遇到的问题也有别人遇到过而且多半有人给出解决方法了。
遗留问题:
Apache的配置我还是不太清楚,它所设定的域名始终没用,只能通过localhost或者ip访问,我想是我对域名解析太不了解的缘故吧,望有高人指点,呵呵。