需求需要这样的一个web服务器:既能处理jsp,php,asp,cgi等多种脚本页面,同时要具有集群、负载均衡等功能。其次,现在一个公网ip地址非常宝贵,往往需要在一个ip地址上提供多个站点服务。
为此,有必要将asp,jsp,php 等整合在同一个web服务器中,并实现more web per IP功能。我之前只用过IIs 和tomcat,对其他的最多只是了解而不熟悉,更谈不上用过。突然面对这样一个需求,不知道从何下手。在师傅的指导和百度了N下之后,决定采用apache+tomcat+iasp+php来整合实现。
这里我主要介绍下tomcat与apache的整合,因为在这一块上,花了我很长时间。从查看百度和其他一些论坛上的文章,然后照例自己动手修改、测试,到从头阅读apache官方文档,然后再修改、再测试,一工花了我整整四个工作日。四天就那样一直无聊地修该、测试,测试、修改,再测试、再修改... 还好最终成功了,否则我要疯了。
回头来看,其实很简单,关键是博客、论坛里面的文章不权威,有的实例确实可能正确,但是不知道他们为什么要那么做,而为什么不这么做,还有些文章则完全就是为了资源而分东拼西凑忽悠人。受骗之后决定去从头阅读官方英文文档,然后再做测试,这才是对我测试成功的最大帮助。
现在开始重点。tomcat与apache整合,实现负载均衡、tomcat集群功能的必要性:tomcat主要是为Java而写,它能处理JSP以及servlet,但是它在处理静态页面、.jpg,.gif等静态文件上却永不如apache。如果把所有web元素都抛给tomcat来处理,当数据量庞大的时候,tomcat就会显得迟钝,僵死。整合后,可以让tomcat来处理jsp文件,其他的静态文静则由apache来处理。对于访问量很大的网站,一个tomcat已经不能承担,它需要多个tomcat来协助处理数据,即需要负载均衡、tomcat集群。而tomcat集群还有个好处是当你与之初建立起会话的tomcat失去链接或者是该故障tomcat死机之后,你的业务会平稳地飘到集群中其他的tomcat上去执行,而不会丢失数据。
下面将是详细的配置,先是一步步地完成 apache+tomcat整合,负载均衡、tomcat集群功能,然后在给出了一个我测试成功的综合实例。这既是我自己忙了几天后的总结,贴出来也是跟大家分享,希望对需要的人有点帮助。 其次,通过这之后,我觉得也建议大家看东西最好还是先看官方文档,那才是最全面,最权威的东西,其他都是浮云。
万能WEB服务器整合笔记
一环境:
Windows 7/windows server 2008
Jdk(java_ee_sdk-6u1-jdk-windows.exe)
Tomcat(apache tomcat6.0.18.ZIP)(免安装包,只需配置环境变量)
Apache(httpd-2.2.17-win32-x86-no_ssl.msi)
Jk(mod_jk-1.2.31-httpd-2.2.3.so)(同时下载相同jk版本的source文件)
Jk的源文件(tomcat-connectors-1.2.31-src.zip)
二首要工作
1. 安装JDK,并配置环境变量(path= %java_home%/bin;%java_home%/jre/bin; classpath=%java_home%/lib/dt.jar; %java_home%/lib/tools.jar)
2. 安装tomcat。解压apache tomcat6.0.18.ZIP 到安装目录,配置环境变量(classpath= %tomcat_home%/bin;)
3. 安装apache
安装完后分别测试,确保tomcat、apache都能正常运行。
三 JSP的整合
一 tomcat+jk+apache 整合
(以我的安装目录为例来讲。Apache:D:/Apache2.2 Tomcat:D:/apache-tomcat-6.0.18)
步骤:
1. 分别解压jk的安装包和资源包,将安装包下的xxx.so文件重命名为mod_jd.so并复制到D:/Apache2.2/manual文件夹中。将资源包下面conf文件夹下面的httpd-jk.conf、worker.properties文件复制到D:/Apache2.2/conf文件夹中。
2. 打开D:/Apache2.2/conf 目录下的apache配置文件httpd.conf,在文件中找到Include conf/extra/httpd-vhosts.conf 代码,并将其前面的注释去掉(去掉#)。
3. 打开D:/Apache2.2/conf/extra目录下的httpd-vhosts.conf文件,在文件中找到NameVirtualHost *:80代码,然后在其上面一行添加代码:Include conf/httpd-jk.conf(既把这个文件加载进去)。再在该文件的最后添加一个VirtualHost ,代码如下:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.storm.com #可以随便写
DocumentRoot "C:/www/zcglxt" #工程目录
ServerName www.zcglxt.com #访问站点的域名
ServerAlias 172.31.10.168 #域名别名
ErrorLog "logs/dummy-host2.storm.com-error.log" #日志文件
CustomLog "logs/dummy-host2.storm.com-access.log" common #日志文件
# All requests go to tomcat1 by default
JkMount /* tomcat1 #tomcat1是随后workers.properties文件中的一实例
# JkMount /* tomcat1 表示把所有请求都抛给tomcat1处理
# Serve html, jpg and gif using httpd
JkUnMount /*.html tomcat1
# JkUnMount /*.html表示所有的.html都不抛给tomcat1,由Apache自己处理。
JkUnMount /*.jpg tomcat1
JkUnMount /*.gif tomcat1
<Directory "C:/www/zcglxt">