一、准备
Apache做为最流行的Web服务器功能强大,高效,但并不支持JSP及servlet;Tomcat本身可以做为Web Server, 但是当处理静态页面时,Tomcat不如Apache迅速,不象Apache一样可配置,强壮。所以,通常的做法是把它们整合起来,让Apache处理静态页面,而把动态页面的请求交给Tomcat处理,发挥各自的优势。通过在Apache中加载整合模块和进行设置,Apache就能够根据URL,把不属于自己的请求转给Tomcat。
要让Apache和Tomcat联合工作,还必需有一个连接器把它们联系起来。连接器(Connector)对于性能、配置的方便性有很重要的影响,目前大致上有JK1.x,JK2,mod_webapp三种connector可以使用。JK使用比较广泛;JK2是JK1.x的改进,比较新,有的版本不太稳定。我
Apache、Tomcat和Tomcat-Connector均可从http://archive.apache.org/dist免费下载。
另外,安装Tomcat之前必须安装JDK或JRE。
我的OS是win2003,安装的版本分别是J2sdk_1.4.2_04、Tomcat_5.0.19、Apache_2.0.47、mod_jk_1.2.5_2.0.47。
二、安装和配置
1. 安装J2sdk_1.4.2_04、tomcat_5.0.19、apache_2.0.47,并设置相应的环境变量;
2. 把连接器mod_jk_1.2.5_2.0.47.dll拷贝到D:/Apache/modules/下;
3. 打开d:/Apache/conf下的httpd.conf:
<1> 查找"DirectoryIndex"指令行,在index.html后添加index.jsp
<2> 查找"AddDefaultCharset"指令行,把其中的ISO-8859-1改为GB2312或UTF-8
<3> 在"### Section 3: Virtual Hosts"之前添加:
LoadModule jk_module modules/mod_jk_1.2.5_2.0.47.dll
JkWorkersFile "D:/Tomcat/conf/workers.properties"
JkLogFile "D:/Tomcat/logs/mod_jk2.log"
#指定需要转交给Tomcat处理的访问请求
JkMount /servlet/* ajp13
JkMount /manager/* ajp13
JkMount /manager ajp13
JkMount /admin/* ajp13
JkMount /admin ajp13
JkMount /balancer/* ajp13
JkMount /balancer ajp13
JkMount /*.jsp ajp13
提示:若要想恢复httpd.conf中最初默认的配置,只需把httpd.default.conf文件的全部内容拷贝到httpd.conf即可。
4. 在d:/Tomcat/conf下新建一个workers.properties文件 .内容如下:
#####--begin--########
workers.tomcat_home=d:/Tomcat #让mod_jk模块知道Tomcat
workers.java_home=d:/jdk1.4.2 #让mod_jk模块知道j2sdk
ps=/
worker.list=ajp13 #mod_jk模块工作时使用的协议版本
worker.ajp13.port=8009 #所要访问的端口(与第5步中tomcat要加载的JK模块的监听端口一致)
worker.ajp13.host=localhost #所要连接的主机名
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数
######---end---#######
5. 令tomcat在启动时加载JK模块。如果tomcat里面的server.xml已经包含着AJP1.3项,不用修改,否则需添加:
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
6. 设置虚拟主机
将d:/Apache/conf下的httpd.conf中相应部分修改如下
<VirtualHost localhost>
ServerAdmin okjohn@sohu.com
DocumentRoot "D:/Tomcat/webapps/ROOT"
ServerName localhost
ErrorLog logs/robornet_home_log.txt
CustomLog logs/robornet_Custom_log.txt common
#定义webapps下的子目录的别名(访问路径)
Alias /jsp-examples "d:/Tomcat/webapps/jsp-examples"
Alias /servlets-examples "d:/Tomcat/webapps/servlets-examples"
Alias /tomcat-docs "d:/Tomcat/webapps/tomcat-docs"
Alias /webdav "d:/Tomcat/webapps/webdav"
</VirtualHost>
7. 重新启动Tomcat和Apache。如果有必要,先重启计算机。
三、项目配置
在以上的配置中,把JSP文件存于d:/Tomcat/webapps/ROOT/目录下、类文件存于d:/Tomcat/webapps/ROOT/WEB-INF/classes/ 目录下就可以访问了,如果"d:/project1"为项目的根目录(java类或javabean的类文件存放在d:/project1/WEB-INF/classes/目录下),为调试方便也可以把虚拟主机和虚拟路径设到该目录下。操作为:
1. 将d:/Apache/conf下的httpd.conf中相应部分修改如下(此时虚拟目录为d:/project1):
<VirtualHost localhost> #localhost为本机,也可用本机ip,如:192.168.0.3
ServerAdmin okjohn@sohu.com #管理员的mail地址
DocumentRoot "d:/" #项目组根目录(项目的上级目录)d:/
ServerName localhost #服务名,也可设为192.168.0.3,若本机器有域名,设为域名
ErrorLog logs/robornet_home_log.txt #错误日志
CustomLog logs/robornet_Custom_log.txt common #访问日志
</VirtualHost>
2. 然后设置Tomcat以支持该项目。打开d:/Tomcat/conf/server.xml文件,在"</Host>"之前,"</Context>"之后添加:
<Context path="/project1" docBase="d:/project1" debug="0" reloadable="true" crossContext="true"/>
* 注意:path的取值要与项目的名称一致(尽管tomcat无此要求,但是为了apache能够知道该路径,path应为服务器上的目录名),否则,需要在上一步的虚拟主机定义中把该路径定义为别名,使其等价于对应的服务器目录的绝对路径。
3. 重新启动Tomcat和Apache。如果有必要,先重启计算机。